今回は、ESP32-WROOM-32Eを最小限の構成で動かすための方法を紹介します。
ESP32-WROOM-32Eとは?
ESP32シリーズの中でもメインストリームといってもよいモデルがESP32-WROOM-32E(以下本稿ではESP32Eとします)です。技適あり、秋月電子で入手可能、480円という低価格なマイコンモジュールです。WifiとBluetoothも使用できます。ESP32C3よりも百数十円高価ですが、入出力端子数が多く、BluetoothClassicにも対応しています。
秋月電子通販コード:115675
ただし、ESP32C3と異なり、USB関連の機能は含まれていないのでプログラムを書き込むためにはプログラマ(書き込み機)が必要です。これは適当なUSB-シリアル変換基板があればOKです。これはアマゾンなどでも安く手に入ります。私が使っているものは下記にリンクを張っておきます。私のWindows11環境では適切なドライバが当たらなかったため、メーカーページからドライバのダウンロード&インストールが必要でした。うまく動かない場合はデバイスマネージャーでドライバが当たっているか確認してみてください。
KKHMF 2個 FT232RLモジュール 5V 3.3V USB to TTL シリアル コンバーター アダプター モジュール Arduinoに...
ピン自体で隠れてしまっていてシルクが見えにくいですが、TX,RX,GNDが引き出せればOKです。あと、今更miniUSBなのはちょっと。新しく買わずともマイコンをいじっている人であればUSB-Serialの1つや2つはあるはずなのでそれを使えばOKです。
動作のための最小構成
真面目な人には怒られそうですが、動作させるための最小限回路は次のようになります。
今回はAitendoのDIP化基板を参考に(というかほぼそのまま)、最小限の部品のみ追加しました。
上記基板は最低限のスイッチや抵抗、コンデンサなどの部品もセットになっているので最初に動作確認をしてみるには最適です。上記基板が売り切れ等の場合は以下の基板でもOKですが、スイッチ等は別に用意する必要があることと、ブレッドボード上で配線する必要があります。
今回の回路のポイントは以下の5点です。
1.ENはプルアップが必須です。とりあえず10kΩでOKです。リセットスイッチをつけるならプッシュスイッチを介してGNDに接続しておけばOKです。
2.ESP32Eの動作電圧はデータシート上では3~3.6Vです。何某かの電源レギュレーターが必要ですので、3.3V出力のNJU7223(日清紡マイクロデバイス)を使います。4個で180円なので1個50円以下です。本当は入出力とGNDの間にコンデンサを入れるべきですね。
4.プログラムの書き込みのためのシリアル通信はTX/RX端子を利用します。ESP側のシリアル線TXをプログラマ側のRXに、ESP側のRXをプログラマ側のTXに接続してください。
5.大事なのはGPIO0をスイッチを介してGNDに接続することです。GPIO0はブート時の起動モードを設定する役割があります。GPIO0をGNDに短絡させて電源ONにするとDownloadBootモードで起動します。(これについては後述)
ESP32Eのピンピッチは1.27mmです。ESP32C3は1.5mmでした。数字上わずかな差に見えますが、1.27mmはかなり難しく感じました。ESP32C3は1ピン1ピン丁寧にやっていけばよかったのですが、1.27mmのESP32Eではこの方法は無理でした。仮止めした後にピンに沿ってはんだごてを滑らせていくという方法の方がよさそうです。この辺りはイチケンさんのはんだ付け説明がとても参考になりました。(下記動画の42分あたりからが特に参考になりました。)
ESP32C3との比較
できること・できないこと
ESP32C3ではBluetooth関連で動作しないものがありましたが、ESP32-WROOM-32EはBluetoothのほぼ全機能を使用できます。(はずです)
ESP32-WROOM-32E | ESP32C3 | |
---|---|---|
BLEKeyboard | 〇 | 〇*1 |
BLEGamePad | 〇 | △*2 |
Wiimote | 〇 | × |
*1 設定を一部書き換え、Nimbleを使用することで問題なくOK
*2 一応使えます。しかし、接続が不安定でブチブチきれます。おま環なのか設定を間違えているのかわかりませんが、どちらにせよ実用レベルではありません。ESP32-BLE-Gamepadのドキュメント上はESP32C3も対応に入っているので動くはずなのですが。なにかご存じの方はぜひコメントください。
*3 WiimoteというのはESP32とWiiリモコンを接続して、WiiリモコンからESP32を制御できるライブラリです。コンパイルは通りますが、ESP32C3では接続すらできません。
消費電力
各シーンでの消費電力を比較した結果以下のようになりました。電源レギュレーターNJU7223へ5Vの電圧を供給し、そこでの電流値を読み取っています。(つまり電源レギュレーターの消費電流込み)
また、いずれの値も変動が大きく、それを目分量で読み取っていますので全ておおよその目安であると思ってください。
ESP32-WROOM-32E | ESP32C3 | |
---|---|---|
起動、Lチカ | 40mA | 18mA |
BLEKeyboard | 40~110mA | 85mA |
BLEGamePad(接続待機 | 40mA | - |
BLEGamePad(接続中 | 110~150mA | - |
Wiimote(接続待機 | 105mA | × |
Wiimote(接続中 | 115mA | × |
WiFi(APへの接続のみ | 40~50mA | 30~40mA |
Wifi(Ambientへのデータ送信時 | 100mA | 30~90mA |
DeepSleep | 60μA | 70μA |
単純起動だけであればESP32C3の方が消費電力が少ない(半分程度)に見えますが、BluetoothやWifiを動かすとその差はほとんどなくなります。
なお、CPU周波数設定等は全てデフォルトのままにしており、ESP32Eは240MHz、ESP32-C3は160MHzです。この辺りの設定を変更すると消費電力が変わる可能性もあります。また、ESP32EとESP32-C3では内部のアーキテクチャーが大きく変更されているらしいので、処理速度に対する消費電力云々についてはここでは議論しません。
また、DeepSleepについてはESP32Eの方が小さい値となりましたが、測定法の誤差等々を考えるとここでの10μAに有意な差があるとは思えないです。(ほぼ同等といってよいと思います)
書き込み方法
ArduinoIDEを使用する前提です。
環境設定
ArduinoIDEの[ファイル]-[環境設定]の[設定]タブの追加ボードマネージャーのURLに以下を追加しておいてください。
書き込み設定
ボードは”ESP32-WROOM-DA Module”で問題なさそうです。ほかはデフォルトのままでよいと思います。
書き込み先のポートは先に説明したUSB-SeriaiのCOMを選択しておいてください。
※秋月で販売されているESP32EはFlashSizeが16MBありますので、4MBで足りない場合には設定を変更してください。プログラムが4MBに収まっているなら4MBのままでも動きます。
書き込み時の注意事項
この場合は、DownloadBootモードで起動する必要があります。先に述べたように、GPIO0をGNDに接続して電源ONもしくはリセットをしてください。これでDownloadBootモードで起動し、プログラムを書き込めるようになります。
今回のハードウェア構成の場合、プログラムの書き込み時には都度この操作(Bootを押しながらのReset)が必要です。
まとめ
いかがだったでしょうか?このようなESP32C3同様、モジュールは周辺部品などを自分で用意しなければならないため、敷居が高いですがポイントを絞れば簡単に動きます。
Amazonで売られているような開発ボードなどと比べて安価ですし、必要最低限の部品構成にすれば実装面積を削減して小さな基板を作ることができ、不要な機能に貴重な電力を取られなくても済みます。
必要な機能、ピン数、実装面積で選択してください。
コメント
今回紹介されている用途とは違うかもですが。昔買った、wifiモジュールが技適の関係でオミットされているpcDuinoにこのモジュールをつけて遊ぶことって可能でしょうか?
wifiドングルをつけると数少ないUSBポートを使ってしまうので、、
何をやりたいかによりますが、可能だと思います。
pcDuinoとESP32モジュールとの間でGPIOかシリアルで通信するようにする感じでしょうかね。