ESP32搭載の切手大モジュールESP32-WROOM-32にはマイコンチップやフラッシュメモリが内蔵されており、プログラムを書き込んで電源供給すればモジュール単体でもマイコンとして動作する。ESP32の開発キットであるESP32 DevkitCにもこのモジュールが使われており、DevkitCにモジュール以外で載っているのはフラッシュメモリ書き込み制御回路とUSBシリアルインタフェース位だったりする。今回はDevkitCと同等の周辺回路をブレッドボード上に組んでESP32-WROOM-32モジュール単体でも使える事を確認したので記事にまとめておく。
ESP32-WROOM-32モジュールの入手先
中国のAliexpressなら送料込み200〜300円で安上がりだが、配送は早くて2週間、遅い時は数カ月掛かることもあるので気長に待てる人向け。
日本のAmazonで売られている物は割高なだけでメリットが無さそう。中国から買うのに抵抗があったり急ぐ場合はスイッチサイエンスや秋月電子で買うのが良いようだ。
ESP32のフラッシュメモリ書き込み回路
ESP32 DevkitCの回路図を眺めていたら、フラッシュメモリ書き込み回路が、以前の記事でESP-01ボード用に自作したESP8266用の回路と同じと気づいた。
書込み回路そのものは上記記事の物と全く一緒で、マイコンへの接続先を変更すればOKだ。ESP8266とESP32のピン対応は表の通り。
ESP8266 | ESP32 |
---|---|
RESET | EN |
GPIO0 | IO0 |
あらためて回路図に書いたのが以下。電源の3.3VはUSBシリアル変換ボードから取るようにしている。
ESP32-WROOM-32モジュールの線出し
フラッシュの書き込みに必要なピンをブレッドボードに挿せるように線出しをする。モジュールの端子にはまず細いポリウレタン線(下の写真では0.29mmの物を使っている)等をはんだ付けし、反対側にリード線の切れ端などブレッドボードに挿せる太い線材をはんだ付けすること。太い線材をいきなりモジュールの端子にはんだ付けすると、線材に力が加わった時に端子ごと持って行かれて基板のパターンが破壊し使用不能になるので注意(自分も1台おシャカに…)。
GNDはモジュールの3箇所から端子が出ているが、モジュールの中で繋がっており、どれか1つを線出しして外部回路と接続すればOK。
ブレッドボードにフラッシュメモリ書き込み回路を組む
USBシリアルインタフェースはRTS端子が出ている物が必要。自分はAmazonで売っている以下の物を用いたが、RTS端子はリード線をはんだ付けして引き出す必要がある。
上記リンクの物はAliexpressと同じく中国から普通郵便で送られ到着に時間が掛かるので急ぐ場合はPrime対応のこれか、安心の秋月電子製などを選ぶと良いと思う。ちなみに、この商品に関してはAliexpressとAmazonで価格差が殆ど無かった(現時点では)。
トランジスタは手元にあった2SC1815を使ったが、2N3904などNPNタイプの小信号トランジスタなら何でも使える。
プログラムの書き込み操作はDevkitCと同じ
以前の記事でESP32について取り上げたIDFのテストプログラムの書き込みやArduino IDEでのスケッチ書き込み、そしてMicroPythonのファームウエア書き込みのそれぞれを今回組んだ回路で行ってみたところ、いずれも特に問題なくフラッシュメモリへの書き込みが出来た。
但し、以前の記事で書いた通りWindows版のesptool.pyはリセットボタンを押さないと書き込みが始まらない場合があるため、Windowsで使いたい場合はリセットスイッチを付ける必要があるかもしれない。とはいえLinuxで使う限りでは、ESP32 DevkitCと全く同じ使い勝手に感じられた。
まとめ
ブレッドボードに組んだ回路で単体のESP32-WROOM-32モジュールにプログラムが問題なく書き込めて動作可能なことを確認した。
WiFiやBluetoothだけでI/O端子をあまり使わない用途なら、プログラムを書き込んだ後は書き込み回路を外して電源供給だけでモジュールを動作させる事が出来るだろう。あるいは専用基板を起こす時なども、書き込みに必要なESP32の端子(RXD0・TXD0・EN・IO0)を出しておき、今回作った回路に接続して書き込みを行う事も出来そうだ。
コメント
> 電源の3.3VはUSBシリアル変換ボードから取るようにしている。
3.3Vのレギュレータが別に搭載されているタイプの変換ボードじゃないと出力電流的に無理が無いですか?
FT232RLの3.3V出力って確か50mA位しか出せないのでフラッシュメモリの書き込み電流考えると厳しいと思います。
> FT232RLの3.3V出力って確か50mA位しか出せないので
あ、そうなんですね。知りませんでした。
ただ手元の物だとフラッシュ書き込み時でも電流は20〜30mA程度しか流れないので特に問題になってません。さすがにFT232RLの3.3V出力使ってWiFi起動しようとするとBrownoutで死んじゃいますけど。