ESP8266 Variants and Pinouts – ESP-01, ESP-12E/F, NodeMCU, Wemos D1 mini

The ESP8266 started life as a tiny Wi-Fi module but quickly became a full microcontroller platform. Under the metal cans, almost all modules use the same chip (ESP8266EX) – what changes is:

  • How many GPIO pins are brought out
  • Antenna type (PCB vs ceramic vs u.FL)
  • Form factor (bare module vs dev board)

This guide covers the most common variants you’ll actually meet:

  1. ESP-01 / ESP-01S – 8-pin “stick” module
  2. ESP-12E / ESP-12F (and ESP-07) – 22-pad SMD modules
  3. NodeMCU dev board – ESP-12E on a USB dev board
  4. Wemos D1 mini – small, breadboard-friendly dev board

And we’ll summarise pinouts and which pins are “safe” to use.

⚠️ All ESP8266 boards are 3.3 V only on their GPIOs. Feeding 5 V directly into any GPIO will kill the chip.


1. ESP-01 / ESP-01S – the tiny 8-pin classic

The ESP-01 is the original “blue board” most people saw first: a tiny module with only 8 pins broken out. It’s cheap and widely used in legacy designs.

Typical pinout (viewed from top, pins pointing down)

PinNameFunction
1GNDGround
2GPIO2I/O, also affects boot mode
3GPIO0I/O, boot-mode / flash pin
4RXD0UART0 RX
5TXD0UART0 TX
6CH_PD / ENChip enable (pull HIGH to run)
7RSTReset (active LOW)
8VCC3.3 V power

Practical notes:

  • Usable GPIOs in normal projects: GPIO0, GPIO2 (both have boot-mode roles)
  • To flash firmware, you usually:
    • Hold GPIO0 LOW at reset → enter bootloader
    • Use TXD0/RXD0 as serial connection
  • Very limited number of I/O pins makes ESP-01 a pain for bigger projects. Great as a Wi-Fi modem or for very small nodes.

2. ESP-12E / ESP-12F (and ESP-07) – full GPIO access

Modules like ESP-12E, ESP-12F and ESP-07 expose almost all usable pins of the ESP8266EX. They’re metal-shielded SMD modules used on dev boards like NodeMCU.

They all share a very similar core pinout; ESP-12E/F adds an extra bottom row mainly for flash pins.

High-level features of the ESP-12 class:

  • 17 GPIOs total on the chip, ~11–13 usable on typical modules
  • 1× 10-bit ADC (A0)
  • PCB antenna (ESP-12), ceramic antenna (ESP-07)

Typical ESP-12E pin groups:

  • Power & control: VCC, GND, EN/CH_PD, RST
  • UART0: TXD0 (GPIO1), RXD0 (GPIO3) – default programming / logging port
  • SPI flash pins: GPIO6–GPIO11 – used internally, don’t touch
  • General GPIOs: GPIO0, 2, 4, 5, 12, 13, 14, 15, 16
  • ADC: TOUT or ADC00–1.0 V max

Example bare ESP-12E pinout:

  • “Safe” GPIOs most people use:
    • GPIO4, GPIO5, GPIO12, GPIO13, GPIO14 → best general I/O
    • GPIO16 for deep-sleep wake (connected to RST)
  • Boot-sensitive pins:
    • GPIO0, GPIO2, GPIO15 control boot mode – must be at the right level on reset.
    • GPIO1/3 used for UART – toggled during boot.

3. NodeMCU (ESP8266 dev board) – ESP-12E on a USB PCB

NodeMCU boards like NodeMCU v1.0 (ESP-12E) take an ESP-12 module and add:

  • USB-to-serial (CP2102/CH340)
  • 3.3 V regulator
  • Auto-reset / auto-flash circuitry
  • Breadboard-friendly pins labelled D0, D1, D2… instead of raw GPIO numbers

Typical NodeMCU ESP-12E dev board pinout:

Board labelESP8266 GPIONotes
D0GPIO16No PWM, wake from deep sleep only
D1GPIO5I²C SCL (by convention)
D2GPIO4I²C SDA (by convention)
D3GPIO0Boot mode pin, pulled-up
D4GPIO2Boot mode pin, on-board LED on many
D5GPIO14HSPI CLK
D6GPIO12HSPI MISO
D7GPIO13HSPI MOSI
D8GPIO15Boot mode pin, pulled-down
RXGPIO3UART0 RX (Serial)
TXGPIO1UART0 TX (Serial)
A0ADC00–1.0 V (often via on-board divider)

Good defaults on NodeMCU:

  • I²CD2 (GPIO4) SDA, D1 (GPIO5) SCL
  • SPID5 (GPIO14) SCK, D6 (GPIO12) MISO, D7 (GPIO13) MOSI, D8 (GPIO15) CS
  • Avoid using D3 (GPIO0), D4 (GPIO2), D8 (GPIO15) for things that pull hard HIGH/LOW at boot.

4. Wemos D1 mini – small and popular

The Wemos D1 mini is a very compact dev board with an ESP-12 module, micro-USB and 3.3 V regulator. It exposes 11 usable GPIOs and is extremely popular in DIY and Home Assistant projects.

Typical D1 mini pin mapping:

LabelGPIOTypical use
D0GPIO16Deep sleep wake, no PWM
D1GPIO5I²C SCL
D2GPIO4I²C SDA
D3GPIO0Boot pin, input w/PU
D4GPIO2Boot pin, on-board LED
D5GPIO14SPI SCK
D6GPIO12SPI MISO
D7GPIO13SPI MOSI
D8GPIO15Boot pin (pulled-down)
RXGPIO3UART0 RX
TXGPIO1UART0 TX
A0ADC00–1.0 V (via onboard divider often ~3.3→1.0)

Notes:

  • Only one ADC channel (A0).
  • D0 (GPIO16) can’t do I²C or SPI, and has limitations on interrupts/PWM.
  • Don’t tie D3, D4, D8 to random stuff that changes the boot levels.

5. Other ESP8266 module variants (brief overview)

There are more SMD modules, but they’re all the same chip plus different antennas / footprints:

  • ESP-05 – tiny module with just UART pins and power (like ESP-01 but even more limited).
  • ESP-07 – similar pinout to ESP-12 but with ceramic antenna and u.FL connector.
  • ESP-201 / ESP-14 – older / less common modules with their own pinouts.

The main differences are:

  • How many GPIOs are broken out
  • Antenna type (PCB vs ceramic vs external connector)
  • Footprint and shield size

The actual SoC (ESP8266EX) and its GPIO roles are the same across all of them.


6. Safe GPIOs vs “tricky” GPIOs (boot pins)

Because of boot-mode strapping, some pins must be at defined levels during reset. The classic rule from the ESP8266 pinout references:

Boot strapping pins:

  • GPIO0
  • GPIO2
  • GPIO15

Valid boot from flash requires:

  • GPIO0 = HIGH
  • GPIO2 = HIGH
  • GPIO15 = LOW

So:

  • Don’t pull GPIO0 or GPIO2 hard LOW at boot.
  • Don’t pull GPIO15 HIGH at boot.
  • You can use them after boot, but avoid big loads or things that force the wrong level during reset.

Generally safe GPIOs on ESP-12 / NodeMCU / D1 mini:

GPIO4, GPIO5, GPIO12, GPIO13, GPIO14, GPIO16

Share your love

Newsletter Updates

Enter your email address below and subscribe to our newsletter

Leave a Reply

Your email address will not be published. Required fields are marked *