SeeedのXIAO ESP32C3が思いの他使いやすかったため、より安いESP32-C3-WROOM-02でも遊んでみました。今回は、ESP32-C3-WROOM-02を最小限の構成で動かすための方法を紹介します。
ESP32-C3-WROOM-02とは?
ESP32シリーズの中でも比較的新しく、機能は限られているものの消費電力が少ないESP32C3チップをモジュール化したものがESP32-C3-WROOM-02です。技適あり、秋月電子で入手可能、310円という低価格なマイコンモジュールです。USB機能も内蔵されていますので、書き込むためのプログラマ等は必要ありません。配線さえすればPCにUSBで直結できます。
↑秋月電子ですので、おかしな販売ルートのものではないはずです。技適もついてます。
XIAO ESP32C3の1/3の価格なので気軽に使えます。ただし、XIAOにはUSB端子や電源レギュレーター、Li-ION電池の制御機能がありますので、全部盛り込むならXIAOを買った方が早いです。
秋月電子の通販コード:117493
動作のための最小構成
真面目な人には怒られそうですが、動作させるための最小限回路は次のようになります。
ポイントは以下の5点
1.ENはプルアップが必須です。とりあえず10kΩでOKです。リセットスイッチをつけるならプッシュスイッチを介してGNDに接続しておけばOKです。
2.データシートによるとGPIO8とGPIO2についてもプルアップしろとかいてありあますが、プルアップしなくてもとりあえず動きます。
3.USBのVBUSは5Vなので、ESP32C3の3.3V端子に接続するのはNGです。電源レギュレーターが必要ですので、NJU7223を使います。4個で180円なので1個50円以下です。本当は入出力とGNDの間にコンデンサを入れるべきですね。
4.USBの信号線(D+,D-)は3.3VなのでESP32C3のGPIO18/19に直結します。数十Ωのダンピング抵抗を入れるという話もあります。
5.大事なのはGPIO9をスイッチを介してGNDに接続します。GPIO9を0にして電源ONにするとDownloadBootモードで起動します。(これについては後述)
あるとよいもの
ピッチ変換基板
ESP32-C3-WROOM-02の端子のピッチは1.5mmで、ピン数は18です。
名前が似ていて非常にややこしいのですが、ESP-WROOM-02と全く同じ形状ですが、ピンアサインが微妙に違っています。実験用には2.54mmピッチへの変換基板があるとよいのですが、下手な変換基板を使うとESP-WROOM-02用に配線されていて必要なピンがGNDに接続されている場合があるので注意してください。aitendoで変換基板が処分特価(20円)になっていますので、ご覧の段階で在庫アリならこちらをお勧めします。すべてのピンが独立なのでESP-WROOM-02でもESP32-C3-WROOM-02どちらでも使えます。
上記のaitendo2製品とも完売を確認しました。代わりとなる変換基板の情報等、コメント欄でお待ちしております。
USB端子
書き込みのためにUSB端子があるとよいです。いらないUSBケーブルをばらしてもよいのですが、下記に紹介する基板であればピンアサインもシルク印刷されているので間違いにくいです。2023.11現在で10個入り429円なので1個あたり43円ですね。
本当はUSB-Cのほうが好きなのですが、まじめなUSB充電器だと通信線まわりの処理をきちんとしないと電源供給すらしてくれなかったりするので、とりあえずMicroUSBのほうが楽でわかりやすいです。
Youmile 10個DIYオスコネクタ/ミニマイクロUSB-DIPアダプタ2.54mm 5ピンメスコネクタBタイプUSB2.0メスPCB...
書き込み方法
ArduinoIDEを使用する前提です。
環境設定
ArduinoIDEの[ファイル]-[環境設定]の[設定]タブの追加ボードマネージャーのURLに以下を追加しておいてください。
書き込み設定
ボードは”ESP32C3 Dev Module”を選択してください。ほかはデフォルトのままでよいと思います。
書き込み先のポートはCOMx(ESP32S3 Dev Module)です。環境によるのかもしれませんが、私の環境ではESP32S3と表示されます。XIAOのESP3C3でもESP3S3との表記になっていますが問題なく動いていますので気にしなくてもよいです。
書き込み時の注意事項 *ここ大事
一番最初の書き込みの際には、ポートの出現と消失を繰り返す状態になると思います。USBを抜き差ししているような状態ですね。
この場合は、DownloadBootモードで起動する必要があります。先に述べたように、GPIO9をGNDに接続してUSBを接続する(もしくは電源ON,リセットでもOKです)ことでDownloadBootモードでESP32C3が立ち上がり、プログラムを書き込めるようになります。
1度書き込んでしまえば、2度目以降はArduinoIDEからの”マイコンへの書き込み”で自動的に書き込みモードになりますのでGPIO9の操作は不要です。データシートによれば”GPIO9は弱くプルアップされている”らしいので外部プルアップも不要です。
また、DeepSleep中もUSB経由の書き込みができなくなりますので、プログラムを書き込むためにはGPIO9をGNDに落とす必要があることも覚えておいてください。(DeepSleepから復帰している間しか書き込みができません)
おまけ1:動作確認用スケッチ
GPIO4に接続したLEDを点滅させるだけです。
void setup() { //Pin設定 pinMode(4, OUTPUT); } void loop() { digitalWrite(4, HIGH); delay(50); digitalWrite(4, LOW); delay(50); }
おまけ2:DeepSleep動作確認用スケッチ
GPIO4に接続したLEDを点滅させた後DeepSleepに入り、30秒後に復帰してLEDを点滅させる、という動作を繰り返します。
int LEDOUT = 4; unsigned long interval = 30; // unit:sec void setup() { //Pin設定 pinMode(LEDOUT, OUTPUT); // ディープスリープ時間の設定 esp_sleep_enable_timer_wakeup(interval * 1000000ULL); digitalWrite(LEDOUT, HIGH); delay(1000); digitalWrite(LEDOUT, LOW); delay(1000); digitalWrite(LEDOUT, HIGH); delay(1000); esp_deep_sleep_start(); } void loop() { }
まとめ
いかがだったでしょうか?このようなモジュールは周辺部品などを自分で用意しなければならないため、敷居が高いですがポイントを絞れば案外簡単に動きます。
Amazonで売られているような開発ボードなどと比べて安価ですし、必要最低限の部品構成にすれば実装面積を削減して小さな基板を作ることもでき、不要な機能に貴重な電力を取られなくても済みます。
他のESP32シリーズと比べて機能が削減されていたりしますので、使いどころは考えないといけませんが、その低消費電力を生かしてIOTセンサー的な使い方が一番あっているのかなと思います。
コメント