ESP12-E Directly Usable GPIO Pins

October 1, 2018 - ESP8266
ESP12-E Directly Usable GPIO Pins

Quick reference guide for the esp12-e GPIO pins

Probably you will be able to use more of the pins i’m going to describe here with some tinkering, but this is not the subject of this article.  

Bellow you will find the pins that you can use directly and are not set to “HIGH” by default.

The document below contains the specs and basic info for ESP12-E WiFi module. 

esp8266-esp12e-specs – by kloppenborg

ESP12-E Pinout Basic Diagram 

The following picture contains details about all the esp12-e GPIO pins and their purpose and was taken from simba-os. It is a good reference point for all my projects.

esp12 e pinout

ESP12-E Usable GPIO Pins

First let’s define the term “directly usable GPIO pin“.

Directly usable pin is any pin of which will work without any hardware or software modification.

You can consider any pin that you can easily connect an output, such as a LED, or an input, like a temperature sensor, as directly usable.

We have tested all the pins on the following image, and you can use them as described above.

If the pins that described as usable does not work, or if there are more directly usable pins that I missed, please let me know.

ESP12-E Pins Definition on “Arduino core for ESP8266 WiFi chip”

If you are going to use the Arduino core for your coding, you can define your pins like in the table bellow:

GPIOArduino Ref. PinsUsableNotesFunction
GPIO 0D3Only as Input
GPIO 2D4Only as InputUART1_TXD
GPIO 15D8Permanently High MTDO; HSPICS; UART0_RTS
GPIO 14D5Permanently High HSPI_CLK
GPIO 16D0 can be used to wake up the chipset from deep sleep mode.

Arduino Reference Pins for Nodemcu

static const uint8_t D0   = 16;
static const uint8_t D1   = 5;
static const uint8_t D2   = 4;
static const uint8_t D3   = 0;
static const uint8_t D4   = 2;
static const uint8_t D5   = 14;
static const uint8_t D6   = 12;
static const uint8_t D7   = 13;
static const uint8_t D8   = 15;
static const uint8_t D9   = 3;
static const uint8_t D10  = 1;

Arduino core for ESP8266 WiFi chip – GitHub

IDE Board Manage

Please note that this guide is for the specific esp board and you will definitely have more or less usable pins in any other implementation of the nodemcu board. Any input is always welcome and if there is demand I can create guides for other implementations of this board.