Componentes · 10 min de leitura

Guia do NodeMCU ESP8266: pinagem, configuração na Arduino IDE e servidor web

O que é o NodeMCU ESP8266? Correspondência dos pinos D1–D8 com os GPIOs, configuração na Arduino IDE, Wi-Fi, um servidor web que liga um LED, o limite de 3,3 V e as diferenças em relação ao ESP32.

O NodeMCU é uma placa de desenvolvimento acessível que junta o chip ESP8266, com Wi-Fi, a uma conexão USB, um regulador de 3,3 V e pinos que encaixam bem na protoboard. Você o programa com os mesmos comandos que já conhece da Arduino IDE e, sozinho, ele consegue entrar na rede da sua casa e servir uma página web que você abre no celular. Se você quer colocar um sensor de temperatura na internet, ligar um relé pelo celular ou controlar uma fita de LED em casa, o NodeMCU ESP8266 é um dos pontos de partida mais baratos.

Neste guia você vai ver passo a passo as especificações do NodeMCU, a confusa correspondência entre os pinos D1–D8 e os GPIOs, quais pinos afetam a inicialização da placa, a configuração na Arduino IDE, a conexão ao Wi-Fi e um servidor web que liga um LED pelo celular. Nas últimas seções você encontra as diferenças entre o ESP8266 e o ESP32 e soluções para os erros mais comuns.

Placa de desenvolvimento NodeMCU V3 ESP8266
NodeMCU V3 (LoLin): o módulo ESP-12E, com blindagem metálica, abriga o chip ESP8266 e 4 MB de memória flash; a placa traz um chip USB-serial CH340, um regulador de 3,3 V e os botões RST e FLASH.

O que são o ESP8266 e o NodeMCU?

O ESP8266 é um microcontrolador de 32 bits com Wi-Fi embutido que a Espressif lançou em 2014. Graças ao preço muito baixo, ele popularizou os projetos com Wi-Fi no mundo maker. O nome NodeMCU se referia originalmente a um firmware baseado em Lua escrito para esse chip e à sua placa de desenvolvimento de código aberto; hoje é usado como nome genérico para placas construídas em torno do módulo ESP-12E. Mas você raramente vai programá-lo em Lua; a maioria das pessoas usa a Arduino IDE ou o MicroPython.

CaracterísticaValor
ChipESP8266EX, Tensilica L106, 32 bits
Velocidade de clock80 MHz (pode subir para 160 MHz)
RAMCerca de 80 KB de RAM para o usuário (sobram 40–50 KB para o seu sketch com o Wi-Fi conectado)
Memória flash4 MB (módulo ESP-12E)
Wi-Fi802.11 b/g/n, só 2,4 GHz; estação, ponto de acesso ou os dois
BluetoothNão tem
GPIO utilizáveisCerca de 11 (D0–D8, RX, TX)
Entrada analógica1 canal (A0), 10 bits, cerca de 0–3,2 V na placa
PWMPor software, 1 kHz por padrão, faixa de 0–255
Tensão de operação3,3 V (alimentada com 5 V pela USB ou pelo VIN)
Corrente70–80 mA em média com o Wi-Fi conectado, até 170 mA durante a transmissão

Há duas versões comuns do NodeMCU no mercado. A V2 (Amica) é estreita, usa um chip USB-serial CP2102 e deixa uma fileira de furos livres de cada lado quando encaixada na protoboard. A V3 (LoLin) é mais larga, usa um chip CH340G e cobre quase toda uma protoboard comum, então colocar duas protoboards lado a lado facilita muito o trabalho com uma V3. As duas versões têm a mesma pinagem e rodam o mesmo código. Se você quer uma placa menor, a Wemos D1 Mini traz o mesmo chip e roda os mesmos sketches.

Pinagem do NodeMCU: correspondência entre D1–D8 e os GPIOs

