カテゴリー
ESP8266+ESP32+RISC-V

ESP32-C3-WROOM-02 をブレッドボードで動かす

IO制御対応IoT機器を手軽に製作!
RISC-V搭載 ESP32-C3-WROOM-02 を ブレッドボード に実装し、サンプル・プログラムを動かす方法について説明します。

概要

ESP32-C3-WROOM-02 をピッチ変換基板に半田付けし、ブレッドボードで使用できるようにします。サンプル・プログラムは、GitHubからダウンロードし、GPIOの割り当てを変更して使用します。

ESP32-C3-WROOM-02 をピッチ変換基板に半田付けする

本製作の特長

ESP32-C3-WROOM-02 と ピッチ変換基板、ブレッドボードによる製作の特長として、チップの省電力性能が活かせること、ブレッドボード上の自由なスペースが多いことなどがあります。

  • 開発ボード上の回路も自分で組める(省電力化が可能)
  • ブレッドボード上の自由スペースが多い(21行×2列)
  • アンテナの性能を発揮しやすい
開発ボード上の回路も自分で組め、ブレッドボード上の自由なスペースが多い

ESP32-C3 チップ

ESP32-C3 は、従来のESPシリーズで採用されていた Tensilica Xtensa よりも低価格な Wi-Fi 内蔵の RISC-V 搭載マイコンです。しかも、他のESP32シリーズと同様に、台湾TSMC社の40nmプロセスで生産することで、高速かつ高機能、低消費電力を実現しています。

低価格な Wi-Fi 内蔵の RISC-V 搭載マイコン ESP32-C3

コア数1、FPU(浮動小数点数演算ユニット)なし、QFN 32ピンなどから、旧製品 ESP8266(ESP-WROOM-02)の後継にあたると思います。

待機電力は従来のESP32の約半分でした(実測)。開発ボードを使わずに、ブレッドボード上で回路を組むことで、乾電池での間欠駆動時間を延ばすことが出来るでしょう。

ESP32-C3-WROOM-02 モジュール

ESP32-C3-WROOM-02-N4 は、ESP32-C3 を搭載し、国内の電波法に適合した工事設計認証を取得済みの Wi-Fi モジュールです。末尾のNに続く数字はフラッシュ・メモリのサイズ(MB)で、「N4」は4Mバイト(32Mビット)を示します。

Wi-Fiモジュール ESP32-C3-WROOM-02-N4:
https://akizukidenshi.com/catalog/g/gM-17493/

国内の電波法に適合した工事設計認証を取得済みの Wi-Fi モジュール

ピン・ピッチ変換基板

ESP8266 を搭載した 旧製品 ESP-WROOM-02用の ピッチ変換基板を使用することが出来ます。ただし、ピン名の印刷が異なる点と、GPIOのうち2つ(IO0とIO18)は使用できません。

印刷の違いは、ラベルを貼ることで対応できます。

使用できないGPIOは使用しない(ピン割り当てで回避する)方法、もしくは基板を改造して配線する方法があり、これらについては後述します。

ESP-WROOM-02用2.54mmピッチ変換基板:
https://akizukidenshi.com/catalog/g/gP-09715/

ESP8266 を搭載した 旧製品 ESP-WROOM-02用の ピッチ変換基板を使用する

ブレッドボードに実装する

Wi-Fi モジュール ESP32-C3-WROOM-02-N4 をブレッドボードに実装する際の一例を紹介します。

Wi-Fi モジュール ESP32-C3-WROOM-02-N4 をブレッドボードに実装した

以下にピン割り当てを示します。役割は後述します。

Pin割当接続Pin割当接続
13V3電源(3.3V)18IO 0使用不可
2ENPull Up, RESET SW17IO 1USER SW
3IO 416IO 2
4IO 515IO 3
5IO 614IO19
6IO 713IO18使用不可
7IO 8Pull Up, RGB LED12TXDUSB シリアルRX
8IO 9Pull Up, BOOT SW11RXDUSB シリアルTX
9GND電源(GND)10IO10LED
IOxx の xx は GPIO ポート番号を示す

ピン割り当て

前述のブレッドボードのピン割り当てについて説明します。ピッチ変換基板上の印刷は、 ESP-WROOM-02 用なので、テプラなどを使って、 ESP32-C3-WROOM-02 用に書き換えました。

ただし、13番ピンの GPIO 18と、18番ピンの GPIO 0 は、GNDに接続されているので、そのままでは使用できません(基板の変更方法は後述)。

ピッチ変換基板上の印刷は、ESP32-C3-WROOM-02 用に書き換えた

Pin 1. 3V3: 電源(3.3V)

