ブログ
ESP32 と Arduino IDE:基板・コンパイラ・インストール
Arduino IDE は ESP32 をどのコンパイラでビルドするのか、基板パッケージのインストール方法、選ぶべき基板。初回の書き込みで必ず立ち止まるこの疑問に、20 ステップの長文ブログなしで答えました。
ESP32 は Arduino IDE を使えますか?
使えます。ESP32 をプログラミングする方法として最も一般的で、Espressif が公式にサポートしています。「arduino ide を esp32 に使えるか」への答えは、最初のコアがリリースされた 2016 年以来ずっと「はい」です。IDE はあくまでフロントエンドで、下では SDK と同じコンパイラが動いています。
Arduino IDE は ESP32 にどのコンパイラを使いますか?
GCC です。Espressif が ESP-IDF で配布しているのと同じコンパイラを、ラップしたものです。従来の ESP32、S2、S3 は xtensa-esp32-elf-gcc でビルドされ、C3 や C6 といった RISC-V チップは riscv32-esp-elf-gcc を使います。コアは ESP-IDF の上に Arduino API を実装しているので、C++17 のコードは大半がそのままコンパイルできます。コアの更新は軽く見てはいけません。基板によっては、静かに既定のパーティションレイアウトを変えてしまうことがあるからです。
Arduino IDE に ESP32 をインストールするには?
環境設定を開き、https://espressif.github.io/arduino-esp32/package_esp32_index.json を「追加のボードマネージャ URLs」に貼り付け、ボードマネージャで「esp32」を検索してインストールします。この JSON の URL は命綱です。1 文字でもタイプミスすると、ネットワークが壊れたように見えるエラーが出ます。その後 IDE を再起動してください。基板リストは起動時にキャッシュされるためです。ナレッジベースにスクリーンショット付きの手順があります。
Arduino IDE に ESP32 を追加するには?
名前が違うだけで、流れは同じです。基板パッケージを追加するのが、そのままインストールです。その後、ツール → ボード → esp32 に、対応するすべてのバリアントが並びます。AI Thinker の ESP32-CAM も同じパッケージです。arduino ide での esp32 cam のインストール方法も同じで、リストから「AI Thinker ESP32-CAM」を選ぶだけです。
Arduino IDE で ESP32 はどの基板を選べばいいですか?
素の WROOM や WROVER devkit なら「ESP32 Dev Module」を選びましょう。安全な既定値で、30 ピンでも 38 ピンでもたいてい動きます。名前付きの基板(Arduino Nano ESP32、M5Stack、TTGO)は、それぞれの名前の項目を選んでください。間違った選択でも書き込み自体は成功します。変わるのはピン定義とフラッシュレイアウトだけです。「arduino ide で esp32 を設定する方法」の質問の大半は、実はツール → パーティションスキームについてです。
Arduino IDE で ESP32 を使うには?
基板を選び、ツール → ポートでポートを選び、アップロードを押す。「esp32 を arduino ide でアップロードする方法」への答えはそれだけです。CH340 や CP2102 の基板で初回の書き込みをするときは、BOOT を押したままにする必要があるかもしれません。その後、115200 でシリアルモニターを開けば、チップが話し始めます。
Arduino IDE で ESP32 のコードを書くには?
通常通り C++ で Arduino API を使います。setup() と loop() を書き、WiFi、Bluetooth、センサー系のライブラリを読み込みます。コアは C++17 でコンパイルされるので、モダンな構文もそのまま使えます。
Arduino IDE に ESP32 のライブラリをインストールするには?
スケッチ → ライブラリをインクルード → ライブラリを管理、または「.ZIP 形式のライブラリを追加」です。WiFi、Bluetooth、SPI、I2C はコアに組み込まれています。「ライブラリが見つからない」エラーの大半は、実は基板パッケージが入っていないだけです。
Arduino IDE で ESP32 をデバッグするには?
多くの人にとって、Serial.println() がデバッガーです。正直、たいていのバグには正しい道具です。115200 のシリアルモニターが、チップが失敗する直前に何をしていたかを教えてくれます。ブレークポイントによるデバッグには、JTAG 経由の ESP-Prog と Espressif Debug Adapter が必要で、だいぶ重装備になります。どのケーブルが正しくハンドシェイクできるか、公式ドキュメントは曖昧です。書き込み失敗は、たいてい esptool がチップに届いていないという意味なので、BOOT を押したまま再試行してください。よくある失敗の全リストはデバッグ FAQにあります。
書き込みが何度も失敗するのはなぜ?
私の初回の ESP32 書き込みも、A fatal error occurred: Failed to connect to ESP32: timed out waiting for packet header というエラーで失敗しました。書き込み中に BOOT を押し続けたら直りました。それでも直らないなら、COM ポートの間違い、充電専用ケーブル、CH340/CP2102 ドライバーの欠落を疑います。基板のせいにする前に、デバイスマネージャーを確認しましょう。ベアモジュールへの書き込みなら、手順全体が変わります。