O mais confuso no NodeMCU é que as marcações D impressas na placa não são os números GPIO reais do chip. Por exemplo, o pino marcado D1 é na verdade o GPIO 5. Quando você seleciona a placa NodeMCU na Arduino IDE, pode escrever D1 no código e o compilador o transforma em 5 automaticamente; mas, se você escrever digitalWrite(1, HIGH), estará acionando o GPIO 1, que é o pino TX da porta serial. No MicroPython você sempre usa o número do GPIO.

Marcação na placaGPIOFunção extraObservação de uso
D0GPIO 16Despertar do deep sleepSem suporte a interrupção; ligado ao RST para o deep sleep
D1GPIO 5I2C SCLSeguro, uso geral
D2GPIO 4I2C SDASeguro, uso geral
D3GPIO 0Botão FLASHSe estiver em LOW na inicialização, a placa entra no modo de programação
D4GPIO 2LED da placa (lógica invertida), TX1Precisa estar em HIGH na inicialização
D5GPIO 14SPI SCKSeguro, uso geral
D6GPIO 12SPI MISOSeguro, uso geral
D7GPIO 13SPI MOSISeguro, uso geral
D8GPIO 15SPI CSPrecisa estar em LOW na inicialização; a placa tem um resistor de pull-down
RXGPIO 3UART RXDeixe livre enquanto usa o Monitor Serial
TXGPIO 1UART TXEnvia mensagens de inicialização ao ligar
A0ADC0Entrada analógicaSó leitura analógica, cerca de 0–3,2 V
SD2, SD3GPIO 9, 10Ligados à memória flashNão use

Pela tabela, os pinos que você pode usar sem preocupação nos primeiros projetos são D1, D2, D5, D6 e D7. D3, D4 e D8 são os pinos que definem o modo de inicialização da placa: quando recebe alimentação, o ESP8266 confere os níveis do GPIO 0, do GPIO 2 e do GPIO 15 e, para uma inicialização normal, espera que o GPIO 0 e o GPIO 2 estejam em HIGH e o GPIO 15 em LOW. Se um botão, relé ou sensor ligado a esses pinos muda o nível na partida, a placa entra no modo de carregamento em vez de rodar o seu programa, ou nem inicia. D3 e D4 ainda podem ser usados para botões, porque o botão não está apertado na inicialização, mas mantenha longe desses pinos os módulos cuja saída fica em LOW.

Os pinos do ESP8266 trabalham em 3,3 V e oficialmente não toleram 5 V; você não deve puxar mais do que uns 12 mA de um pino. Não ligue direto um sensor com saída de 5 V (por exemplo, o pino ECHO do HC-SR04); coloque um divisor de tensão ou um conversor de nível no meio. Nunca coloque 5 V no pino 3V3; alimente a placa com 5 V pela USB ou pelo pino VIN.

O pino A0 também é um caso especial: a entrada analógica do chip ESP8266 só mede 0–1 V, mas, graças ao divisor de tensão de 220 kΩ e 100 kΩ na placa NodeMCU, você pode colocar cerca de 0–3,2 V no A0, e o analogRead(A0) retorna essa faixa como 0–1023. Como só há uma entrada analógica, você vai precisar de um ADC I2C como o ADS1115 se quiser usar vários sensores analógicos. Os pinos D1 e D2 são o barramento I2C padrão; o básico do I2C está em O que é I2C?.

Configurando o ESP8266 na Arduino IDE

  1. Na Arduino IDE, abra Arquivo > Preferências e adicione https://arduino.esp8266.com/stable/package_esp8266com_index.json no campo “URLs do Gerenciador de Placas Adicionais”.
  2. Abra Ferramentas > Placa > Gerenciador de Placas, busque esp8266 e instale o pacote ESP8266 Community.
  3. No menu Ferramentas > Placa, selecione NodeMCU 1.0 (ESP-12E Module). Se você usa uma Wemos D1 Mini, escolha LOLIN(WEMOS) D1 R2 & mini.
  4. Conecte a placa com um cabo de dados e selecione a porta em Ferramentas > Porta. Se nenhuma porta aparecer, instale o driver CH340 para placas V3 ou o driver CP2102 para placas V2.
  5. Deixe o Upload Speed em 115200; quando os carregamentos estiverem funcionando bem, você pode subir para 921600 para acelerá-los.

