[TAC:05] USBハブを自作したりして専用基板を作った

はじめに

この記事はtaniho Advent Calendar 2017の5日目の記事です.

今日は「鵤」専用の書き込み兼充電兼インターフェース基板である「メジロ」を紹介します.載っている書き込み回路と充電回路は,前回と前々回のブログを見てください.今回の記事では,メジロちゃんのインターフェース機能について紹介します.

メジロちゃん

これがメジロちゃんです.

メジロちゃん

機能

これがメジロちゃんの全機能です.

  • マイコン内蔵
  • uOLED液晶搭載
  • USB-UART変換 x2
  • LiPo1セル充電 x3
  • 鵤の電源制御
  • 鵤のモード制御

2つのマイコンを使う

メジロちゃんと鵤くんをつなげた状態でパソコンに接続すると,USB1ポートにマイコンが2個繋がった状態になっています.

つながる頭

そして,メジロちゃんと鵤くんと同時に通信をしたいということがあり,頭の悪い僕はUSBハブを内蔵させてしまいました.

USB2422 - USB - USB Hubs

メジロちゃんを接続すると,パソコンから2つのポートとして認識されます.このおかげで,「メジロちゃんから鵤くん電源ON→鵤くん書き込み→鵤くん電源OFF」という一連の作業を楽に行えるようになりました.

電源制御・モード制御

メジロちゃんに載っているマイコンが,鵤くんの電源用FETのゲート端子に接続されています.回路図はこんな感じです.

メジロちゃん側のコネクタ周辺

鵤くん側のコネクタ周辺

メジロちゃんをパソコンに接続し,シリアルでメジロちゃんに信号を送ることで,鵤くんの電源をON/OFFすることが出来ます.

鵤くんのモード制御も同様に,メジロちゃんから書き込みモードと実行モードを変更できるようにしています.

鵤くん書き込みのコマンドはこんな感じです.アルファベット1文字をメジロちゃんへの命令にして,鵤くんを制御しています.

  • d: Power Off
  • u: Power On
  • w: Write Mode
  • r: Run Mode
1
2
3
4
5
6
7
8
echo d > /dev/serial/by-id/usb-FTDI_FT230X_Basic_UART_MEJIRO01-if00-port0
echo w > /dev/serial/by-id/usb-FTDI_FT230X_Basic_UART_MEJIRO01-if00-port0
sleep 0.1
echo u > /dev/serial/by-id/usb-FTDI_FT230X_Basic_UART_MEJIRO01-if00-port0
sleep 0.3
stm32flash -b 230400 -w build/Ikaru.hex /dev/serial/by-id/usb-FTDI_FT230X_Basic_UART_MEJIRO02-if00-port0 -e 80
echo d > /dev/serial/by-id/usb-FTDI_FT230X_Basic_UART_MEJIRO01-if00-port0
echo r > /dev/serial/by-id/usb-FTDI_FT230X_Basic_UART_MEJIRO01-if00-port0

実際の使い勝手は最高です.次のコマンドを打つだけで,鵤くんの電源をONにして書き込み,電源をOFFにしてくれます.

1
make flash

uOLED液晶

昔使用したuOLEDをメジロちゃんに転用しました.

4D Systems | uOLED-96-G2

このuOLED,少し高いですが使い勝手が良いのでおすすめです.(ただしマウスに載せると壊れる可能性があるのでやめましょう)

鵤くんのLiPoから電源を供給して,uOLEDが動くようにしています.しかし,鵤くんのLiPoの容量が50mAhしか無いので,未だに使っていません.次回作では活用しようと思います.

まとめ

ということで,鵤くんのサポートをするメジロくんの話でした.

明日からのtaniho Advent Calendar 2017はマイクロマウスから離れ,今年製作した作品(?)の紹介を何回かに分けてしようと思っています.