はじめに
猫型おしゃべりロボット「ミーア」は、ESP32 Wi-Fi Bluetooth モジュールを利用した自作基板で開発している。
今回は、ESP32の開発ボードを用いた初期開発から、自作基板を作成し製品用に何回か変更を繰り返した経緯を備忘録的にまとめておく。
開発ボードから自作基板まで10回程度発注
自作基板に関しては、以前、イヤホン型脳波デバイスを開発していた時にも少しだけ携わったことがあったが、本格的な基板開発は初めてだったのと、脳波の時と求められる要件が異なったので、0からアナログ電子回路を勉強しながら開発することに。
開発ボードから製品になるまでの自作基板の試行錯誤を10回以上繰り返した。手元に各基板が残っていたので添付。
順に見ていきたいと思う。
①ブレッドボード付きの開発ボードで開発(2023/3/9)
ESP32について、まず勉強しないといけないと思い、ESP32スターターキットをAmazonで購入。ESP32-WROVER-E開発ボード(4MB)かつ、ブレッドボード付きという初心者向けのキット。
Lチカ、モーター制御、LCDディスプレイなど基本的なチュートリアルもついていたので、チュートリアルのコードを写経しながら勉強した。
ただ、Flashメモリが4MBしかなく、音声ファイルや目の画像ファイルなどを入れると、すぐに4MBをオーバーしてしまったので、メモリを増設したいと思うようになる。
②ESP32-DevKitS+ESP32-WROOM-32E 16MB(2023/4/16)
秋葉原の秋月商店に、スプリングピンを介して、はんだ付け無しでESP32モジュールを載せる事が可能な開発ボード「ESP32-DevKitS」があることを知り、購入。
https://akizukidenshi.com/catalog/g/g117380/
さらに、秋月にWi-Fiモジュール ESP32-WROOM-32E 16MBもあったので、Flashメモリを16MBに増設した。
https://akizukidenshi.com/catalog/g/g115675/
これで、開発は困らなくなったものの、この開発ボードはUSBコネクタがMicro USBであり、USB Type-C給電に切り替えたいと思うようになる。
また、この時にプログラムをArduinoからPlatformIOに切り替えた。
③USB-TypeCの市販の開発ボードを購入(2023/8/10)
USB-Type C給電に対応したESP32の開発ボードを購入。しかし、ここで問題が発生する。
動くはずと思ったコードが、なぜか動かない。商品レビューを見ると、正常動作しましたとコメントが多いのだが、なぜか動かなかったので、別タイプも購入したが動かなかった。
おそらくは、USB-typeCコネクタのCCピンを、5.1kΩの抵抗を介してGND接続していなかったからなのではと推測しているが、ここで始めて自作基板を作成しないといけないと思うようになる。。
④⑤初めての自作基板開発にトライ(2023/8/12)
というわけで、USB-TypeC給電の自作基板開発に初めてトライ。
EasyEDAで下記のように回路を作成し、JLCPCBで発注した。ちなみに、発注後に表面実装(SMT)も依頼する際に、デフォルトの5枚ではなく2枚と記入してコストを抑えられることを知った。
届いた基板が下図の左。実はこれは回路ミスで動かなかった。
- 基板両側のピンヘッダーをPCBレイアウトで指定しなかったために、自分で右のようにハンダづけしなければいけなかった
- USB-UART変換ドライバーの回路を間違えていた。ESP32のRx(Receiver)をCH340CのTx(Transmitter)、TxをRxに繋がないといけないのに、逆に接続していた。
- ENと3V3の配線も間違えていた。
- 降圧レギュレーターとしてAMS1117-3.3、USBシリアル変換チップとしてCH340Cを使用。
⑥初めての動く自作基板完成!(2023/9/17)
その後も回路ミスが続き、3回目にしてようやく初めての自作基板が完成した!
何度か失敗を繰り返していたので、喜びもひとしおだった様子がtweetに滲み出ている。
ただ、現状だと、スピーカーや目のLCDディスプレイなどの部品との配線をジャンパー線で行わなければならず、図のようにカオス極まりない状態。なので、次は配線をなくしていくように基板を改良していった。
⑦⑧⑨スピーカーを統合(2023/9/27)
この頃からEasyEDAでの回路図作成にも慣れてきて、機能ごとに枠で囲ったりと、見やすい表記にでき始めた。
ただ、ここでもクラスDアンプ(MAX98357A)との配線でミスがあり2,3回再発注する羽目にorz
部品との結合箇所も増えたので、自然と基板が大きくなった。最初は正常動作することを第一優先に、抵抗やコンデンサ、そのほかの部品間はできるだけゆとりを持って配置。
その後、正常動作を確認したら同じ機能のまま基板を小さくしていった。
この時点で、下図のように基板と部品を配線なしで直接結合できるようになり、ジャンパー線のカオス状態から一歩進んだ。
⑩ESP32書き込み分離に苦戦(2023/11/28)
それまでは、ESP32 Wi-Fiモジュールへのプログラミングコード書き込み部分も含めて作成していたが、実際に製品出荷するときはできるだけコストを抑えたいので、コード書き込み機能の分離を試みることに。
単に分離するだけだから、簡単だろうとタカを括っていたら、想像以上に大変だった。書き込み分離に苦戦した様子は、以下3記事にわたって記載。
最終的には、無事書き込み基盤(左側)とそれ以外(右側)に分離できた。
回路図は、それぞれ下記。
⑪リポ充電・両面基板に対応(2023/12/17)
おおかた完成に近づいてきたが、
- USB Type-C給電だけではなくリポ充電にも対応して、持ち運べるようにする
- 底面に対して垂直配置に切り替えるために、両面基板にして、電源やスピーカーなどを基板背面に移動させること
- 電源を押しボタン式(ラッチングスイッチ)に変更
などが、さらに必要であり、対応していった。
リポ充電に対応に関する記事。ここも大きな回路変更になるので、また回路ミスが出るのではと思ったが、しっかりデータシートを読み込んで事前調査できた結果、リポ対応に関しては1回で成功できたのはとても良かった。
USB給電からリポ充電に切り替える際にPMOSFETを使用する必要があり、基礎理解が足りてないと感じたので、このタイミングで半導体の基礎から学習し直すことにした。
電源回路にラッチングスイッチを取り付け
両面基盤対応
最終的には、こちらの回路図になった。
基板はこちら。
AirPodのケースと同じくらいのサイズであり、だいぶ小型化できたように思う。ミーアちゃんも、初期の大きくて、若干ホラーな感じのデザインから、だいぶ小さくなり可愛くなった。
振り返ってみて
本格的に自作基板開発(2023年8月)を始めてから、製品版にまで持っていくのに(2023年12月17日)、丸5ヶ月くらいかかってしまった。
ESP32のアナログ電子回路が初めてだったので、スピード感的には仕方なかったかなと思うが、もう少し回路ミスを減らして、開発期間も短縮できたようにも思う。
あとは、これは功罪あるが、JLCPCBが安くて(1回あたり表面実装込で15,000円ほど)かつ早い(発注から基板届くまで7-10日)ので、多少の回路ミスがあっても一旦発注しちゃえ!というマインドになってしまい、作成した回路がしっかり動くかどうか事前に検証するのが甘くなったようにも思う。
やってみて感じたのは、やはり電子回路もプログラミングと同様、基礎の理解と製品のデータシートを読み込むことが重要ということ。
とはいえ、間が開くとすぐに忘れてしまうので、半導体やダイオード、トランジスタなどに関しては、まとめた。
コメント