Primeiro sketch: piscando o LED da placa

No NodeMCU há um LED azul no módulo ESP-12E ligado ao GPIO 2 (D4); as placas V2 (Amica) têm um segundo LED no D0. Esses LEDs usam lógica invertida: acendem quando o pino está em LOW e apagam quando está em HIGH. No core Arduino, a constante LED_BUILTIN já vem definida como 2:

C++ (Arduino IDE)
1// NodeMCU dahili LED'i: GPIO2 (D4), ters mantık / onboard LED: GPIO2 (D4), inverted logic
2
3void setup() {
4  pinMode(LED_BUILTIN, OUTPUT);
5}
6
7void loop() {
8  digitalWrite(LED_BUILTIN, LOW);    // LOW = yanar / LOW = on
9  delay(500);
10  digitalWrite(LED_BUILTIN, HIGH);   // HIGH = söner / HIGH = off
11  delay(500);
12}
Ver caracteres estranhos no Monitor Serial depois de carregar é normal: o ESP8266 envia as mensagens de inicialização a 74880 baud. Se você colocar o Monitor Serial em 74880, consegue ler a causa do reset e o modo de inicialização, enquanto as suas próprias mensagens aparecem na velocidade escolhida no código (por exemplo, 115200).

Conectando ao Wi-Fi

O Wi-Fi é o ponto forte do ESP8266. O sketch abaixo conecta a placa à rede da sua casa no modo estação e mostra no Monitor Serial o endereço IP dado pelo roteador e a intensidade do sinal. Se não conseguir conectar em 20 segundos, ele para de esperar e mostra um aviso. Troque o nome da rede e a senha pelos seus e abra o Monitor Serial em 115200 baud:

C++ (Arduino IDE)
1#include <ESP8266WiFi.h>
2
3const char* ssid = "AgAdi";          // Wi-Fi adın / your Wi-Fi name
4const char* password = "Sifre123";   // Wi-Fi şifren / your Wi-Fi password
5
6void setup() {
7  Serial.begin(115200);
8  Serial.println();
9  WiFi.mode(WIFI_STA);               // istemci modu / station mode
10  WiFi.begin(ssid, password);
11  Serial.print("Baglaniyor / connecting");
12  unsigned long start = millis();
13  while (WiFi.status() != WL_CONNECTED) {
14    delay(500);
15    Serial.print('.');
16    if (millis() - start > 20000) {  // 20 sn'de bağlanamazsa / give up after 20 s
17      Serial.println("\nBaglanamadi, ag adini ve sifreyi kontrol et / failed, check SSID and password");
18      return;
19    }
20  }
21  Serial.println();
22  Serial.print("IP: ");
23  Serial.println(WiFi.localIP());    // modemin verdiği adres / address given by the router
24  Serial.print("Sinyal / RSSI: ");
25  Serial.print(WiFi.RSSI());         // -50 iyi, -80 zayıf / -50 good, -80 weak
26  Serial.println(" dBm");
27}
28
29void loop() {
30}
Valor de RSSIQualidade do sinalO que esperar
-30 a -50 dBmExcelenteConexão estável e rápida
-50 a -67 dBmBomSuficiente para um servidor web e dados de sensores
-67 a -80 dBmFracoQuedas ocasionais, páginas lentas para carregar
Abaixo de -80 dBmMuito fracoPode nem conectar; aproxime a placa do roteador
O ESP8266 só se conecta a redes de 2,4 GHz. Se o seu roteador transmite as bandas de 2,4 e 5 GHz com o mesmo nome e a placa não conecta, dar à banda de 2,4 GHz um nome de rede próprio costuma resolver. Redes corporativas (WPA2-Enterprise) e redes de visitantes com página de login no navegador não funcionam sem código extra.

Controlando um LED pelo celular: um servidor web simples

