ESP32-C3-WROOM-02-N4 を VS Code + PlatformIO で Arduino開発

ESP32-C3-WROOM-02-N4 を VS Code + PlatformIO で Arduino開発
スポンサーリンク

秋月電子でわずか340円で購入できる「ESP32-C3-WROOM-02-N4」。
Wi-Fi / BLE 対応、RISC-Vコア採用と高性能なのに、とても手頃なマイコンモジュールです。
しかしモジュール単体では USB 端子もピッチ変換もなく、「どう開発環境を作ればいい?」と悩みがちです。
そこで今回は VS Code + PlatformIO を使って ESP32-C3 を Arduino言語で開発する方法 を、初心者にも分かりやすくまとめました。

スポンサーリンク

ESP32-C3-WROOM-02-N4 と必要部品

● 使用した部品(すべて入手しやすい)

  • ESP32-C3-WROOM-02-N4(秋月電子)…… 340円
  • ESP32-C3 ピッチ変換基板フル版(スイッチサイエンス)…… 220円
  • USB Type-Cコネクタ DIP化キット(秋月)…… 180円
  • タクトスイッチ(EN/IO9向け)
  • 抵抗 10kΩ(プルアップ用)
  • 3.3V LDO(NJU7223F33 500mA)…… 約50円
  • コンデンサ(10µF/0.1µFなど)

これらを組み合わせるだけで、自作の ESP32-C3 USB開発ボードが完成します。

回路構成のポイント

基本的には以下の構成になります。

  • USB5V → NJU7223F33 → 3.3V
  • ESP32-C3 の 3V3 へ供給
  • EN ピンを10kΩでプルアップ
  • IO9 を GND へ落とすと BOOT モード (今回使用しなくても、プログラムの書き込みが出来ましたので省きました)
  • USB Type-C の D+ / D- を直接接続(※ESD対策は任意)

VS Code + PlatformIO のセットアップ

PlatformIO はすでにインストール済みとして説明します。

新規プロジェクトを作成

PlatformIO Home → New Project  
Board:ESP32C3 Dev Module  
Framework:Arduino

platformio.ini の設定(ライブラリの入れ方)

[env:esp32-c3-devkitc-02]
platform = espressif32
board = esp32-c3-devkitc-02
upload_port = COM6  // 環境に合わせて
framework = arduino
lib_deps =
    asukiaaa/ST7032_asukiaaa    // ライブラリーのインストール
board_build.filesystem = littlefs

PlatformIO では、lib_deps にライブラリ名を書くだけで自動インストールされます。

初回接続で COMポートが消えたり現れたりする現象について(正常なので問題なし)

ESP32-C3 を USB 接続した直後、
COMポートが“見えたり消えたり”を繰り返すことがあります。

これは壊れているわけではなく、ESP32-C3 の USB 仕様による “正常な挙動”のようです。

なぜ起きるのか?

ESP32-C3 は USB-CDC(仮想COM)で動作しますが、
初回は以下の動作が何度も行われるため、Windows/macOS 側で COM ポートが安定しません。

  • USB デバイスの再初期化
  • 自動リセットが複数回入る
  • 書き込み前は USB-CDC が不安定
  • VID/PID が切り替わる

つまり、初回だけ COM ポートが不安定になるのは普通の現象のようです。


書き込みはこのままで問題ありません

COMポートが何度も消えたり現れたりしていても、
そのまま PlatformIO の「Upload(書き込み)」を押して大丈夫です。

ESP32-C3 には DTR/RTS 制御による自動書き込みモードがあります。

  • BOOTボタンを押す必要なし
  • 日本語で言えば「USBを挿して書き込みを押せば自動でうまくいく」

書き込みが終わると USB-CDC が安定動作に入り、
以後は固定した COM番号として安定して認識されます。

追加情報です(書き込みできなくなった場合)

ESP32-C3-WROOM-02-N4 内部USB接続で書き込みする場合はブートボタン EN ボタンは機能しません、つまりボタンをいじらなくても普通に書き込みができてしまいます。
ただし内部無限ループのようなプログラムを間違って書き込んでしまった場合、内部USB接続ではプログラムを書き換える事ができなくなります。
この場合UART(USBシリアル変換書き込み BOOT EN 有効 な状態)でプログラムを書き換える必要があります。詳しくは次回のブログで取り上げてみたいと思います。

Lチカで動作確認

ここで簡単な Lチカを実行します。
IO6番ピンに接続したLEDをlチカさせます。

void setup()
{
 //Pin設定
 pinMode(6, OUTPUT);
}

void loop()
{
 digitalWrite(6, HIGH);
 delay(500);
 digitalWrite(6, LOW);
 delay(500);
}

AQM1602(キャラクタLCD)を表示させる

I2C接続のため

  • SDA (IO5)
  • SCL (IO4)
  • VCC
  • GND
    だけ接続すればOKです。

PlatformIO なら lib_deps に AQM1602 ライブラリを追加するだけで準備完了。

#include <Wire.h>
#include <ST7032_asukiaaa.h>
#include <WiFi.h>

#define I2C_SDA 5
#define I2C_SCL 4
ST7032_asukiaaa lcd;

void setup() {
  Wire.begin(I2C_SDA, I2C_SCL);
  lcd.begin(16, 2);  // 16文字×2行
  lcd.setContrast(30);
  lcd.print("Hello, WROOM!");
  lcd.setCursor(0, 1);
  lcd.print("ESP32C3 + LCD");
}
void loop() {
  // ループ内では特に処理なし
}

まとめ

  • 340円で購入できる ESP32-C3-WROOM-02-N4 は性能抜群
  • PlatformIO を使えば Arduino言語で非常に快適に開発できる
  • 初回の COMポート不安定は「正常」で気にしなくてよい
  • 一度書き込めば安定動作
  • AQM1602表示や LittleFS Web サーバーも簡単に動く
  • 次回のブログではLittleFS Web サーバーを詳しく解説したいと思います

ESP32-C3 は電子工作初心者から上級者まで楽しめる素晴らしいモジュールです。
ぜひ多くのプロジェクトに活用してみてください。

タイトルとURLをコピーしました