O microcontrolador ESP8266EX mais chamado de ESP8266 é fabricado pela empresa tensilica.
- Barramento interno de 32 bits;
- Sua tensão de alimentação típica é de 3,3V mas pode trabalhar com uma tensão entre 2,5 à 3,6V com corrente máxima de 80mA;
- Possui 17 pinos GPIO’s sendo utilizados 6 na comunicação com a memória flash externa sobrando 11 pinos;
- Possui comunicação UART/SDIO/SPI/I2C/I2S/IR/WiFi;
- A comunicação WiFi é de 2.4G podendo trabalhar com os padrões 802.11 b/g/n, possui pilha TCP/IP completa internamente
podendo trabalhar no modo Station, SoftAP, SoftAP+Station com os protocolos WPA/WPA2 e WEP/TKIP/AES;
- Sua programação pode ser via UART ou OTA;
- Os protocolos de comunicação de rede é IPv4 TCP/UDP;
- Possui memória flash externa onde é armazenado o programa do usuário;
- Possui conversor AD interno de 10 bits;
- A pinagem do microcontrolador está detalhada a seguir:
| Pin | Name | Type | Function |
| 1 | VDDA | P | Analog Power 2.5 V ~ 3.6 V |
| 2 | LNA | I/O | RF antenna interface Chip output impedance = 39 + j6 Ω.
It is suggested to retain the π-type matching network to match the antenna. |
| 3 | VDD3P3 | P | Amplifier Power 2.5 V ~ 3.6 V |
| 4 | VDD3P3 | P | Amplifier Power 2.5 V ~ 3.6 V |
| 5 | VDD_RTC | P | NC (1.1 V) |
| 6 | TOUT | I | ADC pin. It can be used to test the power-supply voltage of VDD3P3 (Pin3 and Pin4)
and the input power voltage of TOUT (Pin 6). However, these two functions cannot be used simultaneously. |
| 7 | CHIP_EN | I | Chip Enable High: On, chip works properly Low: Off, small current consumed |
| 8 | XPD_DCDC | I/O | GPIO16 / Deep-sleep wakeup (need to be connected to EXT_RSTB) |
| 9 | MTMS | I/O | GPIO14 / HSPI_CLK |
| 10 | MTDI | I/O | GPIO12 / HSPI_MISO |
| 11 | VDDPST | p | Digital/IO Power Supply (1.8 V ~ 3.6 V) |
| 12 | MTCK | I/O | GPIO13 / HSPI_MOSI/UART0_CTS |
| 13 | MTDO | I/O | GPIO15 / HSPI_CS/UART0_RTS |
| 14 | GPIO2 | I/O | GPIO2 / UART TX during flash programming |
| 15 | GPIO0 | I/O | GPIO0 / SPI_CS2 |
| 16 | GPIO4 | I/O | GPIO4 |
| 17 | VDDPST | P | Digital/IO Power Supply (1.8 V ~ 3.6 V) |
| 18 | SDIO_DATA_2 | I/O | GPIO9/ Connect to SD_D2 (Series R: 20 Ω); SPIHD; HSPIHD; |
| 19 | SDIO_DATA_3 | I/O | GPIO10/ Connect to SD_D3 (Series R: 200 Ω); SPIWP; HSPIWP; |
| 20 | SDIO_CMD | I/O | GPIO11/ Connect to SD_CMD (Series R: 200 Ω); SPI_CS0; |
| 21 | SDIO_CLK | I/O | GPIO6/ Connect to SD_CLK (Series R: 200 Ω); SPI_CLK; |
| 22 | SDIO_DATA_0 | I/O | GPIO7/ Connect to SD_D0 (Series R: 200 Ω); SPI_MISO; |
| 23 | SDIO_DATA_1 | I/O | GPIO8/ Connect to SD_D1 (Series R: 200 Ω); SPI_MOSI; |
| 24 | GPIO5 | I/O | GPIO5 |
| 25 | U0RXD | I/O | GPIO3/ UART Rx during flash programming |
| 26 | U0TXD | I/O | GPIO1/ UART TX during flash programming; SPI_CS1 |
| 27 | XTAL_OUT | I/O | Connect to crystal oscillator output, can be used to provide BT clock input |
| 28 | XTAL_IN | I/O | Connect to crystal oscillator input |
| 29 | VDDD | P | Analog Power 2.5 V ~ 3.6 V |
| 30 | VDDA | P | Analog Power 2.5 V ~ 3.6 V |
| 31 | RES12K | I | Serial connection with a 12 kΩ resistor and connect to the ground |
| 32 | EXT_RSTB | I | External reset signal (Low voltage level: active) |
Os pinos 21, 22, 23, 18, 19 e 20 correspondentes aos GPIO’s 6, 7, 8, 9, 10 e 11 são usados na comunicação
com a memória flash externa.
Os melhores pinos para serem usados como saída são os pinos 16, 24, 10, 12 e 9 correspondentes aos
GPIO’s 4, 5, 12, 13 e 14, dano preferências para os GPIO’s 4 e 5 que são “puros”;
O microcontrolador ESP8266EX normalmente é integrado em um módulo possuindo, memória flash, cristal, etc.
O módulo ESP verifica a cada boot os pinos GPIO’s 0, 2 e 15. Com base neles existem diferentes modos:
| GPIO15 | GPIO0 | GPIO2 | Modo | Descrição |
| 0V | 0V | 3,3V | UART | Boot pela UART (Gravação do dispositivo) |
| 0V | 3,3V | 3,3V | FLASH | Boot pela FLASH (Funcionamento normal) |
| 3,3V | x | x | SDIO | Boot pelo SD-Card |
Para que o módulo trabalhe no modo normal (boot pela flash), devemos colocar um resistor de “pull-up”
de 3,3kΩ entre o 3,3V e o GPIO0 e outro resistor de 3,3kΩ entre o 3,3V e o GPIO2. Essa informação é
muito importante na hora do desenvolvimento do hardware.
O hardware mínimo para o funcionamento de qualquer módulo está apresentado a seguir:
A maneira mais simples de gravação de qualquer módulo utilizando um FTDI está apresentado a seguir:
Possui o microcontrolador ESP8266EX com memória flash externa, cristal, leds, antena e apenas 2 ou 4 GPIO’s.
Sua pinagem está descrita a seguir:
| Pino | Pino no ESP8266 | Fução |
| 1 | GND | GND da alimentação |
| 2 | GPIO1 / U0TXD | GPIO de uso geral ou TX da programação serial |
| 3 | GPIO2 | GPIO de uso geral |
| 4 | CHIP_EN / CH_PD | Habilitador do chip, em condições de funcionamento esse pino deverá possui um pull up de 10kΩ |
| 5 | GPIO0 | GPIO de uso geral / na programação este pino deverá ser aterrado |
| 6 | EXT_RST | Reset do chip, em condições de funcionamento esse pino deverá possui um pull up de 10kΩ |
| 7 | GPIO3 / U0RXD | GPIO de uso geral ou RX da programação serial |
| 8 | VCC | Alimentação de 3,3V |
Normalmente são utilizados o GPIO0 e o GPIO2. O GPIO1 e GPIO3 são usados na gravação “in-circuit”.
Caso não haja necessidade da programação “in-circuit” esses pinos poderão ser utilizados como GPIO’s normalmente
A versão ESP01 possui 512kB de memória flash, possui led “power” na cor vermelha, possui led na cor azul ligado ao pino “TX”.
A versão ESP01S possui 1MB de memória flash, não possui led de alimentação, possui led na cor azul ligado ao pino “GPIO2”.
Para programar, pressione a chave Flash (com retenção) colocando o GPIO0 em “0” durante a programação, pressione a chave
(sem retenção) Reset e faça a programação através de um conversor usb/serial.
Fabricado pela AI-THINKER, o módulo ESP12 tem o mínimo de componentes necessários para o seu
O microcontrolador com os demais componentes estão dentro de uma proteção metálica.
Possui memória flash de 4MB (32Mb/8)e um led ligado ao GPIO2 acionado em “LOW”.
Os pinos estão distribuídos conforme a figura a seguir:
Os GPIOS 6, 7, 8, 9, 10 e 11 não poderão ser usados porque estão ligados na memória flash. Sobrando 11
pinos que podem serem usados como IO’s ou funções específicas.
O módulo ESP12 possui os seguintes modelos:
Basicamente as diferenças entre os modelos são:
- O modelo ESP12E é a primeira verão e os modelos S e F são versões melhoradas do modelo E.
- Uma diferença visível entre o modelo ESP12S os modelos ESP12E e ESP12F, é que os mesmos possuem os pinos utilizados
na comunicação da memória flash interna, o ESP12S já não possui.
- Outra diferença visível entre os modelos são as antenas, os modelos S e F possuem uma antena com layout melhorado.
O modo de programação é semelhante ao ESP01, basta colocar o GPIO0 em nível lógico “0”, pressionar a tecla reset e fazer
a programação utilizando os pinos TXD0 e RXD0 através de um conversor usb/serial.
O esquemático a seguir é mais detalhado sobre o programador:
O esquemático do modelo E está descrito na figura a seguir:
É um módulo que integra o ESP12 com conversor usb-serial, regulador de 3,3V, chaves utilizadas na gravação e seus pinos estão disponíveis.
Sua pinagem está descrita a seguir:
Os pinos disponíveis para o usuário são os pinos que vão de D0 à D10 e o A0 juntamente com o EN, RST e alimentações. Os demais pinos
não poderão serem acessados. Na tabela seguinte podemos ver melhor a função de cada pino para o usuário:
| Pino | Função |
| D0 | GPIO16 / ligado ao led azul do módulo acionado em “low” |
| D1 | GPIO5 |
| D2 | GPIO4 |
| D3 | GPIO0 / Possui “pull-up” de 12k |
| D4 | GPIO2 / Possui “pull-up” de 12k, ligado ao led do ESP12 acionado em “low” |
| D5 | GPIO14 |
| D6 | GPIO12 |
| D7 | GPIO13 |
| D8 | GPIO15 / Possui “pull-don” de 12k |
| D9 | GPIO3 / RXD0 usado na programação, evitar uso |
| D10 | GPIO1 / TXD0 usado na programação, evitar uso |
| A0 | Convesor AD 10bits com tensão máxima de 3,3V. |
| RST | Reset, acionado em “low”, possui resistor de “pull-up” interno de 12k |
| EN | Habilita ou desabilita o chip, possui resistor de “pull-up” interno de 12k |
| VIN | É a tensão de 5V do conector USB |
| 3V3 | É a tensão de 3,3V vinda do regulador da placa |
| GND | Negativo da placa |
A chave RST, faz o reset do módulo iniciando-o, durante esse processo o resistor do ESP12 acenderá;
A chave FLASH, coloca o pino GPIO0 em “low” através de um resistor de 470R para a programação.
O esquemático completo do módulo NodeMCU verão 1.0 está descrito a seguir:
A tensão máxima na entrada ADC do ESP12 é de 1V. No módulo possui um divisor resistivo que reduz a
tensão de 3,2V para 1V. O pino A0 está ligado na entrada do divisor de tensão.
O circuito a seguir é um programador que pode programar tanto módulos ESP01 e ESP12 utilizando FTDI:
| GPIO# | Function |
| 0 | None |
| 1 | None |
| 2 | None |
| 3 | Button1 |
| 4 | BL0937CF |
| 5 | HLWBL CF1 |
| 9 | None |
| 10 | None |
| 12 | HLWBL SEL |
| 13 | Led1 |
| 14 | Relay1 |
| 15 | None |
| 16 | None |
| FLAG | None |