Agora vamos transformar o NodeMCU em um pequeno servidor web. Ligue um LED ao pino D1 (GPIO 5) por um resistor de 220 Ω: a perna longa do LED vai ao D1 pelo resistor, e a perna curta vai ao GND. Para um LED vermelho, esse resistor dá uma corrente de (3,3 V − 2 V) / 220 Ω ≈ 6 mA, bem abaixo do limite do pino; para calcular o valor para o seu LED, use a calculadora de resistor para LED. Depois de carregar, abra o endereço mostrado no Monitor Serial no navegador de um celular conectado ao mesmo Wi-Fi.

C++ (Arduino IDE)
1#include <ESP8266WiFi.h>
2#include <ESP8266WebServer.h>
3#include <ESP8266mDNS.h>
4
5const char* ssid = "AgAdi";          // Wi-Fi adın / your Wi-Fi name
6const char* password = "Sifre123";   // Wi-Fi şifren / your Wi-Fi password
7
8const int LED_PIN = D1;              // GPIO5, 220 ohm direnç ile LED / LED through a 220 ohm resistor
9bool ledOn = false;
10
11ESP8266WebServer server(80);
12
13void handleRoot() {
14  String html = "<!DOCTYPE html><html><head><meta charset='utf-8'>"
15                "<meta name='viewport' content='width=device-width,initial-scale=1'>"
16                "<title>NodeMCU</title></head>"
17                "<body style='font-family:sans-serif;text-align:center'>"
18                "<h1>NodeMCU LED</h1><p>LED: <b>";
19  html += ledOn ? "ACIK / ON" : "KAPALI / OFF";
20  html += "</b></p><p>A0: ";
21  html += analogRead(A0);            // 0-1023 arası analog değer / analog value 0-1023
22  html += "</p><p><a href='/on'><button>AC / ON</button></a> "
23          "<a href='/off'><button>KAPAT / OFF</button></a></p></body></html>";
24  server.send(200, "text/html", html);
25}
26
27void setLed(bool on) {
28  ledOn = on;
29  digitalWrite(LED_PIN, on ? HIGH : LOW);
30  server.sendHeader("Location", "/");   // ana sayfaya yönlendir / redirect to the main page
31  server.send(303, "text/plain", "");
32}
33
34void setup() {
35  pinMode(LED_PIN, OUTPUT);
36  digitalWrite(LED_PIN, LOW);
37  Serial.begin(115200);
38  WiFi.mode(WIFI_STA);
39  WiFi.begin(ssid, password);
40  while (WiFi.status() != WL_CONNECTED) {
41    delay(500);
42    Serial.print('.');
43  }
44  Serial.println();
45  Serial.print("Tarayicida ac / open in browser: http://");
46  Serial.println(WiFi.localIP());
47
48  if (MDNS.begin("nodemcu")) {       // http://nodemcu.local adresi / address http://nodemcu.local
49    MDNS.addService("http", "tcp", 80);
50  }
51
52  server.on("/", handleRoot);
53  server.on("/on", []() { setLed(true); });
54  server.on("/off", []() { setLed(false); });
55  server.onNotFound([]() { server.send(404, "text/plain", "Bulunamadi / not found"); });
56  server.begin();
57}
58
59void loop() {
60  server.handleClient();             // gelen istekleri işle / handle incoming requests
61  MDNS.update();
62}
Parte do códigoO que faz
ESP8266WebServer server(80)Cria um servidor na porta 80 (HTTP)
server.on("/on", ...)Acende o LED quando o navegador pede /on
sendHeader("Location", "/") e send(303)Redireciona o navegador de volta para a página principal depois da ação, para que atualizar a página não envie o comando de novo
analogRead(A0)Mostra na página o valor do A0; você pode ligar ali um LDR ou um potenciômetro
MDNS.begin("nodemcu")Permite acessar o dispositivo pelo nome nodemcu.local em vez do IP
server.handleClient()Precisa ser chamado sem parar no loop; ele atende as requisições que chegam

