今までは、ESP32の自作基板を、コード書き込み部分も含めて作成していたが、実際に製品出荷するときはできるだけコストを抑えたいので、コード書き込み機能の分離を試みる。
現状のESP32モジュールの自作基盤回路図
現状の回路図はこちら。
まず、今回とは関係がないが、口を動かすために使用していたサーボモーターの部分は不要になった(口は表示せずに、目だけにした)ので、Servoの欄は削除。
市販でESP32の書き込み部分のみ販売しているものを調査
今回の回路の切り分けの参考に、市販品を調査
下記サイトが参考になった。
https://qiita.com/nak435/items/500c877bcaa3d38b939a
秋月にESP32ダウンローダキットがあるみたいなのでクリック。来週秋月行って購入しよう。
https://akizukidenshi.com/catalog/g/gM-17240/
英語のサイトはこちら。
https://docs.m5stack.com/en/accessory/esp32_downloader_kit
なるほど。USBシリアルとEN(リセット)ピン、BOOTピンをESP32の開発ボードから分離している感じか。
今回は、製品化したときに充電をUSB TypeCのみにするか、それとも乾電池交換方式のみにするか、両方サポートするかが未決定。据え置きで絶えず充電した状態で使用するという方法なら、USB TypeC給電のみサポートでも良さそうだが。
USB Type-Cによる充電回路のみ残すためには
USBシリアル・ENピン・BOOTピンは不要
不要な回路(書き込み部分のみ)
- USB C TTL: 書き込み機能を分離する場合、この部分は不要。書き込みは別途のインターフェース(例えば、USBからシリアルへのアダプタ)を使用。
- ENピン・BOOTピン: これらは書き込みの際に使用するため、書き込み機能を基板から分離する場合は不要。
残すべき回路
- USB Type-C コネクタ: 充電用のコネクタは必須。
- 降圧回路: USB Type-Cからの電源をESP32が使用できる電圧に変換するために必要。USB Type-Cは最大5Vを提供するが、ESP32は3.3Vで動作するため、この変換が必要。
- (LED: 状態表示やデバッグ用途で使われることが多いため、必要に応じて搭載。)
GPT4からの提案
- 外部書き込みインターフェース: 書き込み機能を分離する場合、外部からプログラムを書き込むためのインターフェース(例: USB-シリアルコンバーター)を準備する必要があります。これには、ESP32のTX/RXピンを利用します。
- プログラミングヘッダー: ESP32ボード上にプログラミング用のピンヘッダーを設置すると、外部からの書き込みが容易になります。
なるほど。書き込みに関しては自作する必要なく、先ほどの市販のESP32ダウンローダーキットを1つ購入して使いまわせば良さそう。
逆に、製品化する方の充電回路のみ残した基盤側に、ESP32ダウンローダーキットのピンの受け手(GND・G0・EN・TX・RX・3.3V)をメス型でピッチ間隔(2.54mm)で作成しておけば良いと推測。
ピン配置を書き込みの方に合わせて、直接ブッ刺せるようにできれば、下記のような取り付け基盤は不要になりそう。
LCSCでfemale headerを探す。ちなみに、オス型がPin headerでメス型はFemale headerで、そもそもConnectorsカテゴリの中で分かれていた。基盤からL字に横に伸びるタイプの方が、垂直方向の占有面積が減るので、L字タイプを探す。
これとか良さそう。
https://www.lcsc.com/product-detail/Female-Headers_HCTL-PM254-1-06-W-8-5_C2897388.html
SMTにも対応してそうなので、これを使うことにした。
こんな感じで、ESP32ダウンローダーキットのピン配置に揃えて作成
ってか、今気づいたが、元々書き込み回路分離することが分かっていたら、USBシリアル変換モジュールの部分を、CP2102からCH340Cに変更したり、ESP32のブートローダー操作用でUMH3N(トランジスタ2個内蔵タイプ)を使用したりとかの最適化に時間かける必要なかったな。。。。
USBシリアル変換モジュールは、他の部品と結合する配線が多かったので、routingで苦労する要因の一つにもなっていた。
反省。とはいえ、初めてのことなので、そこまで頭が回らなかったのだけど。。。
というわけで、
- CH340C・UMH3Nの回路部分を削除
- ENピン・BOOTピン部分も削除
USBコネクタでは、データ伝送部分は不要
下記のUSB Cコネクタ部分では
- VBUS・GND:必要
- CC1, CC2:充電器との正しい接続を確認するために必要
- USB DP/USB DN:データ伝送線なので不要
今回とは別イシューだが、上記USB-C給電に保護回路がないので、今回を機につけておく。
USB Type-C コネクタからの VBUS
入力に対して、過電圧保護対策としてツェナーダイオードを取り付けた(と思ったら、貼り付けた回路はツェナーではなくショットキーバリアダイオードだったので間違い)
USB Type-CはUSB Power Delivery(PD)という規格もサポートしており、これにより5V以上の電圧をサポートし、最大で20Vまでの電圧と最大で5Aまでの電流を供給できる能力を持っている。そのため、ツェナーダイオードもしくはTVSダイオードをVBUSラインに入れる。
https://detail-infomation.com/zener-diode-resistance/
充電のみの回路完成!
元の回路と比べると、だいぶスッキリした!
PCBに変換して、部品配置。今回は、目のLCDディスプレイに相当するst7735sというTFT液晶を横並びに配置して、TFT液晶から出ているオス型のピン端子に自作基盤のメス型をはめて合わせるという感じにしたいので、下記のような感じで作成。
基盤下に出ているメス型ピンヘッダーは、ESP32ダウンローダーキットを差し込む用。
幸いにも一発でrouting errorにならずに終了。この部品配置が最適かどうかは、来週月曜にDMM.make akibaのテックスタッフに質問しよう。(もしかしたら配置以外にも抜け漏れがあるかもしれない)
と思っていたのだが、Twitterの投稿を毎回拝見している、ガジェット大好き!!(@smartphone_jp1)さんのスレッドで、ポゴピン洗濯バサミを使った書き込みの動画が!
なるほど。全然知らなかったけど、この書き込み方式なら、メス型のピンヘッダーを基盤に取り付ける必要ないからスペースさらに節約なりそう。もう少し調べてみよう。
続きは、こちら
コメント