u-blox NINA-W10 series (ESP32)

Industrial-grade ESP32 module with Wi-Fi and Bluetooth - built for rugged, reliable IoT devices.

u-blox NINA-W10 series (ESP32) board
14 × 10 mm
ESP32
MCU
240MHz
clock
2MB
flash
520KB
SRAM
24· 16 ADC
GPIO
BLE 4.2+ WiFi
radio
On this page

u-blox NINA-W10 series (ESP32) Pinout

24 pins
PinGPIOLabelsStatusCapabilitiesNotes
10A11D7T1strappingadc · touch
21TXD1PWMuartuart
32A12T2PWMstrappingadc · touch
43RXD0PWMuartuart
54A10T0PWMsafeadc · touch
65SSD10PWMstrappingspi
712SDAA15D15T5PWMstrappingadc · touch · i2c
813SCLA14D14T4PWMstrappingadc · touch · i2c
914A16D9T6PWMstrappingadc · touch
1015A13D8T3PWMstrappingadc · touch
1118SCKD13PWMsafespi
1219MISOD11PWMsafespi
1321LED_BLUED18PWMsafe-
1422D6PWMsafe-
1523LED_REDMOSID12PWMsafespi
1625A18D3DAC1PWMsafeadc · dac
1726A19D2DAC2PWMsafeadc · dac
1827SW2A17D5T7PWMsafeadc · touch
1932A4D16T9PWMsafeadc · touch
2033LED_GREENSW1A5D17T8PWMsafeadc · touch
2134A6D19strappingadc
2235A7D4strappingadc
2336A0D20strappingadc
2439A3D21strappingadc
24 GPIOs broken out 11 free · 13 need care · 0 to avoid

Start with these

11 pins with no boot or system involvement
A10GPIO4SCKGPIO18MISOGPIO19LED_BLUEGPIO21D6GPIO22LED_REDGPIO23A18GPIO25A19GPIO26SW2GPIO27A4GPIO32LED_GREENGPIO33

Freely assignable - no strapping, flash, USB or JTAG duties. Ideal first picks for buttons, sensors and LEDs.

Fine - with a little care

13 pins · 12 things to know
A11GPIO0 Bootstrapping pin (enter bootloader when low); internal pull-up. Strapping

Must be HIGH during boot for normal startup; if held LOW on reset, forces flash programming mode.

TXGPIO1 Default UART0 TX pin for USB-serial programming and console. UART

Connected to on-board USB-UART for uploading and logs; drives serial output at boot, so using as GPIO can disrupt programming or console.

A12GPIO2 Bootstrapping pin (must be low or floating at reset); internal pull-down. Strapping

If driven HIGH on reset (while IO0 is LOW), selects an unsupported SDIO boot mode, causing boot failure.

RXGPIO3 Default UART0 RX pin for USB-serial programming (console input). UART

Used for receiving data from USB-UART (programming); also pulled HIGH at boot for console communication, so using as GPIO can disrupt uploads.

SSGPIO5 Bootstrapping pin; internal pull-up; VSPI CS0 (default SPI chip-select); acts as FSPIWP (flash write-protect) on internal-flash variants. Strapping

Must be HIGH during boot; if pulled LOW at reset, alters SDIO slave timing and may prevent normal boot.

SDAGPIO12 Bootstrapping pin; JTAG TDI; sets flash voltage (VDD_SDIO); also HSPIQ (flash data line). Strapping

Keep LOW during boot (internal PD); pulling HIGH at reset selects 1.8V flash mode, causing flash brownout if 3.3V flash is used.

SCLGPIO13 JTAG clock pin (TCK); also ADC2 channel 4 / Touch4 input. JTAG

Used for JTAG debugging (TCK); avoid using as GPIO if JTAG is needed.

A16GPIO14 JTAG mode select pin (TMS); also HSPI CLK and PWM-capable GPIO. JTAG

Used for JTAG debugging (TMS); driving it as GPIO may interfere with JTAG or produce spurious signals at boot.

A13GPIO15 Bootstrapping pin; JTAG TDO; controls UART0 boot log output; also HSPICS0 (secondary SPI CS). Strapping

Keep HIGH during boot (internal PU); if LOW on reset, bootloader log is silenced and boot mode may change.

A6GPIO34 Input-only GPIO (no output driver); ADC1 channel 6. Other

Cannot be used as output (no drive capability); only suitable for analog/digital input.

A7GPIO35A3GPIO39 Input-only GPIOs with ADC1 channels - no output driver Other

Cannot be used as output; only suitable for input.

  • A7Input-only GPIO (no output driver); ADC1 channel 7.
  • A3Input-only GPIO (no output); ADC1 channel 3, Hall sensor VN.
A0GPIO36 Input-only GPIO (no output); ADC1 channel 0, Hall sensor VP. Other

Cannot be used as output; only suitable for input (e.g., analog read).

These are recommendations, not hard rules - with the right pull-ups, timing and boot-state awareness most pins can be made to work. When in doubt, start green.