Se a página não abrir, confira se o celular está conectado à mesma rede Wi-Fi que o NodeMCU, e não a uma rede de visitantes ou aos dados móveis. O nome nodemcu.local costuma funcionar em computadores e iPhones; alguns celulares Android não têm suporte a mDNS, e aí você vai precisar do endereço IP. Se você ligar um módulo relé no lugar do LED, o mesmo código permite controlar uma lâmpada de verdade; veja os detalhes em O que é módulo relé?.

Modo ponto de acesso (AP): conectando sem roteador

Se não houver Wi-Fi por perto, o NodeMCU pode criar a própria rede. No modo ponto de acesso, você conecta o celular direto à rede NodeMCU-AP, e a placa costuma responder em 192.168.4.1. Esse modo é ideal para um sistema de rega no jardim ou um aparelho de medição usado em campo. Para juntar o servidor web acima com esse modo, basta usar as linhas softAP no lugar das linhas WiFi.begin; o modo WIFI_AP_STA assume os dois papéis ao mesmo tempo. A senha precisa ter pelo menos 8 caracteres, senão a rede não é criada.

C++ (Arduino IDE)
1#include <ESP8266WiFi.h>
2
3void setup() {
4  Serial.begin(115200);
5  WiFi.mode(WIFI_AP);                            // kendi ağını kur / create its own network
6  bool ok = WiFi.softAP("NodeMCU-AP", "12345678"); // ad ve en az 8 karakter şifre / name and 8+ char password
7  Serial.println(ok ? "AP hazir / AP ready" : "AP hatasi / AP error");
8  Serial.print("IP: ");
9  Serial.println(WiFi.softAPIP());               // genellikle 192.168.4.1 / usually 192.168.4.1
10}
11
12void loop() {
13  Serial.print("Bagli cihaz / stations: ");
14  Serial.println(WiFi.softAPgetStationNum());
15  delay(3000);
16}

ESP8266 com MicroPython

Além da linguagem do Arduino, o NodeMCU também pode ser programado em MicroPython. Depois de gravar o firmware do MicroPython na placa com o esptool, você roda código Python direto de um editor como o Thonny. Como a memória do ESP8266 é limitada, você pode esbarrar em erros de memória com programas grandes em MicroPython, mas para projetos simples de Wi-Fi e sensores ele é muito prático. Repare que no MicroPython você escreve como número do pino o número do GPIO, e não a marcação D:

MicroPython
1import network, time
2from machine import Pin
3
4led = Pin(2, Pin.OUT)                     # D4 = GPIO2, dahili LED / onboard LED
5wlan = network.WLAN(network.STA_IF)
6wlan.active(True)
7wlan.connect("AgAdi", "Sifre123")         # Wi-Fi adı ve şifresi / Wi-Fi name and password
8
9while not wlan.isconnected():
10    time.sleep(0.5)
11print("IP:", wlan.ifconfig()[0])
12
13while True:
14    led.value(not led.value())            # ters mantık: 0 = yanar / inverted: 0 = on
15    time.sleep(0.5)

ESP8266 ou ESP32?

CaracterísticaESP8266 (NodeMCU)ESP32 (DevKit)
ProcessadorUm núcleo, 80/160 MHzDois núcleos, 240 MHz
RAMCerca de 80 KB de RAM para o usuário520 KB
Wi-Fi802.11 b/g/n, 2,4 GHz802.11 b/g/n, 2,4 GHz
BluetoothNão temClássico e BLE
GPIOCerca de 11Cerca de 34 (alguns só de entrada)
Entrada analógica1 canal, 10 bits18 canais, 12 bits
PWMPor softwarePWM em hardware de 16 canais (LEDC)
I2C e UARTI2C por software, 1 UART completa mais uma UART1 só de TX2 I2C em hardware, 3 UARTs
Pinos de toque e DACNão tem10 pinos de toque, 2 DACs
PreçoMais baratoUm pouco mais caro

