ESP32が届いたのでVS Code + PlatformIOでLチカするまでの記録【Windows日本語環境でハマった話】

05_学習

AliExpressで注文していたESP32-WROOM-32Dが届いたので、まず動作確認としてLチカ(LEDを点滅させること)をやってみました。Windowsのユーザー名が日本語という環境のせいで予想外の場所でハマったので、同じ状況の人の参考になればと思い全工程を記録しておく。

※商品リンクは楽天のものです。1週間くらい商品到着に待てる方ならアリエクでもいいかも


使用したもの

  • ESP32-WROOM-32D × 1(AliExpress、150円※セール時でタイミングが良かった)※末尾に「U」は外付けアンテナタイプなので利用目的に合わせて購入してください。
  • LED × 1(手持ち)
  • 1kΩ抵抗 × 1(手持ち)
  • ジャンパー線(手持ち)
  • Windows PC(ユーザー名が日本語)

STEP 1:CP2102ドライバーのインストール

ESP32をUSBで接続したが、デバイスマネージャーに「他のデバイス」として表示されCOMポートとして認識されなかった。

AliExpressのESP32はUSB-シリアル変換にCP2102チップを使っており、Windowsに別途ドライバーが必要だった。以下からダウンロードしてインストール:

Silicon Labs CP210x ドライバー(公式)

Downloadsタブへ

「CP210x Windows Drivers」をダウンロード→解凍→インストール後、USBを抜き差しすると COM5 として認識された。


STEP 2:Arduino IDEを試みるも撃沈

まずArduino IDEをインストールして書き込みを試みた。しかしコンパイルするたびに以下のエラーが出て先に進めなかった:

指定されたパスが見つかりません。
exit status 1
Compilation error: exit status 1

詳細ログを有効にしても同じエラーしか表示されず、原因の特定が難しかった。スケッチの保存先変更・IDE再インストール・環境変数TEMPの変更など試したが解決しなかった。

結論:Windowsのユーザー名が日本語だとArduino IDEのコンパイラが正常に動作しない。

コンパイラのツールチェーンがAppDataフォルダ(日本語パスを含む)に展開されるため、ビルドプロセスが途中でパスを見失うようだ。


STEP 3:PlatformIO(VS Code拡張)に切り替え

Arduino IDEの代替として PlatformIO を使うことにした。VS Codeの拡張機能として動作するESP32開発環境で、日本語パスの問題が発生しなかった。

インストール手順

  1. VS Code をインストール(すでに入っていた)
  2. VS Codeの拡張機能タブで「PlatformIO IDE」を検索してインストール
  3. 再起動すると左のサイドバーにアリのアイコンが追加される ※クリックするとイニシャライズが始まり少し待ちます。

プロジェクト作成

PlatformIOアイコン→「New Project」から以下の設定で作成:

  • Name: led_blink
  • Board: Espressif ESP32 Dev Module(検索欄に「esp32 dev」と入力)
  • Framework: Arduino
  • Location: C:\development\(日本語なしのパスを指定。ここも日本語パスだと失敗する)

「Finish」を押すと初回はツールチェーンのダウンロードが始まる。数分かかるのでそのまま待つ。


STEP 4:platformio.ini の設定

プロジェクトルートの platformio.ini にCOMポートとシリアル速度を追記する:

[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
upload_port = COM5
monitor_speed = 115200
upload_resetmethod = nodemcu

STEP 5:Lチカコードを書く

src/main.cpp を開いて以下のコードに書き換える。PlatformIOでは #include <Arduino.h> が必須。これを書かないと 'LOW' was not declared in this scope というエラーが出る。

#include <Arduino.h>

void setup() {
  pinMode(2, OUTPUT);  // GPIO2をLED出力に設定
}

void loop() {
  digitalWrite(2, HIGH);  // LED点灯
  delay(500);              // 0.5秒待つ
  digitalWrite(2, LOW);   // LED消灯
  delay(500);              // 0.5秒待つ
}

STEP 6:外付けLEDの接続

このボードにはGPIO2のオンボードLEDがなかったため、外付けLEDを使った。接続はシンプル:

ESP32の「2」ピン → LEDのアノード(長い足)
LEDのカソード(短い足)→ 1kΩ抵抗 → GND

GNDピンはボード上に複数あるのでどれでもOK。抵抗は手持ちのもので代用可(LEDが少し暗くなるだけ)。


STEP 7:書き込み(BOOTボタンが必要)

画面の一番下の薄い字で書かれているバーにある「→」アイコンでUploadを開始する。しかし最初は以下のエラーが出た:

A fatal error occurred: Failed to connect to ESP32: Wrong boot mode detected (0x13)!
The chip needs to be in download mode.

ESP32を書き込みモード(ダウンロードモード)に手動で切り替える必要があった。手順:

  1. Uploadボタンを押す
  2. ターミナルに「Connecting........」が表示されたタイミングで BOOTボタンを押す(少し長押し)
  3. 書き込みが始まったら(進捗が表示されたら)BOOTボタンを離す

これで書き込み成功。[SUCCESS] と表示されれば完了。


結果:Lチカ成功

書き込み後、LEDが0.5秒ごとに点滅し始めた。ESP32の動作確認・開発環境のセットアップ完了。

次のステップは振動センサー(SW-18015P)と2台目のESP32を使った本番システムの組み込みへ進む予定。


まとめ:つまずきポイント一覧

症状原因解決策
ESP32がCOMポートとして認識されないCP2102ドライバー未インストールSilicon Labs公式サイトからドライバーをインストール
Arduino IDEでコンパイルエラーWindowsユーザー名が日本語PlatformIOに切り替える
‘LOW’ was not declared in this scope#include <Arduino.h>が抜けているコード先頭に#include <Arduino.h>を追加
Wrong boot mode detected (0x13)ESP32が書き込みモードになっていない「Connecting…」のタイミングでBOOTボタンを押す

コメント

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