GPIO

Best pins to use on ESP8266

Most board do not have made all pins available. The NodeMCU boards have almost all usable pins made available and some which need special attention.

Best pins to use (best to worst)

GPIO

Input

Output

Remarks

5 (D1)

OK

OK

Often used for I2C

4 (D2)

OK

OK

Often used for I2C

14 (D5)

OK

OK

12 (D6)

OK

OK

13 (D7)

OK

OK

0 (D3)

pulled up

OK

Boot fail if pulled low

2 (D4)

pulled up

OK

Boot fail if pulled low

15 (D8)

pulled to GND

OK

Boot fail if pulled high

16 (D0)

High at boot, pull down to GNDno interrupt

no PWM / I2C support

Used to wake up from deep sleep

9 (SD2)

High at boot

See notes

10 (SD3)

High at boot

See notes

3 (RX)

High at boot

is RX

RX channel of serial0

1 (TX)

is TX

debug output at boot

Boot fail if pulled low

The labels used in the tabel above are the labels on NodeMCU boards.

Sources used:

Special notes on GPIO 6 - 11

Almost any ESP8266 board has a flash chip connected to some or all of GPIO6-GPIO11.

GPIO 9 & 10 can be used on ESP8285, since that chip has 1 MB flash embedded and is not using those pins. One or both of pins may sometimes also be available on ESP8266 boards, depending on the flash used and the flash operation mode.

  • Quad IO (QIO) uses 4 lines for data (6 pins total)

  • Dual IO (DIO) uses 2 lines for data (4 pins total)

  • Standard uses a single line for data (3 pins total)

It is best not to use any of the GPIO pins 6 - 11.

Special notes on GPIO 16

GPIO-16 is a special pin. The RTC will send a short (low) pulse when the sleep timer does send a wake-up signal.

In order to wake from deep sleep, GPIO-16 has to be connected to the RST pin. If connected, this pin should not be used as GPIO pin, or else the module will reboot.

Other limitations are:

  • GPIO16 has a built-in pull-down resistor (all others have built-in pull-up)

  • To enable the pull-down resistor for GPIO16, you have to use INPUT_PULLDOWN_16

Best pins to use on ESP32

There is also a NodeMCU version using the ESP32. Fortunately the designers used the GPIO numbers as labels on the board.

Best pins to use (best to worst)

GPIO

Input

Output

Remarks

36

OK

input only

39

OK

input only

34

OK

input only

35

OK

input only

32

OK

OK

33

OK

OK

25

OK

OK

26

OK

OK

27

OK

OK

14

OK

OK

output PWM signal at boot

23

OK

OK

22

OK

OK

21

OK

OK

19

OK

OK

18

OK

OK

5

OK

OK

output PWM signal at boot

17

OK

OK

16

OK

OK

4

OK

OK

2

OK

OK

Often connected to LED

15

OK

OK

output PWM signal at boot

12

OK

Boot fail if pulled high

0

pulled up

OK

Boot fail if pulled low & output PWM signal at boot

3 (RX)

High at boot

is RX

RX channel of serial0

1 (TX)

is TX

debug output at boot

TX channel of serial0

6, 7, 8

See notes

9, 10, 11

High at boot

See notes

Source used: The Hook Up - How To: Pick the right pins on the NodeMCU ESP8266 and ESP32

Special notes on GPIO 6 - 11

Almost any ESP32 board has a flash chip connected to some or all of GPIO6-GPIO11.

It is best not to use any of the GPIO pins 6 - 11.

GPIO 6, 7 & 8 may output some PWM signals at boot. GPIO 9, 10 & 11 output high at boot and may fail to boot of pulled either high or low.

Pins used for RMII Ethernet PHY

The following PHY connections are required for RMII PHY data connections:

RMII PHY Wiring

GPIO

RMII Signal

ESP32 EMAC Function

Notes

0

REF_CLK

EMAC_TX_CLK

See desciption about the clock

21

TX_EN

EMAC_TX_EN

19

TX0

EMAC_TXD0

22

TX1

EMAC_TXD1

25

RX0

EMAC_RXD0

26

RX1

EMAC_RXD1

27

CRS_DV

EMAC_RX_DRV

See ESP32 datasheet