PUBLIC
MICROCONTROLLERSESP32-S3 SETUP10 MIN READ

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 の準備

  1. 01

    Arduino IDE 2.x をインストールして起動する

  2. 02

    設定(Preferences)→「追加のボードマネージャの URL」に https://espressif.github.io/arduino-esp32/package_esp32_index.json を追加する

  3. 03

    左のボードマネージャで「esp32 by Espressif Systems」を検索してインストールする(数分かかる)

  4. 04

    ツール → ボード → esp32 →「ESP32S3 Dev Module」を選ぶ

  5. 05

    USB でボードをつなぎ、ツール → ポートで /dev/cu.usbserial-…(UART 側)または /dev/cu.usbmodem…(USB 側)を選ぶ

「USB」側の口でつないでシリアルモニタに何も出ないときは、ツール →「USB CDC On Boot」を Enabled にします。UART 側なら不要です。

03 — FIRST SKETCH

最初のスケッチ

CPPhello.ino
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

書き込めないとき

  1. 01

    BOOT を押したまま RESET を押して離し、その後 BOOT を離す(ダウンロードモードに入る)→ もう一度書き込む

  2. 02

    ケーブルが充電専用でないか確認する(認識されない原因の第 1 位)

  3. 03

    ポートを選び直す。もう一方の USB-C 口に挿し替えて試す

  4. 04

    書き込み後に「Hard resetting via RTS pin…」で止まって動かないときは RESET を押す

  5. 05

    macOS でポートが出ないときは、シリアル変換チップ(CP2102 / CH343 など)のドライバを入れる

05 — PINOUT

使えるピン・避けるピン

区分GPIO理由
避ける0、3、45、46起動モードを決めるストラッピングピン。起動時に状態が変わると立ち上がらない
避ける19、20USB の D− / D+。USB 側の口を使うときは触らない
避ける26〜37内蔵 flash / PSRAM 用。PSRAM 付き(N16R8 など)は 35〜37 も使えない
気軽に使える4〜18、21、38〜42、47、48普通の GPIO。まずは 4〜18 あたりを使う
ADC1〜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 はファームウェアを書き直せば何度でも行き来できます。

SHELLファームウェアを書き込む(micropython.org の ESP32_GENERIC_S3 を使う)
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 を GND に落としたまま起動しない

ダウンロードモードに入ってしまい、プログラムが動きません。ボタンやセンサーを GPIO0 につなぐのは避けます。

5V ピンを GPIO に配線しない

3.3V ロジックです。5V ピンはあくまで外部への電源出力として使います。

08 — CHECK YOURSELF

理解チェック

Q1書き込みが「Connecting…」で止まる。最初に試すことは?

BOOT を押しながら RESET を押してダウンロードモードに入れ、もう一度書き込む。

Q2Wi-Fi を使いながらアナログ入力を読みたい。どの GPIO を使う?

GPIO1〜10(ADC1)。ADC2(11〜20)は Wi-Fi 使用中に読めない。