ESP32を動かして消費電流を測定
前の記事でESP32を動かす準備が出来たので今回は実際に動かしてみます。動かし方にはいろいろあるようですが、一般的な、というか私にはこれしか出来ない Arduino の IDE でやってみます。
▼ESP32

まずはArduino の IDE にESP32を登録する必要がありますが、その前に、IDE のバージョンを最新版に上げておきます。Arduinoをサポートする組織のゴタゴタがあって先行きが不透明だったので、うちのArduino IDEは1.6.5でバージョンアップを止めていたのですが、問題も片付いたようなので、バージョンアップするにはいい機会でしょう。
とは言っても、普通にやると前のバージョンが消えてしまうので、後で何か困ることがあるかも知れません。ということで、古いバージョンを残してインストールする方法で最新版のArduino IDEをインストールしました。なお、今回インストールしたバージョンは1.8.3でした。
バージョンアップした Arduino IDE にESP32を登録してやる必要があります。普通はIDEのボードマネージャから登録するのですが、まだ準備が出来ていないようなので、直接ファイルを追加する方法で登録します
◆ Arduino IDEへのCPUの登録
先人の方が解説記事をいろいろ書かれているのでそれらを参考に登録作業を行います。
rukihenaさんの書かれた、ESP32(ESP-WROOM-32)でLチカがたいへん判り易くて参考になりました。ありがとうございました。
CPUの情報の登録先は、自分が使っているスケッチの保存先のフォルダを使い、以下の画面に示すパスに登録しました。MySchechesV16のフォルダがスケッチの保存先で、そこに \hardware\espressi\esp32 のフォルダを自分で切り、一連のファイルを保存します。
▼ESP32のファイルの登録場所

保存が終わったら \toolsの中のget.exeを実行して追加ファイルの入手を行いますが、そのあたりは参考にさせて頂いたサイトの解説通りです。
話がちょっと脱線しますが、以前ボードマネージャから登録を行った ESP8266 のファイルの保存先を探してみると、以下の場所に入っていました。(人によって上位のフォルダ名は変わってくると思います)
▼ESP8266が保存されていた場所(参考)

CPUのハードウエア情報は、スケッチの保存フォルダ、ユーザーのアプリケーション情報フォルダ、Arduino IDEのプログラム保存フォルダの3か所があるようです。ライブラリについてもこんな感じだったと思います。(このあたりの情報はあまり自信がありません)
ともかく設定が済めば Arduino IDE から ESP32 を動かすことが出来るようになります。プログラムの書き込みには、EN(リセット)と IO0 のスイッチを押し、その後ENを離した後、プログラムの書き込みが終わるまで IO0 を押し続ける必要があります。このあたりはちょっと面倒です。
2.WiFi Scan 実行結果

Wifi Scanを実行した時のコンソール画面です。とは言ってもほとんど伏字になっていてすみません。
ESP32 のプログラムについて語れるレベルにはありませんが、消費電流について、測定結果を少しまとめておきます。
▼電流測定用のゲタ

左が、昔作ったATmega328の消費電流測定用のゲタです。1Ωのシャント抵抗が入っているので電流を簡単に測定出来ます。ESP32をATmega328とピンコンパチにしたおかげで、こういう便利な小道具が使えるようになりました。
▼ゲタを履かせる

▼Arduino (ユニバーサルの) に載せて動かす

大した周波数の信号では無いので、ミニオシロ (DSO Shell) が活躍してくれました。
以下いくつか事例を見ていきます。
▼リセット(EN)からの電流の立ち上がり (WifiScan実行時)

シャント抵抗は1Ωなので、50mVは50mAと読み替えることが出来ます。プログラムはExampleに入っていた WiFi Scanが走っています。
内部回路が順番に活性化されているのでしょうか、段階的に電流が上がって行って、最終的には130mAくらいの消費電流になっています。但しスパイク状に電流が流れていて、ピークは200mAになっています。
なお、このESP32 には電源端子に470μFを2個取り付けているので外から見たピーク電流は抑えられています。もしこのコンデンサが無かったら、もっと大きなピーク電流が流れたはずです。
▼WiFi Scan 動作中の電流波形

拡大して見ると、ピークで200mA程度の電流が流れています。
▼3.3Vの電源電圧ドロップ

140mV程度のドロップが発生しています。まあこれくらいは許容範囲だと思います。ちなみに電源の3.3Vは200mAクラスのLDOな三端子レギュレーターで作っています。
プログラムを変えていろいろ試したのですが、Lチカだと消費電流は55mA程度でした。
◆ BASICを動かす
ESP32は IO12 を 3.3V にプルアップして起動すると小さな BASIC が動くのですが、この時の消費電流は約20mAでした。ちなみに ESP32にArduinoのIDEからスケッチを書き込んだ後でも BASICは起動しました。ということは、ESP32を組み込みなどで使う時に IO12に変なレベルが入ると、勝手にBASICが走ることになりかねないので、注意が必要だと思います。たぶんこの機能を無効にする方法はあるのだと思いますが・・・、
▼ESP32のBASICの実行例

この BASIC では整数しか扱えないようですが、その上限の値を知りたかったので、簡単なプログラムを書いてみました。結果は上の画面の通りで、プラスマイナス2億くらいの範囲まで扱えるようでした。内部では符号付き32ビットで計算しているのでしょう。
◆まとめ
ということで、消費電流の話を中心に、ESP32をArduioのIDEから動かした事例の紹介でした。やはりWiFiを使うとかなりの消費電流になるようです。電源容量に制約がある場合はスリープをうまく使う必要があります。
あと、BTを使った場合はどうなるのか興味深いところです。このあたりは機会があれば実験してみたいと思います。
▼ESP32

