Pinagem do ESP8266
O ESP8266 tem a vantagem de oferecer uma quantidade considerável de pinos GPIO para a sua necessidade. No entanto, é fundamental prestar muita atenção aos detalhes da pinagem. Nem todos os pinos GPIO do ESP8266 são seguros para uso.
É importante mencionar que a referência de pinagem apresentada abaixo se refere à placa de desenvolvimento ESP8266 NodeMCU de 30 pinos, amplamente utilizada.

Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Periféricos e E/S do ESP8266
O ESP8266 NodeMCU possui um total de 17 pinos GPIO distribuídos nos dois lados da placa de desenvolvimento por meio de barras de pinos. Esses pinos são versáteis e podem receber várias funções de periféricos, incluindo:
- 9 x Pinos de entrada/saída digital:
- 1 x Canal ADC: Oferece um único canal com ADC SAR de 10 bits de precisão.
- 2 x Interfaces UART: Possui duas interfaces UART com suporte a controle de fluxo.
- 4 x Saídas PWM: Oferece quatro pinos PWM para regular aspectos como a velocidade de um motor ou o brilho de um LED.
- 2 x SPI: Equipado com duas interfaces SPI para conectar diversos sensores e periféricos.
- 1 x I2C: Incorpora uma interface I2C para conexão com uma variedade de sensores e periféricos.
- 1 x I2S: Inclui uma interface I2S para adicionar som ao seu projeto.
Pinagem do ESP8266
O ESP8266 NodeMCU possui um total de 30 pinos, organizados para facilitar o uso. Veja o diagrama de pinagem abaixo para conhecer o layout:

Agora, vamos conhecer os pinos individuais do ESP8266 e descobrir suas funções específicas.
Pinos de Entrada/Saída Digital
Entre os 30 pinos da placa ESP8266 NodeMCU, você pode usar 9 pinos para entrada/saída digital. Entre esses 9 pinos, 5 pinos são seguros para uso e os outros 4 pinos também podem ser usados como entrada/saída digital, mas com cuidado.
Dentro dos 30 pinos da placa ESP8266 NodeMCU, 9 pinos podem ser usados para entrada/saída digital. Em detalhes:
- 5 pinos são seguros para uso como pinos de entrada/saída digital
- 4 pinos também podem ser usados como pinos de entrada/saída digital, mas exigem um manuseio cuidadoso.
- Todos os 9 pinos podem ser configurados com pull-up ou pull-down interno (no chip), ou ajustados para alta impedância.
A tabela abaixo mostra quais pinos são seguros para uso e quais pinos devem ser usados com cautela.
| GPIO | Rótulo do Pino | Seguro para usar? | Motivo |
|---|---|---|---|
| GPIO16 | D0 | HIGH na inicialização, usado para acordar do deep sleep | |
| GPIO5 | D1 | ||
| GPIO4 | D2 | ||
| GPIO0 | D3 | conectado ao botão FLASH, a inicialização falha se for puxado para LOW. Resistor de pull-up externo de 10k na placa | |
| GPIO2 | D4 | HIGH na inicialização, a inicialização falha se for puxado para LOW. Resistor de pull-up externo de 10k na placa | |
| GPIO14 | D5 | ||
| GPIO12 | D6 | ||
| GPIO13 | D7 | ||
| GPIO15 | D8 | Necessário para a inicialização, a inicialização falha se for puxado para HIGH. Resistor de pull-down externo de 10k na placa | |
| GPIO3 | RX | Pino RX, usado para gravação e depuração | |
| GPIO1 | TX | Pino TX, usado para gravação e depuração | |
| GPIO6 | CLK | Conectado à memória Flash | |
| GPIO7 | SDO | Conectado à memória Flash | |
| GPIO11 | CMD | Conectado à memória Flash | |
| GPIO8 | SD1 | Conectado à memória Flash | |
| GPIO9 | SD2 | Conectado à memória Flash | |
| GPIO10 | SD3 | Conectado à memória Flash | |
| ADC0 | A0 | Pode ser usado somente como pino de entrada analógica. |
| Legenda | |
|---|---|
| Estes são os seus pinos de maior prioridade, absolutamente seguros para uso. Nenhuma preocupação aqui. | |
| Preste muita atenção, pois o comportamento deles, principalmente durante a inicialização, pode ser imprevisível. Preste atenção também aos resistores de pull-up/pull-down externos que ficam na placa. Use-os somente quando for absolutamente necessário. | |
| Estes pinos NÃO devem ser usados como pinos de entrada/saída digital. |
A imagem abaixo mostra quais pinos GPIO podem ser usados como pinos de entrada/saída digital.

Como programar os pinos de entrada/saída digital do ESP8266.
Você pode usar as funções a seguir para manipular os pinos de entrada/saída digital do ESP8266.
Observe que você precisa usar o rótulo do pino no código. Por exemplo, o pino GPIO5 (D1):
Exemplos de uso do pino de entrada digital do ESP8266:
Exemplos de uso do pino de saída digital do ESP8266:
Pinos ADC
O ESP8266 vem equipado com um conversor analógico-digital (ADC) de 10 bits de precisão, que permite distinguir 1024 (2^10) níveis analógicos diferentes. Basicamente, ele converte tensões de entrada na faixa de 0 a 3,3V (tensão de operação) em valores inteiros de 0 a 1024. Consequentemente, essa configuração resulta em uma resolução de 3,3 volts divididos por 1024 unidades, o equivalente a 0,0032 volts (3,2 mV) por unidade.

