ESP32-S3 のセットアップArduino IDE を入れて、最初のスケッチを書き込むまで。使えるピンと避けるピン
ESP32-S3 は Wi-Fi と Bluetooth を内蔵したマイコンで、開発ボード(ESP32-S3-DevKitC-1 やその互換品)を USB でつなぐだけで始められます。ここでは Arduino IDE を入れて、最初のスケッチを書き込むまでを通します。
- ESP32-S3
CONTENTSこの記事の目次+
01 — THE BOARD
ボードを知る
- 金属の箱が ESP32-S3-WROOM-1 モジュール(この中に CPU・Wi-Fi・flash が入っている)。周りのピンヘッダが GPIO
- BOOT と RESET(RST / EN)の 2 つのボタン。書き込みに失敗するときに使う
- USB-C が 2 口あるボードが多い。「UART」はシリアル変換チップ経由で確実、「USB」は S3 内蔵の USB。最初は UART 側を使う
- 基板上の RGB LED(WS2812)が GPIO48 についているものが多い(GPIO38 のものもある)。普通の
digitalWriteでは光らない - ロジックは 3.3V。「5V」ピンは USB から来た 5V をそのまま出しているだけ
M5Stack CoreS3 も中身は同じ ESP32-S3 ですが、画面や電源 IC の初期化と書き込み手順が M5Stack 専用なので、別のノート「M5Stack CoreS3 で始める」にまとめています。
02 — ARDUINO IDE
Arduino IDE の準備
- 01
Arduino IDE 2.x をインストールして起動する
- 02
設定(Preferences)→「追加のボードマネージャの URL」に
https://espressif.github.io/arduino-esp32/package_esp32_index.jsonを追加する - 03
左のボードマネージャで「esp32 by Espressif Systems」を検索してインストールする(数分かかる)
- 04
ツール → ボード → esp32 →「ESP32S3 Dev Module」を選ぶ
- 05
USB でボードをつなぎ、ツール → ポートで
/dev/cu.usbserial-…(UART 側)または/dev/cu.usbmodem…(USB 側)を選ぶ
「USB」側の口でつないでシリアルモニタに何も出ないときは、ツール →「USB CDC On Boot」を Enabled にします。UART 側なら不要です。
03 — FIRST SKETCH
最初のスケッチ
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.println("hello from ESP32-S3");
delay(1000);
}右矢印(書き込み)を押し、書き込みが終わったらシリアルモニタ(右上の虫眼鏡)を開いて 115200 baud にします。1 秒ごとに hello が出れば、ボード・ケーブル・IDE の 3 つがそろっています。
Arduino の書き方は、setup() が起動時に 1 回、loop() がその後ずっと繰り返し呼ばれる、という 2 つだけ覚えれば読めます。
04 — TROUBLESHOOT
書き込めないとき
- 01
BOOT を押したまま RESET を押して離し、その後 BOOT を離す(ダウンロードモードに入る)→ もう一度書き込む
- 02
ケーブルが充電専用でないか確認する(認識されない原因の第 1 位)
- 03
ポートを選び直す。もう一方の USB-C 口に挿し替えて試す
- 04
書き込み後に「Hard resetting via RTS pin…」で止まって動かないときは RESET を押す
- 05
macOS でポートが出ないときは、シリアル変換チップ(CP2102 / CH343 など)のドライバを入れる
05 — PINOUT
使えるピン・避けるピン
| 区分 | GPIO | 理由 |
|---|---|---|
| 避ける | 0、3、45、46 | 起動モードを決めるストラッピングピン。起動時に状態が変わると立ち上がらない |
| 避ける | 19、20 | USB の D− / D+。USB 側の口を使うときは触らない |
| 避ける | 26〜37 | 内蔵 flash / PSRAM 用。PSRAM 付き(N16R8 など)は 35〜37 も使えない |
| 気軽に使える | 4〜18、21、38〜42、47、48 | 普通の GPIO。まずは 4〜18 あたりを使う |
| ADC | 1〜10(ADC1) | アナログ入力。11〜20(ADC2)は Wi-Fi 使用中に読めない |
ESP32 系はコードで書く GPIO 番号がそのままボードの印字(「4」「5」…)と一致します。Raspberry Pi のような物理ピン番号との対応表は不要ですが、ボードによって出ているピンが違うので、手元のボードのピン配置図を 1 枚印刷しておきます。
06 — ALTERNATIVE
MicroPython という選択肢
Python で書きたいなら MicroPython もあります。Raspberry Pi 5 と同じ Python 文法で GPIO を操作でき、Thonny のシェルから 1 行ずつ試せるのが利点です。Arduino と MicroPython はファームウェアを書き直せば何度でも行き来できます。
pip install esptool
esptool.py --chip esp32s3 --port /dev/cu.usbmodem101 erase_flash
esptool.py --chip esp32s3 --port /dev/cu.usbmodem101 write_flash -z 0 ESP32_GENERIC_S3-*.bin書き込んだら Thonny の右下でインタプリタに「MicroPython (ESP32)」を選び、シェルに >>> が出れば接続完了です。main.py として保存すると起動時に自動実行されます。
このノートでは Arduino IDE を基本にします。M5Stack のライブラリや ESP32 の Wi-Fi・Bluetooth の作例が Arduino 向けに多いためです。
07 — WATCH OUT
注意点
「PC に認識されない」原因の第 1 位です。データ通信対応の USB-C ケーブルを使います。
ダウンロードモードに入ってしまい、プログラムが動きません。ボタンやセンサーを GPIO0 につなぐのは避けます。
3.3V ロジックです。5V ピンはあくまで外部への電源出力として使います。
08 — CHECK YOURSELF
理解チェック
Q1書き込みが「Connecting…」で止まる。最初に試すことは?答えを見る
BOOT を押しながら RESET を押してダウンロードモードに入れ、もう一度書き込む。
Q2Wi-Fi を使いながらアナログ入力を読みたい。どの GPIO を使う?答えを見る
GPIO1〜10(ADC1)。ADC2(11〜20)は Wi-Fi 使用中に読めない。