Wi-Fi モジュールに電源を供給します。始動時などに 400mA 程度の電流が一時的に流れるので、1000μFのコンデンサを入れました。レギュレータは 3.3V 500mA 出力の NJU7223F33 を使いました。ドロップ電圧が0.4V、待機電流が0.03mAと小さいので乾電池で間欠動作させたときに長期間動作が可能です。

ドロップ電圧0.4V、待機電流0.03mA の LDOタイプ 3.3V 500mA 出力のレギュレータ NJU7223F33 を使用した。乾電池で間欠駆動した時に長期間動作が可能になる

Pin 2. EN: Pull Up, RESET SW

タクトスイッチと10kΩのプルアップ抵抗を接続し、リセットボタンに使用します。

Pin 7. GPIO 8: Pull Up, RGB LED

ファームウェア書き込みモードをRXDとTXD端子のシリアルに設定するために、10kΩのプルアップ抵抗を GPIO8 に付与します(プルアップするとRXDとTXD端子を使った ESP32-C3 内蔵USBからの書き込みモードに、プルダウンすると GPIO 18と19を使った ESP32-C3 内蔵USBからの書き込みモードになる)。

また GPIO 8 に RGB LED AE-WS2812Bを接続しました。WS2812Bの動作電圧には最低3.5Vが必要ですが、多くの場合、3.3Vで動作します(保証なし, 動作しない場合もありうる)。

マイコン内蔵 RGB LED モジュール AE-WS2812B:
https://akizukidenshi.com/catalog/g/gM-08414/

最低動作電圧は 3.5V だが、実力的には3.3Vで動作する RGB LED AE-WS2812B

Pin 8. GPIO 9: Pull Up, BOOT SW

10kΩのプルアップ抵抗と、ファームウェア書き込みボタンを接続します。プログラムを書き込む方法は、後述します。

Pin 10. GPIO 10: LED

高輝度タイプのLEDと1kΩの抵抗を直列に接続します。サンプル・プログラムでは、GPIO 0を設定しているので、プログラムの #define 文を変更します(後述)。

Pin 11/12. RXD/TXD: USB シリアルTX/RX

ESP32-C3 内蔵の USB からプログラムを書き込むことも可能ですが、USB信号の GPIO 18 がピッチ変換基板でGNDに接続されていることや、開発環境使用時の切り替えの煩わしさを考慮し、USBシリアル変換モジュールを使用しました。

FT234X 超小型USBシリアル変換モジュール AE-FT234X:
https://akizukidenshi.com/catalog/g/gM-08461/

11番ピンのRXDにUSBシリアル変換ICのTXDを、12番ピンのTXDにUSBシリアル変換ICのRXDを接続してください。

USBシリアル変換モジュールの一例(筆者はUSBシリアル変換モジュールに実装されているリセッタブル・ヒューズは取り外して、半田でジャンプさせた。この改造により、始動時に再起動を繰り返す現象を対策することができる場合がある)

Pin 17. GPIO 1: USER SW

操作用スイッチを接続します。

操作スイッチのようす

サンプル・プログラムと解説書のダウンロード

プログラムのダウンロード方法

筆者が作成したサンプル・プログラムは、下記のGitHubのリポジトリからダウンロードすることが出来ます。

筆者 GitHub esp32c3 リポジトリ:
https://github.com/bokunimowakaru/esp32c3/archive/master.zip

筆者 GitHub eps32c3 リポジトリ

解説書のダウンロード方法

開発環境のセットアップ方法や、各サンプルの説明を記した解説書は、下記からダウンロードしてください。

解説書(PDF版)無料ダウンロード:
https://bokunimo.net/esp32/esp32c3

開発環境のセットアップ方法や、各サンプルの説明を記した解説書は、無料でダウンロードできる

[ご注意]
本稿で製作するブレッドボードの GPIO の割り当ては、サンプル・プログラムや解説書と異なります。必ず次節「GPIO 割り当ての変更方法」をお読みください。

プログラムの書き込み方法

GPIO 9 端子に接続したタクトスイッチ BOOT SW (下図の黄色ボタン)を押した状態で、EN端子に接続したリセットスイッチ(下図の茶色ボタン)を押下してから離すと、プログラム・書き込みモードに遷移します。

GPIO 9 端子に接続したタクトスイッチ BOOT SW を押しながら、EN端子のリセットスイッチを押下してから離すと、プログラム・書き込みモードに遷移する

ダウンロードした解説書の準備[1]「Arduino IDE 開発環境をセットアップする」のうち ⑥COMポート番号の確認 については、解説で使用した USBシリアル変換ICとの違いで、デバイスマネージャでの表示名が「USB Serial Port (COM〇)」になります。

プログラムの実行方法