Resumindo: o ESP8266 ainda dá conta de sobra de tarefas como enviar os dados de um sensor para a internet, ligar um relé pelo celular ou servir uma página web simples, e é mais barato. Para projetos novos que precisam de Bluetooth, muitas entradas analógicas, câmera, processamento rápido ou muitas tarefas ao mesmo tempo, o ESP32 é a melhor escolha. O código migra com facilidade: trocar ESP8266WiFi.h por WiFi.h, ESP8266WebServer.h por WebServer.h e ESP8266mDNS.h por ESPmDNS.h, apagar a linha MDNS.update() (o ESP32 não tem) e usar números de GPIO em vez de marcações da placa como D1 muitas vezes é tudo o que precisa. Para mais detalhes, veja O que é ESP32? e Arduino ou ESP32?.

Alimentação e deep sleep

O NodeMCU é alimentado com 5 V pela USB ou pelo pino VIN, e o regulador da placa baixa para 3,3 V. O pico de corrente de 170 mA durante a transmissão Wi-Fi pode causar uma queda de tensão em uma porta USB fraca ou em um cabo fino e fazer a placa reiniciar sozinha, então use um bom cabo e uma fonte que forneça pelo menos 1 A. Em projetos com bateria, o ESP.deepSleep() coloca o chip para dormir com cerca de 20 µA; para que ele acorde quando o timer acabar, você precisa ligar o pino D0 (GPIO 16) ao pino RST. Mas o chip USB-serial e o regulador da placa continuam puxando corrente enquanto ele dorme, então, para uma bateria de longa duração, um módulo ESP-12 avulso ou uma placa de baixo consumo dá resultados melhores. Para estimar a duração da bateria, use a calculadora de duração da bateria.

Ideias de projetos com o NodeMCU

  • Termômetro Wi-Fi: mostre a temperatura e a umidade medidas por um DHT11 em uma página que você abre no celular.
  • Tomada inteligente: ligue e desligue uma lâmpada com um módulo relé e um botão em uma página web.
  • Alerta de rega de plantas: ligue um sensor de umidade do solo no A0 e mostre um aviso na página quando a terra secar.
  • Fita de LED via Wi-Fi: escolha pelo celular a cor e o efeito de uma fita WS2812B.
  • Relógio pela internet: pegue a hora de um servidor NTP e mostre em um display LCD I2C.
  • Alarme de movimento: envie uma mensagem no Telegram quando um sensor PIR detectar movimento.

Erros comuns e como corrigir

SintomaCausa provávelSolução
Nenhuma porta apareceCabo só de carga ou driver faltandoUse um cabo de dados; instale o driver CH340 ou CP2102
“Failed to connect to ESP8266: Timed out waiting for packet header” (a placa não respondeu)A placa não conseguiu entrar no modo de carregamentoSegure o FLASH, aperte e solte o RST, solte o FLASH e inicie o carregamento de novo
A placa não inicia ou fica reiniciandoUm circuito no D3, D4 ou D8 altera os níveis de inicializaçãoMude esse circuito para pinos seguros como D5, D6 ou D7
Caracteres estranhos no Monitor SerialBaud rate diferenteSelecione a mesma velocidade do código; as mensagens de inicialização são a 74880 baud
Não conecta ao Wi-FiRede de 5 GHz, senha errada ou sinal fracoUse uma rede de 2,4 GHz, confira maiúsculas e minúsculas, olhe o RSSI
O LED não acende e o Monitor Serial fica mudoFoi escrito 1 em vez de D1 no código (GPIO 1 = TX)Use a marcação D1 ou o GPIO 5 no código
Erro “Soft WDT reset” (reinício pelo watchdog)Um laço dentro do loop() que demora demaisAdicione yield() ou delay(1) dentro de laços longos; os dois deixam rodar as tarefas de Wi-Fi em segundo plano e o watchdog
Se tiver problemas de conexão ao carregar, primeiro desconecte a placa do computador, remova tudo o que estiver ligado no D3, D4, D8 e RX e tente de novo. Um módulo nesses pinos pode impedir a placa de entrar no modo de carregamento na partida. Usar a porta USB do próprio computador em vez de um hub USB também reduz as quedas causadas por picos de consumo.

