Microcontrolador ESP8266 e módulos ESP


Índice:

Introdução

Principais características

Modos de boot

Módulos ESP01 e ESP01S

Diferenças entre o ESP01 e ESP01S

Programador para o ESP01/S

Esquemático do módulo ESP01-S

Módulo ESP12E/S/F

Programador para o ESP12

NodeMCU

Programador para ESP01 e ESP12 com FTDI

Anexo I - GPIO’s utilizados na tomada inteligente modelo Tuya


Introdução

O microcontrolador ESP8266EX mais chamado de ESP8266 é fabricado pela empresa tensilica.


Principais características

- 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.


Modos de boot

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:



Módulos ESP01 e ESP01S

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


Diferenças entre o ESP01 e ESP01S

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”.


Programador para o ESP01/S

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.


Esquemático do módulo ESP01-S


Módulo ESP12E/S/F

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.


Programador para o ESP12


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:



NodeMCU

É 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.

Programador para ESP01 e ESP12 com FTDI


O circuito a seguir é um programador que pode programar tanto módulos ESP01 e ESP12 utilizando FTDI:


Anexo I - GPIO’s utilizados na tomada inteligente modelo Tuya


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