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.