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: ESP32 Dev Module Flash Size: 4MB (32Mb) Flash Mode: DIO Partition Scheme: Default 4MB with spiffs (1.2MB APP / 1.5MB SPIFFS) Upload Speed: 921600
// blink the onboard LED
void setup() {
pinMode(18, OUTPUT);
}
void loop() {
digitalWrite(18, HIGH); delay(500);
digitalWrite(18, LOW); delay(500);
}[env:metro_esp-32]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
upload_speed = 921600esp32dev — or type it after board =.esp32:
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_outesp32dev (same ids as PlatformIO).esptool.py --chip esp32 --port /dev/ttyACM0 \
--baud 921600 write_flash 0x0 firmware.bin--port = your /dev/tty* (macOS/Linux) or COMx (Windows).Specifications
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