O NodeMCU ESP8266 é o jeito mais acessível de levar o que você aprendeu com o Arduino para o mundo sem fio: com poucas linhas de código ele entra na rede da sua casa e permite montar aparelhos que você controla pelo celular. No app BlueGrays você encontra projetos sem fio como conexão Wi-Fi, servidor web, WebSocket, relógio NTP e mDNS no ESP32, com esquemas do circuito e código passo a passo, e pode adaptar facilmente a mesma lógica ao seu NodeMCU.

Perguntas frequentes

NodeMCU e ESP8266 são a mesma coisa?

ESP8266 é o nome do chip Wi-Fi fabricado pela Espressif. O NodeMCU é uma placa de desenvolvimento que junta o módulo ESP-12E, que carrega esse chip, a uma conexão USB, um regulador e pinos que encaixam na protoboard. Resumindo: todo NodeMCU é uma placa ESP8266, mas nem toda placa ESP8266 é um NodeMCU; o ESP-01 e a Wemos D1 Mini usam o mesmo chip.

O NodeMCU funciona com 5 V?

A placa pode ser alimentada com 5 V pela USB ou pelo pino VIN, e o regulador baixa isso para 3,3 V. Mas os pinos GPIO trabalham em 3,3 V e oficialmente não toleram 5 V. Sinais de 5 V devem ser ligados por um divisor de tensão ou um conversor de nível.

Qual GPIO é o D1 no NodeMCU?

O D1 é o GPIO 5 e é o pino SCL padrão do I2C. Outras correspondências comuns são D2 = GPIO 4, D4 = GPIO 2, D5 = GPIO 14, D6 = GPIO 12, D7 = GPIO 13 e D8 = GPIO 15. Na Arduino IDE você pode escrever D1 direto no código; no MicroPython é preciso usar o número do GPIO.

O ESP8266 se conecta a Wi-Fi de 5 GHz?

Não, o ESP8266 só suporta redes 802.11 b/g/n na banda de 2,4 GHz. Confira se a banda de 2,4 GHz do roteador está ativada; se as duas bandas usam o mesmo nome, dar à banda de 2,4 GHz um nome de rede próprio muitas vezes resolve os problemas de conexão.

Qual é a diferença entre o NodeMCU V2 e o V3?

A V2 (Amica) é uma placa mais estreita, com chip USB-serial CP2102, e deixa furos livres dos dois lados da protoboard. A V3 (LoLin) é mais larga e usa um chip CH340G. Os pinos, o processador e o código são idênticos; as únicas diferenças são o tamanho e o driver USB que você precisa instalar.

O ESP8266 tem Bluetooth?

Não, o ESP8266 não tem hardware de Bluetooth; ele só suporta Wi-Fi. Para projetos que precisam de Bluetooth ou BLE, use um ESP32 ou adicione à sua placa um módulo Bluetooth separado como o HC-05.

Ver todos os projetos
LED piscando com ESP32
#103Iniciante

LED piscando com ESP32

Ensina o uso básico de uma saída GPIO no ESP32. Fazemos um LED piscar ligando e desligando um pino digital. É a versão para ESP32 do clássico projeto blink do Arduino UNO: os comandos básicos de blink no ambiente Arduino são os mesmos, mas a disposição dos pinos e os níveis de 3,3 V dos GPIOs do ESP32 diferem dos do Arduino UNO.

4.7(37)
99
LED integrado do ESP32 piscando
#106Iniciante

LED integrado do ESP32 piscando

Faça o LED azul integrado do ESP32 DevKit V1 piscar. Nenhum componente externo é necessário! O primeiro projeto para experimentar ao comprar um ESP32. GPIO 2 está conectado ao LED integrado.

4.8(29)
53
Conexão Wi-Fi STA com ESP32 e display LCD
#127Avançado

