12
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ESP32マルチ書き込みボード

Last updated at Posted at 2022-10-09

これ一つで、ESP32-WROOM、ESP32-WROVER、ESP32-S3にマルチに対応します。

0. はじめに

今回は『ESP32書き込みボードの製作』(工作)の話です。Qiitaにふさわしくないかもしれませんが、興味のある方の参考になればと思いますので、今回はご容赦ください。

1. 製作した書き込みボード

↓これが今回自作した書き込みボードです。クレカの半分より小さいぐらいのサイズ感です。

IMG_0803.png IMG_0804.png

ユニバーサル基板をベースに、ピンヘッダとその他の数個の部品(抵抗、コンデンサ、タクトスイッチ)をハンダ付けしただけの単純な作りとなっていて、材料費はたった数百円です。

後述する既製品のUSBシリアル変換モジュールを6Pソケットに挿して使用します。

このボード一つで、ESP32-WROOM、ESP32-WROVERやESP32-S3にプログラムをダウンロード(書き込み)できます。

2. USBシリアル変換モジュール

今回使用するUSBシリアル変換モジュールは、こちらのESP32ダウンローダです。

なんと言っても、低価格ながら自動書き込みできる点で、自動書き込みする回路作成に必要な部品代やハンダ付け作業と比較して、これを採用することにしました。このため、自作の書き込みボード自体を単純化することができます。
(ESPダウンローダ:秋月電子さん税込820円、スイッチサイエンスさん税込770円)

USB Type-Cである点も気に入ってます。

3. 書き込み装置を自作した経緯

みなさんはどうされているのでしょうか?

ESP32を使って開発する場合、ESP32-DevKitCのような開発ボードをブレッドボードに挿して、センサーやLCDをI2CやSPIで接続してプログラムのデバッグやチューニングすると思いますが、
これを完成版にするとき、自分は、高価な開発ボードではなく、ESP32-WROOM-32EなどのESP32モジュールを単体で使っています。

ESP32モジュール単体なら、価格は開発ボードの$\frac{1}{4}$程度ですし、開発ボードに乗っているUSBシリアルも不要で ただ電力を無駄に消費するだけですから。

