Technical specifications:

  • Microcontroller: ESP-8266MOD;
  • Operating voltage IO: 3.3V;
  • USB/serial adapter: CH340G;
  • Power supply voltage: 6V-16V DC;
  • Analog input pins: 1V (maximum 5V using resistor divider R21-R22);
  • Digital I/O pins: 11;
Pin type Possible function Pin ESP8266 Pin Espduino
D0 I/O, RX GPIO3 RX
D1 I/O, TX GPIO1 TX
D2 I/O, pull-down GPIO16 D16
D3, D15 I/O, SCL, pull-up GPIO5 D5, SCL
D4, D14 I/O, SDA, pull-up GPIO4 D4, SDA
D5, D13 I/O, SCK GPIO14 D14, SCK
D6, D12 I/O, MISO GPIO12 D12, MISO
D7, D11 I/O, MOSI GPIO13 D13, MOSI
D8 I/O, pull-up GPIO0 D0
D9 I/O, pull-up GPIO2 D2
D10 I/O, SS GPIO15 D15, SS
A0 Analog input A0 A0

Board schematic

According to the schematic, the board contains:

  • as the central element ESP13 (ESP8266),
  • a USB/serial converter made with CH340G,
  • a 5V/2A regulator made with the MP1482 circuit,
  • a 3.3V/1A regulator made with the NCP1117 circuit,
  • two LEDs: one red, indicating the board's power and one blue that can be used by the user via the digital pin I/O D16/GPIO16;
Attention: ESP8266 CANNOT be powered at 5V and DOES NOT have I/O pins that are 5V tolerant. Also, the maximum current through a pin is 12mA. The analog input supports a maximum of 1V; therefore, according to the schematic, a resistive divider is provided on the input using resistors R21 - 400k and R22 - 100K, thus allowing voltages of up to 5V to be applied to the input.
The NC (not connected) pins are not connected and serve as mechanical support, so the board is compatible with Arduino Uno R3 shields.

In general, the ESP8266 is used as a bridge between serial communication with another microcontroller and WiFi, but it can also be used individually as a standalone microcontroller. Used as a microcontroller, the ESP8266 has 17 GPIO (0-16), and all can be powered at 3.3V; again, it is not tolerant to 5V, and any exceedance of the 3.3V voltage will inevitably lead to the destruction of the microcontroller. Out of these 17 GPIO, only 11 are available for use as I/O, because 6 pins (GPIO6-GPIO11) are used for connecting the flash memory.

The serial communication UART0 and UART1

For serial communication UART0, GPIO1 and GPIO3 are used for TX0 and RX0, respectively. Using these pins as I/O is not possible when they are used for serial communication. The ESP8266 also has a second serial communication UART1 implemented using GPIO2 and GPIO8 for TX1 and RX1, but GPIO8 is used for connecting the flash memory and is not available for RX1. Therefore, GPIO2 (TX1) can be used in applications where data transmission is sufficient, using the Serial1 object for this purpose.

PWM (pulse width modulation)

Like many Arduino boards that use Atmega microcontrollers which have hardware-level PWM, the ESP8266 does not have any pin capable of PWM at the hardware level. Thus, PWM can be used at the software level for any of the digital pins. By default, PWM can be used at 10 bits@1kHz and can be extended up to 14 bits@1kHz.

I2C

The ESP8266 also does not have hardware-level I2C communication; instead, it is implemented at the software level using any two digital I/O pins. By default, the I2C library uses GPIO4 as SDA and GPIO5 as SCL at a communication frequency of 450kHz.

SPI

The ESP8266 has a single hardware-level SPI communication using the following pins:

  • GPIO14 as CLK;
  • GPIO12 as MISO;
  • GPIO13 as MOSI;
  • GPIO15 as SS (Slave Select)

Internal pull-up/pull-down

Pins GPIO0 to GPIO15 have internal pull-up resistors at the hardware level, while GPIO16 has a pull-down resistor. Note that GPIO15, according to the schematic, has a pull-down resistor connected, which means that the internal pull-up resistor cannot be used.