GPIOポート(ESP32)

更新日: 2026.04.21

概要

今回はGPIOの説明。自作機器には重宝するGPIOですが幾つかのポートには制限が有ります。その辺も含めて 説明して行きます。

32khz RTC Crystal

GPIOポート一覧

32khz RTC Crystal

CPUの起動時またはリセット時の状態

  • CPUの起動時またはリセット時の状態が右側から2列目の "Reset" の列に有ります。
  • 記号状態
    IE=0 input disabled
    IE=1 input enabled
    IE=1 WPD=1 input enabled, pull-down resistor
    IE=1 WPU=1 input enabled, pull-up resistor
  • 自作機器を製作する上でこの情報が重要になります。
    • 例えば自作機器で電源投入時どうしてもLowにしたい場合
      • 3: は避ける。リセット時 High になるから
      • 1: も避ける。入力設定だが状態が分からない
      • 0: も避ける。入力設定ではないから
      • そう考えると何もせずに使えるの "2" のみとなる。
    • でも他のピンも手を加えれば使える。
      • 3: ピンとGNDを約1kΩ位いの抵抗で繋ぐ。GPIO3はプルアップされている。その抵抗は数十Ωよって1kΩでGNDに繋げば Low になる。
      • 32khz RTC Crystal
      • 1: プルアップ抵抗が無いが、同じ様に GND とピンを1kΩ位で繋げば Low になる。
      • 0: 入力設定ではない(input disabled)でも Output とは書いていない。これらも 抵抗で行けそうに思えるが試していない。

ESP32起動後は一部のポートを除いて入出力の設定が出来る。

  • 設定関数:pinMode(uint8_t pin, uint8_t mode)
  • 引数詳細
    uint8_t pin設定したいピン番号を指定
    uint8_t mode 
  • INPUT: 入力状態。不安定
  • INPUT_PULLUP: 入力状態(内部プルアップ有り)初期値:High
  • INPUT_PULLDOWN: 入力状態(内部プルダウン有り)初期値:Low
  • OUTPUT: 出力状態
  • ポート入力関数: digitalRead(uint8_t pin)
    • 引数: ポート番号
    • 戻り値: 1 or High / 0 or Low
  • ポート出力関数: digitalWrite(uint8_t pin, uint8_t val)
      引数詳細
      uint8_t pin出力したいピン番号を指定
      uint8_t val
    • 1 or High :ピンから3.3Vを出力します。
    • 0 or Low :ピンを0V(GND)に落とす
  • GPIO 34, 35, 36, 39は入力専用
    • プルアップ・プルダウンが無いピン
    • 使用時は外付けのプルアップ・プルダウン抵抗を付けないと値が安定しない

ストラッピングピン(注意が必要なピン)

ESP32には起動時の動作モードを決定するためのストラッピングピン(GPIO 0, 2, 5, 12, 15)があります。 これらのピンはリセット時に内部抵抗によって特定の状態に固定されています。

ピン番号リセット時のデフォルト役割(起動時)
GPIO 0内部プルアップLOWだと書き込みモードになる
GPIO 2内部プルダウン起動のログ出力などに関係
GPIO 5内部プルアップSDIOのタイミング制御など
GPIO 12内部プルダウンフラッシュ電圧(3.3V/1.8V)の決定
GPIO 15内部プルアップログ出力の有効/無効

ブート時のモードの設定

32khz RTC Crystal
  • MTDI(GPIO12):Flash電圧の設定。デフォルト 0
    状態詳細
    1.8V
    3.3V
  • 書き込み/実行の切り分けは GPIO0と2で行う
  • GPIO0GPIO2起動モード
    Download Boot(プログラム書き込みモード
    SPI Flash Boot(書き込まれたプログラムを実行)
    無効。通常使用しない。
    SPI Flash Boot(書き込まれたプログラムを実行)
  • GPIO5/MTDO(GPIO15):SDIOスレーブとしての動作やデバッグログの出力設定
    GPIO5GPIO15起動モード
    起動時のログ出力が抑制されます。
    起動時のログ出力が抑制されます。
    SDIO設定
    Default。起動時のログが出力。
  • GPIO 0,2,5,12,15の設定。
    • プログラム書込: 0,0,1,0,1
    • プログラム実行: 1,0,1,0,1
    • 書込/実行の切り替え
      • GPIO0以外のポートはリセット時のDefault値
      • GPIO0の値を変えてモードを選択する。

これ以外で気を付けたいポート

GPIO No.説明
1,3シリアル通信に使用
6,7,8,9,10,11ESP内部で使用
16,17ESP32-WROVER moduleでは使用出来ない。
(内部で使用)

最後に

ESP32は多くのGPIOポートを持ってますが、専用用途、初期設定、内部使用等の関係で ユーザが自由に使えるポートが以外と少ないです。でも最近は SDカード、 LCD 等は SPI で 温度測定等は I2C と専用のインターフェイスが有るのでそれらを利用すればユーザが 自由に使えるポートだけでも色んな事が出来ます。

SINCE 2026