俺が考えた最強の書き込み基板 LazuliWriter を作った

この記事はマイクロマウス Advent Calendar 2024 の 17 日目の記事です。
昨日の記事は Kazuki.Iida  さんの [スパルタンレースに参加した話] だそうです。
体力を付けることは何をするにも大事な事だとは思いますが、アドベントカレンダーを書く体力は残しておいて欲しかったです。更新を楽しみにしています。

まえがき

マイクロマウスは本当に大変な競技です。
何が大変かというと、まずハードを設計するのが大変、ハードを組み立てて微妙な不具合をどうにかするのも大変、デバイスを動かすソフトウェアを書くだけでも大変、思い通りに制御するのがもう大変、持ち運ぶケースを作るのが大変、大会に行かなきゃいけないのが大変、朝起きないといけないのが大変、無事に家まで帰るのが大変……
マウスを作って大会に出るだけでも大変な要素がありますが、実はそれだけではありません。

マウス以外のことを作りこみたくなってしまうことが大変

今回は、新作マウスをほったらかしにして作った書き込み基板のご紹介をしようと思います。

  • TL;DR
    • デバッガと2セル充電とUART変換ICとマイコンを載せた最強の書き込み基板を作った

やりたかったこと

マイクロマウスの書き込み他をスムーズに行うためには、実は多くの機能が必要なのです。

  • FW を書き込む
  • ソフトウェアのデバッグを行う
  • ログを受信する
  • バッテリーを充電する
  • 多セルマウスの場合バランサー搭載

他には、自分はこういう機能も欲しています。

  • マウスの電源を ON/OFF する
  • バッテリーの電圧を測定する

まずはじめは既製品でどうにかする方法を考えたいところですが、
市販のデバッガに LiPo の充電機能が備わっている物は無いため基板の自作が必須でした。

市販のデバッガ:STLINK-V3SET  とか J-Link EDU Mini  とか

一方で基板を自作した場合、今度はデバッガの搭載が難しいのではと考え始めました。
市販のデバッガと、自作充電基板と、それらを接続する専用のケーブルと……ごちゃごちゃしてきたのでこれも嫌。

そんな中見つけたのが、オープンソースのデバッガ FW である、DAPLink  です。
つまり、俺の欲しい機能を全部載せた基板を作り、そこにデバッガの FW を書き込めばやりたかったことが全部実現できる……!!

というわけでここから作ったものの紹介をしていきます。

つくったもの

つくったものの名前は「LazuliWriter
完成品はこちらです。

全景

全てを接続した姿
IMG_20241216_223310726_MF_PORTRAIT.jpg

単品の姿
IMG_20241216_222915723_MF_PORTRAIT.jpg

取り回しのしやすい (?) 正方形の 5cm 角です。
USB コネクタは Type-C、実装されているマイコンの書き込みには、STLINK-V3MINIE  が直接刺さるようになっています。

載っている部品はこんな感じ。

2024-12-16_23h42_35.png

構成図・回路図

ブロック図と電源構成はこのようになっています。

lazuli-writer_ブロック図.png

電源は全て Type-C からの 5V 500mA でまかないます。
2セルの充電用に 9V まで昇圧、それ以外の動作用に 3.0V を作っています。

回路図もぺたり。

lazuli-writer_circuit.png

設計情報

一応細かな設計情報にも触れてみます。
タイトルの後ろに書いているのは回路図中のリファレンス番号です。

USB ハイサイドスイッチ:U1

破損した基板を PC に接続して USB ポートを壊すのは嫌なので、電流制限用にハイサイドスイッチを実装しています。
使いやすそうだったのはこのあたりの部品。
R5520H001B 

ESD 対策用 TVS:D1

どこまで効果があるかは分かりませんが、手でよく触りそうで壊れそうな箇所として、Type-C コネクタの信号線部分に ESD 対策を施しています。
評価のしようが無いので、ここは適当な部品を。
STS232050UL40 

2セル用充電 IC:U4

軽く調べた限り、2セル であれば Microchip の IC が一番手軽に使えそうでした。
外付けで必要なのは FET、充電電流調整用の高精度抵抗、ダイオードくらいです。
MCP73844 

セルバランサー:U5

LiPo はセル間の電圧バランスが崩れた状態で充電をすると、片方のセルが過電圧となり最悪発火の恐れがあります。
そのため、多セルの充電時にはセル間の電圧バランスを整えてくれるセルバランサーが必須となります。
放電時にはその危険性は無いと思うので、LazuliWriter では充電回路の横にセルバランサーを実装し、マウスやバッテリー側からはセルバランサーを排除しています。

こちらも手軽に使えそうだった IC を選定しています。
BQ29209 

DAPLink:U7

DAPLink  の FW を書き込める回路を作ります。
ドキュメントを見ると、このように書かれています。

Compatibility

There are many ARM microcontroller-based Hardware Interface Circuits (HICs) that DAPLink interface firmware runs on. These can be found as standalone boards (debugger) or as part of a development kit. Some branded circuits that are known to be IO compatible are:

(中略)

STMicroelectronics ST-LINK/V2 (on NUCLEO boards) based on STM32F103CB

聞き覚えのある名前ですね。
そう、ST-LINK/V2 が付いているタイプの NUCLEO 評価ボードと同じ回路を作れば DAPLink が動作するようです。
NUCLEO は回路図が公開されているため、そっくりそのまま同じ回路を引きました。

FW の書き込みについては、公式リポジトリの DEVELOPERS-GUIDE.md BUILD_OUTPUT.md USERS-GUIDE.md  を参考に手元で DAPLink をビルドして、Bootloader と Firmware を書き込めば完了です。

どうだったか

作って使って最高でした

IMG_20241216_223416672.jpg

あとがき

最強の書き込み基板を作れて満足しました。
一度多セルの充電回路を作ってしまえば、3セルになったとしても拡張は容易なので嬉しいですね。

明日のマイクロマウスアドベントカレンダーは、Tanaport  さんの 今年の振り返りと来年のマウス合宿について少し(予定) だそうです。
自分は来年こそマウスに力を入れるため、マウス合宿に参加予定です。記事の更新も楽しみにしています!