All 24 pins on the u-blox NINA-W10 series (ESP32) are usable GPIO.

Peripheral wiring is straightforward: I²C is mapped to SDA on GPIO12 and SCL on GPIO13; the SPI bus (MOSI, MISO, SCK, SS) is broken out in full; TX/RX on GPIO1 and GPIO3 cover serial logging and flashing.

Beyond plain digital I/O you get 16 ADC-capable pins for sensors and battery monitoring, 10 capacitive-touch inputs and 2 true DAC outputs.

13 of the exposed pins carry boot-time or system duties on the ESP32 (A11, TX, A12 and 10 more) - check the guidance above before wiring anything to them. A10, SCK, MISO, LED_BLUE and 7 more are free of any such role - the safest first picks.

Getting started

flash your first firmware in ~2 minutes
Tool:
1
Connect over USB
Install your USB-serial driver (CH340 / CP210x) if no port appears. Not detected? Hold BOOT while plugging in.
2
Match & flash
Set the Tools options shown, then click Upload.
3
Verify it runs
GPIO4 toggles - wire an LED and resistor to it, or change the pin to your board's own LED.
Set these in Tools · leave everything else at default
Arduino IDE 2.x - Tools Copy
Board: "ESP32 Dev Module"▸
Flash Size: "2MB (16Mb)"▸
Flash Mode: "DIO"▸
Upload Speed: "921600"▸
▸ every other Tools option - leave at default
Board: ESP32 Dev Module
Flash Size: 2MB (16Mb)
Flash Mode: DIO
Upload Speed: 921600
Find it: Tools ▸ Board ▸ ESP32 Arduino ▸ ESP32 Dev Module
blink.ino Copy
// toggle GPIO4 - wire an LED and resistor to it
void setup() {
  pinMode(4, OUTPUT);
}
void loop() {
  digitalWrite(4, HIGH); delay(500);
  digitalWrite(4, LOW);  delay(500);
}
board to selectesp32dev⧉ copy
platformio.ini Copy
[env:nina_w10]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
upload_speed = 921600
Find it: PlatformIO Home ▸ Boards, search esp32dev - or type it after board =.
board to selectesp32dev⧉ copy
device.yaml Copy
esp32:
  board: esp32dev
  variant: esp32
  framework:
    type: esp-idf

# blink - GPIO4
output:
  - platform: gpio
    pin: 4
    id: led_out
light:
  - platform: binary
    name: "LED"
    output: led_out
Find it: search ESPHome's board list for esp32dev (same ids as PlatformIO).
esptool doesn't pick board settings - a prebuilt .bin already has them baked in. This is just the raw flash command.
terminal Copy
esptool.py --chip esp32 --port /dev/ttyACM0 \
  --baud 921600 write_flash 0x1000 firmware.bin
--port = your /dev/tty* (macOS/Linux) or COMx (Windows).
Build details: sketch space 1310720 B · data 327680 B · DIO

Specifications

ESP32 · 14 × 10 mm · vs other ESP32 chips →
Compute
MCU
ESP32
Clock
240 MHz
SRAM · Flash
520 KB · 2MB
Radio
Wi-Fi
802.11 b/g/n
Bluetooth
4.2 LE
Antenna
PCB
I/O
GPIO · ADC
24 · 16
UART · I²C · SPI
3 · 2 · 2
PWM
16 channels
Power
USB
-
Serial
-
Boot address
0x1000
Flashing
Upload · OTA
esptool_py · esp_ota
Flash · Boot mode
DIO · DIO
Sketch · Data
1.25 MB · 320 KB

Dimensions

10 mm14 mm
14 × 10 mm
The u-blox NINA-W10 series (ESP32) uses esptool_py for firmware uploads, esp_ota for over-the-air (OTA) updates. Flash mode is DIO with DIO boot mode. The maximum sketch size is 1.25 MB with 320 KB available for data.

About this board

At 14 × 10 mm it's the smallest ESP32 board we've measured.

Inside sits the ESP32 - a dual-core Xtensa with both Bluetooth Classic and BLE.

At $99.00 it's on the expensive side for an ESP32 board - most land around $20.

  • Certified ESP32 module (FCC, IC/ISED, RED/UKCA, MIC, NCC, KCC, ACMA, Anatel, ICASA)
  • Industrial operating temperature range -40°C to +85°C
  • ISO 16750 qualified for professional-grade use
  • 2 MB flash, 448 KB ROM, no PSRAM
  • Wi-Fi 802.11b/g/n and Bluetooth 4.2 (BR/EDR + low energy)
  • Antenna variants: NINA-W101 (external/pin antenna, 10.0 x 10.6 mm), NINA-W102 (internal PIFA antenna, 10.0 x 14.0 mm), NINA-W106 (internal PCB trace antenna, 10.0 x 14.0 mm)

Where to buy

prices are typical street prices
u-blox NINA-W10 series (ESP32)
u-blox NINA-W10 series (ESP32)
$99.00per unit, typical

Resources

Similar boards