参考    秋月電子さん税込価格 (価格を保証するものではありません
種類 開発ボード 単体モジュール
ESP32-WROOM ESP32-DevKitC-32E(4MB)
¥1,230
ESP32-WROOM-32E(16MB)
¥360
ESP32-WROVER ESP32-DevKitC-VE(8MB)
¥1,360
ESP32-WROVER-E(16MB)
¥310(在庫処分特価)
ESP32-S3 - ESP32-S3-WROOM-1-N16R8
¥530

このため、ESP32モジュール単体にプログラムを書き込むための装置が必要になる訳です。

↓下記の様な市販品もあるのですが、(USBシリアル付きのため?)値段が高いのと、ESP32-S3やESP32-WROVERに対応していないので、自分で設計することにしました。

aitedoさん 秋月電子さん
税込2,838円
税込1,580円

4. ESP32にマルチに対応

今回の書き込みボードの特徴でもある、これ一つで、ESP32-WROOM、ESP32-WROVER、ESP32-S3にマルチに対応できる点ですが、これを可能した最大の理由は、ESP32にプログラムを書き込むために必要なピン位置が、どのモジュールも同じである事です。
esp.png

書き込みに使うピンは全部で6つ。前述のESP32ダウンローダの6Pにそのまま対応します。

ピン名称 用途 ESP32ダウンローダ
GND 電源(-) GND
3V3 電源(+) 3.3V
EN リセット EN
IO0 起動モード G0
RXD0 シリアル(受信) TXD
TXD0 シリアル(送信) RXD

さらに、ピンピッチが1.27mm、モジュール幅が18.0mmとどれも同じであることも重要でした。
esp32-dimm.png

さらに付け加えると、 ピンヘッダに接触させるだけでハンダ付けしないため、ESP32の取り外しが自由にできる、という点がポイントです。書き込み装置なので当たり前ですね。
冒頭の写真の通り、GPIOを引き出すためのピンソケットを省略しています。書き込みに特化することで、ピン数が異なる3つのモジュールに対応しています。

1.27mmピッチでモジュール幅が18.0mm、上記6ピンの位置が同じであれば、将来登場するESPモジュールにも適用できるはずです。

ESP32-C3は、ピンピッチが1.5mm、ピン配置も異なるため、これ専用に作成する必要があります。

5. 作り方

ESP32モジュールをピッチ変換基板や開発基板にハンダ付けされた経験がある方なら、簡単に作ることができると思います。

5.1 材料

・1.27ミリピッチのユニバーサル基板:秋月電子さんの72×48mmサイズで税込220円(約半分に切断して使用) (片面基板で十分でした。片面基板なら税込100円)

・1.27ミリピッチのピンヘッダ:秋月電子さんの1.27ミリピッチピンヘッダ1x40pで税込90円(19pに2本切断して使用)

その他の部品として、
・10μFコンデンサ x1
・0.1μFコンデンサ x2
・10kΩ抵抗 x1
・タクトスイッチ x1 (リセットスイッチ)
・ピンソケット(6p) x1 (USBシリアル変換モジュールを直接ハンダ付する場合は不要)
・配線ワイヤ(スズメッキ線やUEW線)

5.2 回路図

ESP32-WROOM-32 DatasheetのPeripheral Schematicsに準拠しています。
7per.png
cir.png

リセットスイッチは用意しましたが、もし、手動書き込みにも対応するなら、IO0をGNDに落とすタクトスイッチを追加してください(プルアップ抵抗は不要)。

自動書き込み機能を持たないUSBシリアル変換モジュールを使う場合は、6PのENとG0が不要となり、3.3V・GND・TXD・RXDだけをUSBシリアル変換モジュールにつなげばよいので 4Pで済みますが、手動書き込みとなるため、ENのリセットスイッチとIO0をGNDに落とすタクトスイッチが必須です。

5VのUSBシリアル変換モジュールは使えません。ESP32が壊れます。
5Vと3.3Vが選べるUSBシリアル変換モジュールの場合は、3.3Vに設定すれば使用できるはずです(実際の出力電圧を測定して3.3Vとなっていることを確認できた場合)。

5.3 各部品をユニバーサル基板にハンダ付け

下記の写真や前項の回路図を参考に、それぞれの部品を配置してハンダ付けしください。何をどこに置くなどの決まりはありませんが、2列のピンヘッダの間隔は重要です。
IMG_0802.png

もう一つの注意点は、
ピンヘッダをハンダ付けする向きです。下の写真のようにピンヘッダはピンの長さが長い側短い側があります。長い側のピンでESP32モジュールを支えるため、今回は短い側のピンを基板にハンダ付けします。

5.4 製作上のコツ

これに限らないですが、自分の経験上、表面実装部品とか、1ミリ前後のサイズにハンダ付けするコツは、糸はんだの細さだと思っています。
私はgootの20Wハンダゴテを愛用しています。温度管理できるような立派はハンダゴテがなくても、φ0.3mm位の極細糸ハンダがあれば、十分に手ハンダできます。0.6mmでも細い方だと思うのですが、コテを当てた時に溶けるハンダの量が多過ぎて、細かいピッチだとうまくハンダ付けができません。温度管理できるハンダゴテならそうはならないのかな?
あくまで自分の経験ですのでご参考まで。

5.5 ケースで保護

裏面の配線を保護するために、3Dプリンタで基板の裏側を覆うケースを作成して取り付けました。(必須ではありません)
IMG_0821.png capture.png

6. 使い方

既出の写真からもうお分かりだと思いますが、以下の3ステップです。

  1. ESP32モジュールをピンヘッダに挿す(はめる) (下記()参照
  2. 6PソケットにESP32ダウンローダ(USBシリアル変換モジュール)をセット
  3. ESP32ダウンローダとPCを、USBケーブルで接続

以上で準備完了、Arduino IDEやesptool.pympremoteから書き込みが(読み込みも)可能です。

ESP32をピンヘッダにセットするとき、
ちょっとしたコツというか慣れが必要で、力任せに押し込むと壊れてしまいます。

スッと簡単にハマらない理由ですが、
モジュールの幅が18.0ミリです。1.27ミリピッチだと2列のピンヘッダの間隔が17.78ミリとなり、計算上は0.22ミリだけモジュール幅より狭いことに起因しています。

実際につけてみると、0.2ミリもあるように見えませんが、少し狭いことは事実なので、片側列のピンヘッダの先の方に置いた後、気持ち広げるように もう片側のピンヘッダに差し込む感じではめていくと、はまりやすいと思います。

少し狭いことの副作用?で、簡単にESP32が抜け落ちることも無く、接触不良にもならず、いい感じになっていると思います。

最初に片側列のピンヘッダの根元まで挿してしまうと、モジュールが傾き過ぎて反対側のピンヘッダに挿せなくなります。
また、両側ともピンヘッダに挿さったとしても、ピンヘッダの根元まで押し込むことは不要です。無理に押し込むとピンヘッダが逆ハの字に曲がってしまいます。

試していませんが、ピンの長い側は4.5ミリもあるので、先端の1ミリぐらいを外側に曲げての字を立てた様な状態にすると、もっと簡単に挿せるかもしれません。

IMG_0827.png

ピン数の多いESP32-WROVERに合わせてピンヘッダを片側19ピンづつにしているため、ESP32-S3やESP32-WROOMをセットすると、下から5番目のピンの位置には、ESP32側には端子がありません。そのため、上記のコツを押さえて差し込もうとしてもESP32側の基板に当たるため、入りません。よって、下から5番目のピンは最初から外側に1ミリほど曲げておいてください(上の写真の矢印で示したピン)。

もしくは、どうせ書き込みでは使用しないピンのため、最初から14ピンの2列でもまったく問題ありません(14ピンでもESP32-WROVERに書き込めます)。

当初設計時に、さらに外側にピンソケットも立てて開発ボードっぽくGPIOを取り出せるようなことを考えていたので、そのときの名残です。書き込み装置に特化した段階で14ピンに減らしておくべきだったかも・・・

はじめて使用する場合は、USBシリアルのドライバのインストールが必要かもしれません。もしPCがUSBシリアルを認識しない場合は、USBシリアルの製品ページの案内に従ってドライバのインストールを行なってください。

7. おわりに

記事は以上です。何かの参考になればと思いまとめました。
他にもっとよいアイデア等があれば是非教えてください。

記事をまとめていて改善点が見つかったので、今後実践してみようと思います。
・14ピンに減らす
・ピンの先端をの字に曲げてみる

以上


2022.10.23追記
ネイティブUSBによる書き込みもできるように改造しました。





8. 二代目を作りました

2022.10.30追記
前回予告を含めて変更点は以下の通り。
・14ピンに減らす(19ピン分のスペースは確保)
・ピンの先端をの字に曲げてみた
・Bootボタン追加(右側:IO0をGNDに落とす、左側はRESET)
・ネイティブUSB用のピンソケットを独立

IMG_0905.png

ピンヘッダの曲げ具合は、↓こんな感じです。ESP32がサッと挿せるようになりました。
IMG_0904.png

裏側で配線しているので、片面基板の方が見栄えが良かったですね。(作るなら)三代目はそうします。

2023.6.5追記
何十回か挿したり抜いたりしていると、読み書きでエラーが起きるようになりました。接触不良を起こしているようで、読み書きに必要な6本のピンの反りを調整するようになりました。素手(指)で直接触っているので、端子の酸化?腐食?かも知れません。

12
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?