Conexão Wi-Fi STA com ESP32 e display LCD

Neste projeto, conectamos o ESP32 à rede Wi-Fi de casa no modo estação (STA), de forma segura e tolerante a falhas. Guardamos o SSID e a senha em um arquivo secrets.h separado para evitar que sejam expostos no Git, configuramos um mecanismo de reconexão automática e exibimos o nível de sinal RSSI e o endereço IP em um display LCD I2C. O LED integrado funciona como indicador de status. É um gerenciador de conexão pronto para uso em produção.

4.4(21)
34
Servidor web assíncrono com ESP32 (IP no LCD)
#129Avançado

Servidor web assíncrono com ESP32 (IP no LCD)

Neste projeto, transformamos o ESP32 em um servidor web assíncrono que você pode controlar pelo celular ou computador na mesma rede Wi-Fi. Com a biblioteca ESPAsyncWebServer, o servidor processa várias requisições ao mesmo tempo (ao contrário do WebServer.h tradicional, que bloqueia a execução ao processar uma requisição). Você poderá abrir o endereço IP do ESP32 no navegador e clicar nos botões ON/OFF (as rotas /on e /off) para ligar e desligar o LED conectado ao GPIO 5.

4.8(16)
26
Contador WebSocket com ESP32 (2 botões + LCD + web em tempo real)
#130Avançado
Premium

Contador WebSocket com ESP32 (2 botões + LCD + web em tempo real)

Neste projeto, dois botões conectados ao ESP32 (GPIO 5 aumenta, GPIO 4 diminui) alteram um contador. O valor é atualizado instantaneamente no LCD I2C 16x2 e, com o suporte a WebSocket do ESPAsyncWebServer, em todos os navegadores conectados, sem recarregar a página. Em vez de consultas periódicas por HTTP, usamos uma única conexão persistente, e o ESP32 envia o novo valor a todos com ws.textAll().

4.5(14)
23
ESP32 mDNS: acesso via bluegrays-esp.local (com display LCD)
#131Avançado
Premium

ESP32 mDNS: acesso via bluegrays-esp.local (com display LCD)

Neste projeto, adicionamos o serviço mDNS (Multicast DNS) ao ESP32 para acessar o dispositivo por um nome de host fácil de ler, como bluegrays-esp.local, em vez de um endereço IP. Mesmo que o IP atribuído pelo DHCP mude, você pode acessar o dispositivo pelo mesmo nome. Também executamos um pequeno servidor web no dispositivo para enviar comandos de controle do LED pelo navegador no endereço http://bluegrays-esp.local/.

4.8(14)
23
Hora exata pela internet com ESP32 e NTP
#128Avançado
Premium

Hora exata pela internet com ESP32 e NTP

O ESP32 se conecta ao Wi-Fi e obtém a hora exata com precisão de milissegundos de servidores NTP (Network Time Protocol). Com a função configTzTime(), o fuso horário configurado (TRT, UTC+3 neste exemplo) é aplicado automaticamente, e as mudanças nos países que adotam horário de verão são gerenciadas automaticamente por uma string POSIX TZ. A hora é exibida tanto no Monitor Serial quanto em um LCD I2C opcional.

4.5(13)
21
Atualização OTA no ESP32 — firmware sem fio (com display LCD)
#132Avançado
Premium

Atualização OTA no ESP32 — firmware sem fio (com display LCD)

Neste projeto, você aprende a carregar um novo firmware no ESP32 por Wi-Fi, sem cabo USB. Com a biblioteca ArduinoOTA, o ESP32 fica visível na rede e aparece automaticamente como bluegrays-ota na aba "Porta de rede" do Arduino IDE. A primeira carga é feita por USB, e todas as atualizações seguintes são sem fio — um recurso essencial para dispositivos em campo. O LCD I2C mostra o estado do Wi-Fi, o IP, o nome do host, a porcentagem de envio por OTA e as mensagens de erro em turco e inglês.

4.6(14)
22