はじめに
今回はESP32-C3-WROOM-02をArduino開発環境で扱う方法について調べてみました。型番が似ていることからも推測できるように有名なESP-WROOM-02と形状は全く同じですが、Wi-Fiに加えてBLEも内蔵し、USB機能が追加されている点は大きな特徴だと思います。他のESP32に比べると省略されている機能も多いですが、RISC-Vを採用したCPUに変更されたことで低消費電力、低価格を実現しています。また、技適も取得しているため、安心して使えます。
開発環境
- Windows 11 Home 22H2
- Arduino IDE 2.3.0
- Arduino Core for the ESP32 2.0.4
ESP32-C3-WROOM-02
ここではESP32-C3-WROOM-02を従来からも広く使用されているESP-WROOM-32と比較してみます。
ESP-WROOM-32 | ESP32-C3-WROOM-02 | |
---|---|---|
CPU | Xtensa LX6 | RISC-V |
コア数 | 2 | 1 |
ビット数 | 32ビット | 32ビット |
クロック周波数 | 240MHz | 160MHz |
ROM | 4MB | 4MB |
RAM | 520kB | 400kB |
GPIO | 32 | 15 |
ADC | 16 | 6 |
DAC | 2 | - |
UART | 3 | 1 |
SPI | 4 | 1 |
IIC | 2 | 1 |
Wi-Fi | 2.4GHz | 2.4GHz |
Bluetooth | 4.2 | 5.0 |
USB | - | 1 |
発売日 | 2017年2月1日 | 2022年12月8日 |
価格 | 550円 | 310円 |
注意としては対応するBluetoothの規格がBLEのみである点です。磁気センサやタッチセンサも省略されています。このように見ると機能は控え目ですが、手軽にBLEが利用できるという点では活躍しそうです。
以下のURLよりデータシートをダウンロードできます。
https://akizukidenshi.com/goodsaffix/esp32-c3-wroom-02_datasheet_en.pdf
回路構成
確認用のLEDをGPIO20に接続しました。ENは常にプルアップしておく必要があります。GPIO2とGPIO8もプルアップすることが推奨されていますが、未接続でも動作しました。
USBから供給される5Vは3端子レギュレータで3.3Vに変換しています。入力側と出力側に0.1uFのコンデンサを接続しました。
以下のURLよりデータシートをダウンロードできます。
https://akizukidenshi.com/goodsaffix/NJU7223_j.pdf
部品表
主に使用した部品は以下の通りです。全て秋月電子通商より購入できます。今回は何となく手元にあったmicro-B端子を使用していますが、代わりにType-A端子やType-C端子を使用しても構いません。
販売コード | 部品名 | 単価 |
---|---|---|
117493 | ESP32-C3-WROOM-02-N4 | 310円 |
100432 | NJU7223F33 | 50円 |
106656 | AE-USB-MICRO-B-D | 200円 |
100317 | EIC-364 | 600円 |
ESP32-C3-WROOM-02は従来からも広く使用されているESP-WROOM-02と形状が全く同じです。そのため、秋月電子通商のピッチ変換基板を使用できそうですが、肝心のピン配置が異なるので実際には無理でした。そこで、自作のピッチ変換基板を使用しました。送料を含めても1枚当たり約85円なので格安です。
ドライバ
まだ何も書き込まれていない状態のESP32-C3-WROOM-02をUSB経由でPCに接続した場合、接続や切断が頻繁に繰り返されているような状態となります。そのため、以下のコマンドをPowerShellに貼り付けて実行し、専用のドライバをインストールしておく必要があります。
Invoke-WebRequest 'https://dl.espressif.com/dl/idf-env/idf-env.exe' -OutFile .\idf-env.exe; .\idf-env.exe driver install --espressif
書き込み
書き込み方法としてはUART経由、USB経由の2種類から選べますが、今回は目玉であるUSB機能を利用してみたいと思います。USBシリアル変換ICなどは不要です。USBの信号線と直結するだけなので非常に簡単です。
USB | ESP32-C3-WROOM-02 |
---|---|
D+ | GPIO19 |
D- | GPIO18 |
GND | GND |
Arduino開発環境で扱うため、設定画面を開き、ESP32のボードマネージャを追加します。
以下のURLを所定欄に貼り付けます。
https://espressif.github.io/arduino-esp32/package_esp32_index.json
その後、ボードマネージャからESP32と検索し、インストールします。
ボードの種類としてはESP32C3 Dev Module
を選択します。なお、USB経由でシリアルモニタを利用するためにはUSB CDC on Boot
を有効化しておく必要があります。
ESP32-C3-WROOM-02が接続されているCOMポートを選択し、書き込みます。起動モードを切り替える必要はなく、そのまま動作中でも書き込み可能でした。
プログラム
例の如くLEDの点滅を試してみました。
#define LED_PIN 20
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
digitalWrite(LED_PIN, HIGH);
delay(100);
digitalWrite(LED_PIN, LOW);
delay(500);
}
おわりに
これで開発環境が構築できました。ESP32-C3-WROOM-02を搭載した開発ボードも自作している最中なので完成したら公開します。