まずはArduino の IDE にESP32を登録する必要がありますが、その前に、IDE のバージョンを最新版に上げておきます。Arduinoをサポートする組織のゴタゴタがあって先行きが不透明だったので、うちのArduino IDEは1.6.5でバージョンアップを止めていたのですが、問題も片付いたようなので、バージョンアップするにはいい機会でしょう。
とは言っても、普通にやると前のバージョンが消えてしまうので、後で何か困ることがあるかも知れません。ということで、古いバージョンを残してインストールする方法で最新版のArduino IDEをインストールしました。なお、今回インストールしたバージョンは1.8.3でした。
バージョンアップした Arduino IDE にESP32を登録してやる必要があります。普通はIDEのボードマネージャから登録するのですが、まだ準備が出来ていないようなので、直接ファイルを追加する方法で登録します
◆ Arduino IDEへのCPUの登録
先人の方が解説記事をいろいろ書かれているのでそれらを参考に登録作業を行います。
rukihenaさんの書かれた、ESP32(ESP-WROOM-32)でLチカがたいへん判り易くて参考になりました。ありがとうございました。
CPUの情報の登録先は、自分が使っているスケッチの保存先のフォルダを使い、以下の画面に示すパスに登録しました。MySchechesV16のフォルダがスケッチの保存先で、そこに \hardware\espressi\esp32 のフォルダを自分で切り、一連のファイルを保存します。
▼ESP32のファイルの登録場所

保存が終わったら \toolsの中のget.exeを実行して追加ファイルの入手を行いますが、そのあたりは参考にさせて頂いたサイトの解説通りです。
話がちょっと脱線しますが、以前ボードマネージャから登録を行った ESP8266 のファイルの保存先を探してみると、以下の場所に入っていました。(人によって上位のフォルダ名は変わってくると思います)
▼ESP8266が保存されていた場所(参考)

CPUのハードウエア情報は、スケッチの保存フォルダ、ユーザーのアプリケーション情報フォルダ、Arduino IDEのプログラム保存フォルダの3か所があるようです。ライブラリについてもこんな感じだったと思います。(このあたりの情報はあまり自信がありません)
ともかく設定が済めば Arduino IDE から ESP32 を動かすことが出来るようになります。プログラムの書き込みには、EN(リセット)と IO0 のスイッチを押し、その後ENを離した後、プログラムの書き込みが終わるまで IO0 を押し続ける必要があります。このあたりはちょっと面倒です。
2.WiFi Scan 実行結果

Wifi Scanを実行した時のコンソール画面です。とは言ってもほとんど伏字になっていてすみません。
ESP32 のプログラムについて語れるレベルにはありませんが、消費電流について、測定結果を少しまとめておきます。
▼電流測定用のゲタ

左が、昔作ったATmega328の消費電流測定用のゲタです。1Ωのシャント抵抗が入っているので電流を簡単に測定出来ます。ESP32をATmega328とピンコンパチにしたおかげで、こういう便利な小道具が使えるようになりました。
▼ゲタを履かせる

▼Arduino (ユニバーサルの) に載せて動かす

大した周波数の信号では無いので、ミニオシロ (DSO Shell) が活躍してくれました。
以下いくつか事例を見ていきます。
▼リセット(EN)からの電流の立ち上がり (WifiScan実行時)

シャント抵抗は1Ωなので、50mVは50mAと読み替えることが出来ます。プログラムはExampleに入っていた WiFi Scanが走っています。
内部回路が順番に活性化されているのでしょうか、段階的に電流が上がって行って、最終的には130mAくらいの消費電流になっています。但しスパイク状に電流が流れていて、ピークは200mAになっています。
なお、このESP32 には電源端子に470μFを2個取り付けているので外から見たピーク電流は抑えられています。もしこのコンデンサが無かったら、もっと大きなピーク電流が流れたはずです。
▼WiFi Scan 動作中の電流波形

拡大して見ると、ピークで200mA程度の電流が流れています。
▼3.3Vの電源電圧ドロップ

140mV程度のドロップが発生しています。まあこれくらいは許容範囲だと思います。ちなみに電源の3.3Vは200mAクラスのLDOな三端子レギュレーターで作っています。
プログラムを変えていろいろ試したのですが、Lチカだと消費電流は55mA程度でした。
◆ BASICを動かす
ESP32は IO12 を 3.3V にプルアップして起動すると小さな BASIC が動くのですが、この時の消費電流は約20mAでした。ちなみに ESP32にArduinoのIDEからスケッチを書き込んだ後でも BASICは起動しました。ということは、ESP32を組み込みなどで使う時に IO12に変なレベルが入ると、勝手にBASICが走ることになりかねないので、注意が必要だと思います。たぶんこの機能を無効にする方法はあるのだと思いますが・・・、
▼ESP32のBASICの実行例

この BASIC では整数しか扱えないようですが、その上限の値を知りたかったので、簡単なプログラムを書いてみました。結果は上の画面の通りで、プラスマイナス2億くらいの範囲まで扱えるようでした。内部では符号付き32ビットで計算しているのでしょう。
◆まとめ
ということで、消費電流の話を中心に、ESP32をArduioのIDEから動かした事例の紹介でした。やはりWiFiを使うとかなりの消費電流になるようです。電源容量に制約がある場合はスリープをうまく使う必要があります。
あと、BTを使った場合はどうなるのか興味深いところです。このあたりは機会があれば実験してみたいと思います。