読者です 読者をやめる 読者になる 読者になる

指から文字がどんどん出てくる:5日目

さて、しばらく日が空いてしまいましたが、ようやく光通信でプログラムを更新できるようになりました。

クレードル


こんな感じで、書き込みはarduinoに制御させてます。ちなみに二枚目の写真に写ってる指輪は、デバッグ用のために同じ回路でISPコネクタを付けて作ったものです。発電用のフォトダイオードの数に余裕が無いので電源はケーブルから供給してます。


こんな感じでクレードル(XFR1P)と指輪(XFR1)の間は

  • 外側:青色光: 給電
  • 内側:赤色光: リセット
  • 側面:赤外線: 通信(half-duplex)

という三種類の光でリンクが張られます。青と赤の選択には特に意味はありません


こんな感じで内側が赤く光ると、リセットピンにぶら下げてあるフォトトランジスタによってassertされます。XFR1のブートローダは、リセット後に赤外線が出ていればデバッグモードに入り、そうでなければ通常モードでユーザプログラムを実行します。

そして、デバッグモードに入ったXFR1は適当に通信してflashを書き換えたり・電圧を取得したりできるようになります。avr/boot.hを使うと便利です。

一方、PC側ではpythonのコードが走ってintel hex形式のバイナリをページ単位に区切って転送したり、ベリファイしたりします。まぁ普通のライタと同じですね。

ちなみにソースコードgithubに移した( https://github.com/xanxys/XFR1 )ので、気になる人は見てみると良いかと思います。

組立

さて、これまではケミカルウッドを削り出したものに部品を接着して配線していたのですが、後から配線を傷つけずに見た目を整えるのが難しいという問題がありました。また、内側がアクセスしにくいというのも問題です。

何らかのモジュールに分解して、電気的・構造的接続は簡単にできる、というのが理想的です。普通に設計するなら、電気的な部分と構造的な部分を分離して、フレキシブル基板をリング状の構造材で挟むような構成になるでしょうが、なかなか大変です(時間と金的な意味で)。

ということで、1cm角ぐらいのモジュールいくつかにそれぞれ部品を封入してしまって、端子をはんだ付けすることで全体の構造をつくり、問題なければ接合部をさらに封入、という手順でいこうかと思います。