どうも、NABEです。

この記事はMice Advent Calender 2019の25日目の記事です。
昨日のアドベントカレンダーはCoffeinTapさんの「まだストロングゼロを普通に飲んで消耗してるの?」でした。
料理に使うのは難しそうですね...
チューハイなので、他の酒と混ぜてカクテルとかどうでしょうか?
今年もお疲れ様でした。


おまたせしました!
とっても久しぶりにマイクロマウスの技術ネタを書きます。















近況報告

ブログ更新は一年ぶりです。
おまけにツイッターもほとんどやらなくなりました。

でも、この一年間で社会人サークル作ったり、マイクロマウスで初完走できたので、
割と充実してたと思ってます。
実はクラシックマウスで完走したことは過去にありましたが、マイクロマウスでは初でした。

ここまで、サークルの初心者マウサー達はハードがほとんどできてきて、ソフトを頑張れば来年には出場できそうな感じに仕上がってます。
来年が楽しみ


この一年間で意識してきたこと。


マイクロマウス開発に最も大切なのは技術でもなく経験でもなく「モチベーション」の維持。

如何に仲間や知り合いを作ってモチベーションを互いに影響させ・維持するかが肝だと思っております。定期的に集まったりして技術的な交流、一緒に開発を進める機会を作ってきました。
結果としては割と維持てきていたのかなと思います。




しかし、もう一つ問題が。




社会人の永遠の課題として、時間が足りない。

モチベーションがあっても時間は必要。
これについてはできる人ならMBD開発やシミュレーターで、なるべく実機を使わずに開発を手掛けようとする方々も多いのでは?

でも、マイクロマウス初心者にとっては、まずは安定して大会に出せるマウスが欲しいところ。

今年は少し違ったアプローチでこの問題を解決すべく、取り組んできました。











さて、本題に行く前に、
アドベントカレンダー記事の投票ありがとうございました。
票が割れたのが意外なのと、ディスプレイが不人気....
ディスプレイ推進委員会でも誰かやりませんか。。。




結果として、今年やったほとんどの成果物を集約したものが選ばれてしまいました。。。

まだ要素の説明もしてないのに!
また、やりたいことが出来ているかというと、まだ出来てません。

ということで、今回は概要的な内容となってしまうことお許しください。










本題


『スタンドアロンなデバッグシステム』について。

今までの(時間がとれない社会人の)マウス開発には種々の問題がありました(経験論)。

1, 書き込みケーブルが壊れたり接触不良でうまく書き込めない。作り直し!!
2, シミュレータ作っても走行パラメータを微調整する毎に書き込む。時間がかかる。
3, 大会会場に重いパソコンを持っていきたくない。面倒くさい。

(他に初心者に大事なこととして、走行中のログをたくさん取りたい、デバッグしやすいマウスを作りたいという背景がありましたが、本題からそれるのでここでは省略します。)

どうしたいかというと、

1, パソコンからの書き込みは最小限に。
2, パソコンから書き込みなしで各種パラメータをチューニングしたい。
3, パソコンなしでもある程度のプログラム変更が可能。

⇒最終的にはパソコンから初回のみ書き込み

要するに『実機のみでデバッグできる環境を整えたい』ということが目的となります。

アナログチックな発想ですが、結局はパラメータを実機で調整することもしばしばあるかと思うので、より少ない時間で手っ取り早く走れるマウスを作るための一つの手段ではないかと思います。












実現手段

3つの目的について、どう実現するかを考える。

1, パソコンからの書き込みは最小限に。
→各種パラメータの保管先を不揮発メモリに。
2, パソコンから書き込みなしで各種パラメータをチューニングしたい。
→スイッチなど、UIを充実。
3, パソコンなしでもある程度のプログラム変更が可能。
→ディスプレイを搭載し、可視化。関数の呼び出し順序を変更可能とするなど。


■用意したもの

・128×32ドット小型ディスプレイ(↓16文字×4行出力できてIIC通信4線で済むので、おすすめ。便利だったので詳細は別途、1月頃に記事にしたいと思います。ネットで使い方を記事にしている人もいます。)


・マイクロSDカード&カードスロット(別途、不揮発メモリでも代用可)
・プッシュスイッチ(走行用エンコーダ、ジャイロセンサ、加速度センサでも代用可)


※フラッシュROMを積んでいるマイコンを使うorやりたいことによっては、大容量メモリなくてもできます。




■方法

1, 現在のソースコードのパラメータをすべて構造体と共用体でブロックとして保持(ブロックごと不揮発メモリに一度に書けるようにするため)。

2, 設定メニューとして、各パラメータをディスプレイに表示、変更できるようにする。

3,外部メモリの不揮発領域とマイコンのRAMとでデータを移動できるようにする。





ということで、スタンドアロンなデバッグ環境の出来上がり!!
(最後の方、雑になった)

といいつつ、まだそこまで出来てないので、出来たらブログ追記します。









冒頭でお話しした他のアドベントカレンダー候補の記事についても少しずつ書いていければと考えてます。



ご精読ありがとうございました。
来年もマイクロマウス大会でお会いできればと思います!

良いお年を。