Exemplo de código usando o ADC no ESP8266:
Exemplos de sensores analógicos que usam o pino A0 do ESP8266:
Pinos SPI
O ESP8266 possui dois SPIs (SPI e HSPI) nos modos escravo e mestre. Esses SPIs também oferecem os recursos gerais de SPI listados abaixo:
- 4 modos de temporização para a transferência no formato SPI
- Até 80 MHz e os clocks divididos de 80 MHz
- FIFO de até 64 bytes

Exemplos de uso dos pinos SPI do ESP8266:
Pinos I2C
O ESP8266 não possui pinos I2C integrados, mas você ainda pode fazê-lo funcionar por meio de 'bitbanging'. Ele tem bom desempenho, e o ESP8266 é rápido o bastante para acompanhar o desempenho esperado do Arduino.
Por padrão, GPIO4 (SDA) e GPIO5 (SCL) são configurados como pinos I2C para simplificar a vida de quem usa códigos, bibliotecas e sketches existentes do Arduino.
No entanto, você tem a liberdade de escolher quaisquer outros dois pinos GPIO para o I2C usando wire.begin(SDA, SCL) no Arduino IDE.

Exemplos de uso dos pinos I2C do ESP8266:
Pinos UART
O ESP8266 possui duas interfaces UART, UART0 e UART2, que permitem comunicação assíncrona (RS232 e RS485) em velocidades impressionantes de até 4,5 Mbps. Essa capacidade as torna adequadas para aplicações de transferência de dados em alta velocidade.
- A UART0 (pinos TXD0, RXD0, RST0 e CTS0) é usada para comunicação.
- A UART1 (pino TXD1) possui somente um sinal de transmissão de dados e normalmente é usada para imprimir logs.

RXD0 e TXD0 servem como pinos de controle serial e de bootloading do módulo ESP, tendo um papel fundamental na comunicação com o módulo. Eles são especialmente importantes durante o processo de bootloading. Portanto, tenha cuidado ao usá-los, pois eles são conectados ao conversor USB-serial e, por isso, recebem o tráfego USB.
Pinos PWM
Todos os pinos GPIO do ESP8266, de GPIO0 a GPIO15, são programáveis para gerar saídas com modulação por largura de pulso (PWM).
O sinal PWM no ESP8266 tem resolução de 10 bits, oferecendo controle preciso da saída. Além disso, a faixa de frequência do PWM é personalizável, variando de 1000 μs a 10000 μs, o equivalente a uma faixa de frequência flexível entre 100 Hz e 1 kHz. Essa adaptabilidade o torna adequado para uma ampla gama de aplicações que exigem configurações de PWM variadas.
Pinos de Alimentação
- O pino VIN oferece uma opção prática para alimentar diretamente o ESP8266 e seus periféricos quando recebe uma fonte de 5V regulada.
- O pino 3V3 serve como a saída do regulador de tensão da placa, capaz de fornecer substanciais 600mA. Isso o torna uma fonte confiável para alimentar dispositivos e componentes conectados.
- GND funciona como o pino de terra, estabelecendo o ponto de referência elétrica para o ESP8266 e os dispositivos conectados. Ele garante um terra comum para o sistema, mantendo conexões elétricas estáveis e adequadas.
Pinos de Interrupção
Todos os GPIOs (General Purpose Input/Output) do ESP8266, com exceção do GPIO16, podem ser configurados como interrupção.
Isso significa que cada GPIO, de GPIO0 a GPIO15, pode ser configurado para disparar uma interrupção, permitindo que o ESP8266 responda a eventos específicos ou a mudanças nos estados de entrada. O GPIO16, porém, não oferece suporte a essa configuração de interrupção. Essa flexibilidade no uso de interrupções aumenta a versatilidade do ESP8266 no tratamento de eventos em tempo real e na interação com dispositivos externos.
Pinos SDIO
O ESP8266 é equipado com um único SDIO (Secure Digital Input/Output Interface) escravo, projetado para conectar cartões SD. Ele oferece suporte ao SDIO v1.1 em 4 bits a 25 MHz e ao SDIO v2.0 em 4 bits a 50 MHz.
Esse recurso permite a integração perfeita de cartões SD ao ESP8266, oferecendo transferência de dados em alta velocidade e compatibilidade com diferentes versões do SDIO. Seja usando o SDIO v1.1 ou o v2.0, o ESP8266 oferece versatilidade para conectar e acessar dados de cartões SD com eficiência.
Pinos de Controle
- O pino EN (também conhecido como CH_PD ou Chip Power Down) funciona como o pino de habilitação do ESP8266 e é mantido em nível alto por padrão. Quando está em HIGH, o chip fica habilitado, permitindo a operação normal. Por outro lado, quando é puxado para LOW, o chip fica desabilitado, sendo efetivamente desligado.
- O pino RST funciona como o pino de reset do ESP8266 e é mantido em nível alto por padrão. Quando é puxado brevemente para o terra, ele dispara um reset no ESP8266, de forma semelhante a pressionar o botão RST da placa.
- O pino FLASH é utilizado pelo ESP8266 para determinar se deve inicializar no bootloader. Manter o pino em nível baixo durante a energização inicia o processo de bootloading, de forma semelhante a pressionar o botão FLASH da placa.
- O pino WAKE é empregado para acordar o ESP8266 do modo deep sleep, permitindo que o dispositivo retome a operação normal depois de ficar em um estado de baixo consumo.