書き込みが終了してからEN端子に接続したリセットスイッチ(上図の茶色ボタン)を押してください。

GPIO 割り当ての変更方法

サンプル・プログラムの GPIO 割り当ての変更方法を説明します。

ex00_io.ino
プログラム[0] IO実験用ボード

サンプル・プログラム ex00_io.ino では、LED 用に GPIO 0 を割り当てています。しかし、ピッチ変換基板 GPIO 0 の18番ピンがGNDに接続されていたので、本ブログでは、LEDを GPIO 10 に接続しました。したがって、プログラムの GPIO 0を10に変更する必要があります。

ダウンロードした esp32c3-master.zip 内の esp32c3-master フォルダ→ learning フォルダ→ ex00_ioフォルダ内のex00_io.inoを開き、PIN_LED のポート番号を以下のように変更してください。

(ex00_io.ino 変更前)
#define PIN_LED 0
#define PIN_SW 1

(ex00_io.ino 変更後)
#define PIN_LED 10
#define PIN_SW 1

プログラムの使用方法は解説書 P.12 準備4以降を参照ください。

ex00_rgb.ino
プログラム[0] RGB LED 対応版

RGB LED の接続先は、サンプルの GPIO 2 から GPIO 8 に変更したので、ex00_rgb.inoでは、 PIN_LED と PIN_LED_RGB の計2か所を変更してください。

(ex00_rgb.ino 変更前)
#define PIN_LED 0
#define PIN_SW 1
#define PIN_LED_RGB 2

(ex00_rgb.ino 変更後)
#define PIN_LED 10
#define PIN_SW 1
#define PIN_LED_RGB 8

ex01_led.ino
プログラム[1] ワイヤレスLED

ex01_led.inoも、ex00_rgb.inoと同様に PIN_LED と PIN_LED_RGB の2か所を変更します。

(ex01_led.ino 変更前)
#define PIN_LED 0
#define PIN_LED_RGB 2

(ex01_led.ino 変更後)
#define PIN_LED 10
#define PIN_LED_RGB 8

ex02_sw.ino
プログラム[2] Wi-Fi ボタン送信機

タクト・スイッチはサンプルと同じ GPIO 1 に接続しているので PIN_SW は変更する必要ありません。PIN_BTN は、M5Stamp C3の本体のボタン用です。

(ex02_sw.ino 変更前)
#define PIN_LED 0
#define PIN_SW 1
#define PIN_BTN 3
#define PIN_LED_RGB 2

(ex02_sw.ino 変更後)
#define PIN_LED 10
#define PIN_SW 1
#define PIN_BTN 3
#define PIN_LED_RGB 8

PIN_BTN を GPIO 9 に変更することで、ファームウェア・書き込みボタン利用できるようになるように思うかもしれませんが、GPIO 9 はスリープ状態からの起動に対応していないので、プログラム実行時にエラーが発生します。

プログラムの使用方法は解説書 P.17~を参照ください。

その他のサンプルについても、ピン配列を変更した場合は、同じように修正することで、動作させることが出来ます。

起動対策用コンデンサ(必要に応じて)

ESP32-C3 チップは、起動時に 400mA 程度の瞬時電流が流れ、ブレッドボード上の配線、端子、リセッタブル・ヒューズなどの抵抗成分による電圧低下が発生し、再起動を繰り返す現象が発生することがあります。

対策を行わなくてもファームウェアの書き込みは可能です。

また、Wi-Fiの動作モードや全体の消費電流などによって対策の要否や必要な容量は異なり、必ずしも必要であるとも限りません

コンデンサを変更する

手軽な対策方法は、電源用のコンデンサの容量や性能を改善することです。

下図は 低ESRの(内部抵抗の小さな)高分子アルミ固体電解コンデンサ 1000μF に変更した時の一例です。

低ESRな高分子アルミ固体電解コンデンサ 1000μF への変更例

容量を増やす方法もあります。下図は同様の 低ESR コンデンサ 1500μF に変更した時の一例です。

低ESRな高分子アルミ固体電解コンデンサ 1600μF への変更例

上記以外にも、2個以上のコンデンサを並列に接続する方法もありますが、次の方法を用いることで、より効果を高めれます。

5V入力部にコンデンサを追加する

コンデンサの個数を追加するのであれば、レギュレータの 3.3V 出力ではなく、5V 入力部に追加することで、効果を高めることが出来ます。

例えば、3.3V出力側の 1000μF と並列に 470μF を追加しても約 1500μF にしかなりません。一方、下図のように、レギュレータの 5V入力部に 470μF のコンデンサを追加した場合、3.3V出力側に 2000μF のコンデンサを追加したときと同等の効果が得られます(試算上)。

