Metro ESP-32
by iArduino
Metro-style ESP32 board with familiar layout - great for Arduino IDE users moving to dual-core IoT.

On this page
Pinout
9 pins| Pin | GPIO | Labels | Status | Capabilities | Notes |
|---|---|---|---|---|---|
| 1 | 0 | KEY_BUILTIN | strapping | - | |
| 2 | 2 | LED_BUILTINPWM | strapping | - | |
| 3 | 5 | SSPWM | strapping | spi | |
| 4 | 12 | ADRPWM | strapping | - | |
| 5 | 18 | SCKPWM | safe | spi | |
| 6 | 19 | MISOPWM | safe | spi | |
| 7 | 21 | SDAPWM | safe | i2c | |
| 8 | 22 | SCLPWM | safe | i2c | |
| 9 | 23 | MOSIPWM | safe | spi |
Start with these
5 pins with no boot or system involvementFreely assignable - no strapping, flash, USB or JTAG duties. Ideal first picks for buttons, sensors and LEDs.
Fine - with a little care
sampled at boot or shared with debug/serial| Pin | Label | What to know | Role |
|---|---|---|---|
| KEY_BUILTIN | GPIO0 | Must be HIGH during boot for normal startup; if held LOW on reset, forces flash programming mode. | Strapping |
| LED_BUILTIN | GPIO2 | If driven HIGH on reset (while IO0 is LOW), selects an unsupported SDIO boot mode, causing boot failure. | Strapping |
| SS | GPIO5 | Must be HIGH during boot; if pulled LOW at reset, alters SDIO slave timing and may prevent normal boot. | Strapping |
| ADR | MTDI (GPIO12) | Keep LOW during boot (internal PD); pulling HIGH at reset selects 1.8V flash mode, causing flash brownout if 3.3V flash is used. | Strapping |
Pinout notes The Metro ESP-32 pinout brings out 9 GPIO pins - every one of them usable in your project. For peripherals, I²C is mapped to SDA on GPIO21 and SCL on GPIO22,…
The Metro ESP-32 pinout brings out 9 GPIO pins - every one of them usable in your project.
For peripherals, I²C is mapped to SDA on GPIO21 and SCL on GPIO22, while the SPI bus (MOSI, MISO, SCK, SS) is broken out in full.
If you want zero surprises, SCK, MISO, SDA, SCL and 1 more are free of any such role - the safest first picks. 4 of the exposed pins carry boot-time or system duties on the ESP32 (KEY_BUILTIN, LED_BUILTIN, SS and 1 more).
Getting started
flash your first firmware in ~2 minutesBoard: Metro
Flash Size: 4MB · DIO
Upload Speed: 921600
// blink
pinMode(18, OUTPUT);
digitalWrite(18, LOW); // on (often inverted)[env:metro_esp-32]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
upload_speed = 921600esp32:
board: esp32dev
variant: metro_esp-32
framework:
type: esp-idf
# blink - GPIO18
output:
- platform: gpio
pin: 18
id: led_out
light:
- platform: binary
name: "LED"
output: led_outesptool.py --chip esp32 --port /dev/ttyACM0 \
write_flash 0x0 firmware.binSpecifications
ESP32About this board
At its core is the ESP32 - a dual-core Xtensa with both Bluetooth Classic and BLE.
Only 9 GPIO are broken out, where most ESP32 boards manage about 24 - worth checking the pinout covers what you need.
Resources
Similar boards



