Espressif ESP8266

Pin Definitions

AI Thinker ESP-12E/F

This article, from Random Nerd Tutorials, provides a good overview of the ESP32 processor and associated pin usage.

The ESP-12E and ESP-12F (the two variants visibly differ only in the antenna configuration) pin functions are presented in the following pinout diagram. The ESP-12S differs from the E & F variants in that it does not break out pins 9–14 in the diagram below.

ESP-12E Pinout Diagram
ESP-12E/F Pin Definitions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#define Builtin_LED16

#define ADCA0
#define GPIO1616
#define WAKE16
#define GPIO1414
#define HSPICLK14
#define SCLK14
#define GPIO1212
#define HSPIQ12
#define GPIO1313
#define HSPID13
#define CTS013
#define RXD213

#define MOSI8
#define SDCMD8
#define MISO7
#define SD07
#define GPIO99
#define SD29
#define GPIO1010
#define CS10
#define SD310
#define INT11
#define SD111
#define CLK6
#define SDCLK6

#define GPIO1515
#define HSPICS15
#define RTS015
#define TXD215
#define GPIO22
#define TXD12
#define GPIO00
#define TXD20
#define SDA4
#define GPIO44
#define SCL5
#define GPIO55
#define GPIO33
#define RXD03
#define GPIO11
#define TXD01
#define CS11

// SPI (RFM95W)
#define SCKGPIO14
#define MISOGPIO12
#define MOSIGPIO13
#define NSSGPIO15
#define RST-1// Signifies 'No Connection'
#define DIO0GPIO5

// I2C
#define SCLGPIO0
#define SDAGPIO2

// ALF4all
#define A4a_A0A0
#define A4a_A1GPIO16
#define A4a_A2GPIO10
#define A4a_A3GPIO4
Amica NodeMCU

The Amica NodeMCU pin functions are presented in the following pinout diagram.

NodeMCU Pinout Diagram

Note that while the Arduino IDE allows the setting of the pin for the Builtin LED (2 or 16) at compile time, the two options actually refer to different on-board LEDs. Since the present A4a-NodeMCU adaptor board uses pins 0 (SCL) & 2 (SDA) for the I2C bus, the pin 2 LED is not available in this configuration.

Amica NodeMCU Pin Definitions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#define Builtin_LED16

#define D016
#define D15
#define D24
#define D30
#define D42
#define D514
#define D612
#define D713
#define D815
#define RX3
#define TX1

#define CLK6
#define SD07
#define CMD11
#define SD18
#define SD29
#define SD310
#define A017

#define SCLK6
#define MISO7
#define CS11
#define MOSI8

#define HSCLK14
#define HMISO12
#define HCS15
#define HMOSI13

#define D93
#define D101
#define D119
#define D1210

// SPI (RFM95W)
#define SCKHSCLK
#define MISOHMISO
#define MOSIHMOSI
#define NSSHCS
#define RST-1
#define DIO0D1

// NodeMCU I2C
#define SCLD3
#define SDAD4

// NodeMCU ALF4all
#define A4a_A0A0
#define A4a_A1D0
#define A4a_A2SD3
#define A4a_A3D2

LoRa MAC Address

To derive a four byte MAC address for the ESP8266 processors that are used in my network, all of which are ESP-12 variants that include WiFi, I have used my local prefix of 0xDC followed by the last three bytes of the WiFi MAC address.

It is acknowledged that this will not result in a globally unique MAC Address, but it has, to date, served its purpose in the present environment.

Analog-to-Digital Converter (ADC) Usage

The ESP8266 ADC has 10 bit [0..1023] resolution and a maximum input voltage of 1.0V.

The NodeMCU board includes an onboard voltage divider that supports an increased voltage range of 0 – 3.3V. The A4a LoRa ESP-12 processor board can be configured with a voltage divider that allows it too to read voltages up to 3.3V.

Further details pending

Processor Sleep Modes

Details pending

Asynchronous Timers

Timers are supported on the Espressif [ESP8266 & ESP32] platforms through the Ticker.h library, available through the Library Manager within the Arduino IDE.

Further details pending

EEPROM Usage

Refer to the discussion on EEPROM usage in the description of the EepromHandler library.

01-04-2025