Having a development board pinout reference for ESP32, STM32, and Raspberry Pi Pico is essential for every Indian maker. Incorrect pin connections cause hardware damage; knowing which pins are 5V tolerant, which share peripherals, and which have restrictions saves hours of debugging. This is your go-to reference guide.
Table of Contents
- ESP32 (WROOM-32) Pinout
- STM32F103 Blue Pill Pinout
- Raspberry Pi Pico Pinout
- Input-Only Pins to Know
- Boot and Strapping Pins
- Power Rails and Current Limits
- Frequently Asked Questions
ESP32 (WROOM-32) Pinout Reference
The ESP32 WROOM-32 (38-pin DevKit) has 30 usable GPIO pins. Critical notes:
- GPIO 6–11: Connected to internal flash SPI — DO NOT USE for other purposes
- GPIO 34, 35, 36 (VP), 39 (VN): Input only — no output, no internal pull-up/down
- GPIO 0, 2, 12, 15: Strapping pins — affect boot mode; avoid using during boot
- GPIO 0: Must be HIGH during normal boot (floating or HIGH)
- GPIO 12: Must be LOW during normal boot for standard flash voltage
- GPIO 2: Usually connected to onboard LED; must be LOW for serial flashing on some boards
- ADC2 pins (GPIO 0, 2, 4, 12–15, 25–27): Cannot use ADC2 when WiFi is active — use ADC1 pins instead
| Function | GPIO | Notes |
|---|---|---|
| I2C SDA (default) | GPIO 21 | Reconfigurable with Wire.begin(sda, scl) |
| I2C SCL (default) | GPIO 22 | Reconfigurable |
| SPI MOSI | GPIO 23 | VSPI default |
| SPI MISO | GPIO 19 | VSPI default |
| SPI SCK | GPIO 18 | VSPI default |
| UART TX | GPIO 1 | Used for serial monitor |
| UART RX | GPIO 3 | Used for serial monitor |
STM32F103 Blue Pill Pinout Reference
Key Pin Reference for STM32F103C8T6 Blue Pill:
- BOOT0 jumper: 0 = run user code; 1 = system bootloader (programming mode)
- PC13: Onboard LED (active LOW)
- PA0–PA7: ADC channels 0–7; PA0–PA3 also have alternate function TIMER2
- PB0, PB1: ADC CH8, CH9; also TIMER3 PWM outputs
- PB6/PB7: I2C1 SCL/SDA (5V tolerant)
- PA9/PA10: USART1 TX/RX
- PA2/PA3: USART2 TX/RX
- PB10/PB11: USART3 TX/RX or I2C2 SCL/SDA
- 5V Tolerant pins: Most STM32F103 pins except analog-only (PA0–PA7 in analog mode)
Raspberry Pi Pico Pinout Reference
The RP2040 Pico has 26 GPIO pins (GP0–GP22, GP25–GP28). Key notes:
- GP23, GP24, GP29: Internal use (SMPS, USB VBUS sense) — not accessible on standard Pico
- GP25: Onboard LED
- All GPIO: 3.3V max — no 5V tolerance. Use level shifter for 5V devices
- ADC pins: GP26, GP27, GP28 (ADC0–ADC2); max 3.3V input
- I2C0: GP0/GP1 (SDA/SCL) or GP4/GP5
- I2C1: GP2/GP3 or GP6/GP7
- PIO0, PIO1: Each can claim any GPIO for custom serial protocols
Input-Only Pins to Know
- ESP32 GPIO 34, 35, 36, 39: Input only — ideal for high-frequency sensor inputs, encoder pulse counting, voltage monitoring
- STM32F103 PA0–PA7: When configured as analog input, cannot be used as digital outputs simultaneously
Boot and Strapping Pins
ESP32 strapping pin behaviour at boot:
- GPIO 0 LOW: ROM bootloader mode (for serial programming)
- GPIO 0 HIGH (floating/pullup): Normal execution
- GPIO 12 HIGH at boot: Sets flash voltage to 1.8V (use 3.3V flash) — avoid pulling high
Power Rails and Current Limits
| Board | 3.3V Rail | GPIO Max per Pin | GPIO Total |
|---|---|---|---|
| ESP32 | 500 mA from USB | 40 mA source/sink | 1200 mA max |
| STM32F103 | ~100 mA from LDO | 25 mA | 150 mA max |
| Pico | 300 mA from USB | 12 mA (4 mA recommended) | 50 mA total |
Frequently Asked Questions
Can I use ESP32 ADC with WiFi active?
Only ADC1 channels (GPIO 32–39) work with WiFi active. ADC2 channels (GPIO 0, 2, 4, 12–15, 25–27) are disabled when WiFi is running — a critical limitation for many Indian IoT sensor designs.
Are STM32F103 pins 5V tolerant?
Most digital I/O pins on STM32F103 are 5V tolerant when in digital mode (see FT marking in datasheet). Analog pins and PF6, PF7 are NOT 5V tolerant. Always verify before connecting 5V logic.
What is the safe LED current for Raspberry Pi Pico GPIO?
RP2040 recommends maximum 4 mA per GPIO pin (absolute max 12 mA). Use a minimum 330Ω resistor for LEDs on 3.3V GPIO. Total simultaneous GPIO current should not exceed 50 mA.
Add comment