レギュレータの 5V入力部に 470μF のコンデンサを追加した場合、3.3V出力側に 2000μF を追加したときと同等の効果が得られる(試算上)

モジュール近くにコンデンサを追加する

ピッチ変換基板の1番ピンに電解コンデンサ 330μF 程度を追加して対策する方法もあります(コンデンサの負極はピッチ変換基板裏面のGNDに接続)。

ピッチ変換基板の1番ピンに 330μF の電解コンデンサを追加した
起動時の瞬時電流が配線や端子に流れたときに生じる電圧低下によって、再起動を繰り返す場合は、ピッチ変換基板の1番ピンに 330μF の電解コンデンサを追加した

リセッタブル・ヒューズの対策

USBシリアル変換モジュール AE-FT234X では、リセッタブル・ヒューズ MF-FSMF035X によって 350mA を超える電流を制限しています(遮断電流750mA)。この リセッタブル・ヒューズ によって レギュレータの入力電圧が低下する場合があります。

この場合、前述のUSBシリアル変換モジュールの出力(レギュレータの入力部)に 470 μF の電解コンデンサを追加する対策が有効です。470μFで足りないときは、1000μFにしてみてください。

なお、筆者(USBシリアル変換モジュールに実装されているリセッタブル・ヒューズは取り外して、半田でジャンプさせました。ただし、保護素子を無効にしているので、使用するレギュレータなどで保護されていることを確認してください。

対策の関連情報

下記は、過去に旧 ESP32 を搭載した開発ボードで対策を行った時のブログ記事です。レギュレータの入力(5V)に追加する場合と、出力(3.3V)に追加する場合の違いについても説明しています。

ピッチ変換基板の変更方法(任意)

13番ピンの GPIO 18 と、18番ピンの GPIO 0 を使用できるように基板を改造してみます。また、GNDの強化も行います。

本改造は必須ではありません(任意)。

改造することで、使用可能な GPIO が 2本、増えます。また、GPIO 18が使えるようになるので、 ESP32-C3 内蔵のUSBインタフェースが使えるようにもなります。

電線用の端子を作成する

13番ピンの GPIO 18 と、18番ピンの GPIO 0 は、スルーホールで基板裏面のGNDに接続されています。このGNDの一部を削り取って切断し、レジストを剥がして電線用の端子を作成します。ピンヘッダ用の電極もGNDから切断しておきます。

また、Wi-Fi モジュール背面のGNDと同じ場所に穴をあけ、穴の周囲のレジストを剥ぎます。

下図の左側が改造前の基板で、右側が改造後です。

13番ピンの GPIO 18 と、18番ピンの GPIO 0 に、電線用の端子を作成し、Wi-Fi モジュール背面のGNDと同じ場所に穴をあけた

GPIO 2本の信号線を接続する

作成した GPIO 18 と GPIO 0 用の電極に、電線を接続し、ピンヘッダに配線します。また、モジュール背面の GND に半田を盛って、基板に半田付けします。動作時の電圧不足を防ぐとともに、放熱効果も得られるので消費電力も下がります。

作成した GPIO 18 と GPIO 0 用の電極に、電線を接続し、ピンヘッダに配線した

ポリイミドテープで絶縁する

ポリイミドテープ(カプトンテープが有名)で端子部の絶縁を行いつつ、電線を固定します。

ポリイミドテープで端子部の絶縁を行いつつ、電線を固定する

テプラなどで端子名ラベルを貼る

仕上げに端子名のラベルを作成し、ピンヘッダの近くに貼ります。端子名は、作成後に忘れてしまうことが多いので、理解している製作段階に貼っておくと、結果的に効率的です。

端子名のラベルを作成し、ピンヘッダの近くに貼った

関連情報

関連情報へのリンク

(PDF版) RISC-Vコア Wi-Fiマイコン ESP32-C3 搭載 M5Stamp C3 で 無線×IO 制御プログラミング
https://bokunimo.net/esp32/esp32c3/

GitHub Pages esp32c3:
https://git.bokunimo.com/esp32c3/

本ブログ内の ESP8266+ESP32 アーカイブ:
https://bokunimo.net/blog/category/esp/

書籍「超特急Web接続! ESP マイコン・プログラム全集」サポートページ:
https://bokunimo.net/esp/

本ブログ内の関連記事

by bokunimo.net

「ESP32-C3-WROOM-02 をブレッドボードで動かす」への1件の返信

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

 - 
Chinese (Simplified)
 - 
zh-CN
Chinese (Traditional)
 - 
zh-TW
English
 - 
en
French
 - 
fr
German
 - 
de
Italian
 - 
it
Japanese
 - 
ja
Korean
 - 
ko
Russian
 - 
ru
Spanish
 - 
es