ESP32で自作基板を設計したり、ESP-IDFやArduino IDEで開発を始めたりすると、「Strapping Pins(ストラッピングピン)」という言葉を目にすることがあります。
「GPIO0をLOWにすると書き込みモードになる」
「LEDを接続したら起動しなくなった」
「基板を作ったら正常に起動しない」
このようなトラブルの多くは、Strapping Pinsの仕組みを理解することで防ぐことができます。
この記事では、Strapping Pinsの役割から起動モードの仕組み、設計時の注意点、そして実際によくあるトラブルまで、現役組み込みエンジニアの視点で分かりやすく解説します。
Strapping Pins(ストラッピングピン)とは?
Strapping Pinsとは、ESP32が電源投入時またはリセット解除時に読み込む特別なGPIOのことです。
ESP32は起動直後にこれらのGPIOの電圧レベルを読み取り、その結果によって起動方法(Boot Mode)を決定します。
例えば、
- Flashメモリから通常起動する
- ダウンロードモード(書き込みモード)で起動する
といった動作が、このタイミングで決まります。
重要なのは、Strapping Pinsは起動時だけ特別な役割を持つということです。
起動モードが決定した後は、多くの場合通常のGPIOとして利用できます。
つまり、
起動時だけ設定ピンとして働き、その後は一般的なGPIOになる
という理解で問題ありません。

なぜStrapping Pinsが必要なのか
ESP32にはさまざまな起動方法があります。
例えば、
- ユーザーアプリケーションを起動する
- ファームウェアを書き換える
- デバッグを行う
これらを毎回ソフトウェアだけで切り替えることはできません。
そのため、CPUは起動直後にGPIOの状態を確認し、どのモードで起動するかを判断しています。
PCでいうBIOS設定やブートメニューに近い役割と考えると分かりやすいでしょう。
Strapping Pinsはいつ読み込まれる?
Strapping Pinsは、起動中ずっと監視されているわけではありません。
読み込まれるのは、
- 電源投入時
- リセット解除直後
の非常に短い時間だけです。
このタイミングでGPIOの状態を読み取り、Boot Modeが決定されます。
その後にGPIO0をHIGHやLOWへ変更しても、起動モードは変わりません。
この仕様を理解していないと、
「GPIO0を変更したのに動作が変わらない」
という疑問につながります。

代表的なStrapping Pins
ESP32シリーズには複数のStrapping Pinsがあります。
ただし、使用されるGPIOや機能はシリーズによって異なるため、詳細は必ず対象デバイスのデータシートを確認してください。
特に有名なのがGPIO0です。
GPIO0はダウンロードモードへの切り替えに利用されることが多く、自作基板では最も意識するGPIOの一つです。

設計時に注意するポイント
1.外付け回路の影響を考える
LEDやMOSFET、センサ、他のマイコンなどをStrapping Pinsへ接続すると、起動時の電圧レベルが変化することがあります。
その結果、
- 起動しない
- 書き込みモードへ入れない
- リセットを繰り返す
といった現象が発生することがあります。
そのため、Strapping Pinsへ接続する回路は十分に検討する必要があります。

2.Pull-up・Pull-down抵抗を適切に選ぶ
起動時のGPIOレベルを安定させるために、適切なPull-upまたはPull-down抵抗を配置します。
抵抗値はデバイスや回路構成によって異なるため、リファレンス回路やデータシートを参考に設計してください。
3.起動波形も確認する
回路図だけでは問題が見つからない場合があります。
オシロスコープで、
- 電源立ち上がり
- EN信号
- Strapping Pinsの電圧
を確認すると、原因を特定しやすくなります。
私も自作基板では、完成後に必ず起動波形を確認しています。
よくあるトラブル事例
Strapping Pinsに関するトラブルは、ESP32初心者だけでなく、自作基板を設計する経験者でも発生します。
ここでは、実際によくある事例を紹介します。
GPIO0をLOWにしたままにしてしまった
GPIO0はDownload Modeへ切り替えるために使用される代表的なStrapping Pinです。
そのため、GPIO0が起動時にLOWになっていると、Flashメモリからアプリケーションを起動せず、書き込み待機状態になります。
「プログラムは正常に書き込めたのに動かない」
という場合は、GPIO0の状態を確認してみましょう。
LEDを接続したら起動しなくなった
Strapping PinsへLEDやフォトカプラ、トランジスタなどを直接接続すると、起動時の電圧レベルが変化することがあります。
特に、
- LEDをGND側へ接続している
- 外部回路がGPIOを引き下げている
- 他のICが起動直後にGPIOを駆動している
といった構成では、CPUが意図しないBoot Modeを選択する可能性があります。
「LEDを付けただけなのに起動しなくなった」という現象は、この影響によるものが少なくありません。
シリーズによってStrapping Pinsは異なる
ESP32には、
- ESP32
- ESP32-S2
- ESP32-S3
- ESP32-C3
- ESP32-C5
- ESP32-C6
など多くのシリーズがあります。
GPIO0は多くのシリーズで共通して重要な役割を持っていますが、それ以外のStrapping Pinsや機能はデバイスによって異なります。
そのため、インターネットの記事をそのまま参考にするのではなく、必ず使用するデバイスのデータシートを確認することが重要です。
Strapping Pinsを設計するときのチェックリスト
最後に、自作基板を設計する際に確認したいポイントをまとめます。
- □ Strapping Pinsへ外付け回路を接続していないか
- □ 起動時にGPIOレベルが変化しないか
- □ Pull-up・Pull-down抵抗は適切か
- □ リファレンス回路と大きく異なる構成になっていないか
- □ オシロスコープで起動波形を確認したか
- □ 使用するESP32シリーズのデータシートを確認したか
これらを確認するだけでも、多くの起動トラブルを未然に防ぐことができます。
まとめ
Strapping Pinsは、ESP32が起動する瞬間だけ重要な役割を持つGPIOです。
起動時にGPIOの状態を読み取り、その結果によって通常起動やDownload ModeなどのBoot Modeが決定されます。
一度Boot Modeが決定すると、その後は多くの場合通常のGPIOとして利用できます。そのため、「起動時だけ特別なGPIO」と理解しておくと分かりやすいでしょう。
また、自作基板ではStrapping Pinsへ接続する外付け回路が起動に影響することがあります。LEDやフォトカプラ、トランジスタなどを接続する際は、リファレンス回路やデータシートを参考にしながら設計を進めることが重要です。
Strapping Pinsの仕組みを理解しておけば、「書き込めたのに起動しない」「Download Modeから抜けられない」といった代表的なトラブルの多くを回避できます。
ESP32シリーズについてさらに詳しく知りたい方は、こちらの記事もご覧ください。
- ESP32シリーズの選び方 | 用途別におすすめのESP32を現役エンジニアが解説
- ESP32接続ピン互換性まとめ|シリーズごとの違いを分かりやすく解説
- ESP32がPCに認識しないときの原因と解決方法まとめ
- ESP32開発 COMポートが見当たらない原因
- ESP32-C5自作基板開発日誌 #1(note)
技術は、経験から価値になる。
DLROW Design | 現場エンジニア