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

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

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.  

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 contain 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 esp12-e which will work without any hardware or software modification. Any pin on which an output (e.g. led) or an input (e.g. temperature sensor) can be connected without any special effort, can be considered as considered directly usable.

All the pins on the following image are tested and can be used 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 ESP12

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 Manager