Configuração WiFi Automática 📶
Configure o WiFi do ESP32 pelo celular, sem precisar alterar o código!
😤 O Problema que vamos resolver
Toda vez que você muda de rede WiFi (casa, escola, trabalho), precisa:
- Abrir o código no Arduino IDE
- Alterar SSID e SENHA
- Recompilar e fazer upload
Isso é impraticável para um produto real!
✨ A Solução: WiFiManager
Com a biblioteca WiFiManager, o ESP32 cria um portal de configuração. O usuário conecta pelo celular e escolhe a rede WiFi desejada!
🔄 Como Funciona?
ESP32 liga sem WiFi configurado
Primeira vez ou credenciais apagadas
ESP32 vira um "roteador" temporário
Cria a rede "ESP32-Config" (Access Point)
Você conecta o celular nessa rede
Abre automaticamente a página de configuração
Escolhe a rede e digita a senha
ESP32 salva e conecta automaticamente!
📚 Conceitos Novos
Access Point (AP)
O ESP32 pode funcionar como um "mini roteador", criando sua própria rede WiFi onde outros dispositivos podem se conectar.
Captive Portal
Página que abre automaticamente quando você conecta em uma rede. É assim que funciona o login em WiFi de aeroportos e shoppings!
Modo STA vs AP
STA (Station): ESP32 conecta em uma rede existente.
AP: ESP32 cria sua própria rede.
Preferences (Memória)
O WiFiManager salva as credenciais na memória flash do ESP32. Mesmo desligando, ele lembra do WiFi configurado!
📦 Instalando a Biblioteca
-
1
Abra o Arduino IDE
-
2
Vá em
Sketch → Include Library → Manage Libraries -
3
Pesquise por
WiFiManager -
4
Instale a versão do autor
tzapuWiFiManager by tzapu (versão mais recente)
Código ESP32 - WiFiManager Básico
Teste primeiro este código simples
/************************************************
* WIFI MANAGER - CONFIGURAÇÃO AUTOMÁTICA
*
* Este código cria um portal de configuração
* onde você pode escolher a rede WiFi pelo celular!
***********************************************/
#include <WiFiManager.h>
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("Iniciando WiFiManager...");
// Cria o objeto WiFiManager
WiFiManager wm;
// Descomente a linha abaixo para resetar configurações salvas
// wm.resetSettings();
// Tenta conectar, se falhar abre o portal
// Parâmetros: nome da rede, senha do portal (mínimo 8 caracteres)
bool conectou = wm.autoConnect("ESP32-Config", "12345678");
if (conectou) {
Serial.println("✅ Conectado ao WiFi!");
Serial.print("IP: ");
Serial.println(WiFi.localIP());
} else {
Serial.println("❌ Falha na conexão!");
ESP.restart(); // Reinicia e tenta novamente
}
}
void loop() {
// Seu código aqui...
Serial.println("Sistema rodando!");
delay(5000);
}
📖 Explicação do Código
WiFiManager wm;
Cria o objeto que gerencia todo o processo.
wm.autoConnect("ESP32-Config", "12345678");
Tenta conectar ao WiFi salvo. Se não conseguir, cria a rede "ESP32-Config" com senha "12345678" e abre o portal de configuração.
wm.resetSettings();
Apaga as credenciais salvas. Útil para forçar a abertura do portal!
🧪 Testando o Portal
-
1
Faça upload do código para o ESP32
Abra o Monitor Serial (115200 baud)
-
2
No celular, vá em Configurações WiFi
Procure a rede "ESP32-Config"
-
3
Conecte usando a senha "12345678"
O portal deve abrir automaticamente
-
4
Clique em "Configure WiFi"
Escolha sua rede e digite a senha
-
5
Clique em "Save"
ESP32 vai reiniciar e conectar automaticamente! 🎉
💡 Dica: Se o portal não abrir automaticamente, acesse
192.168.4.1 no navegador do celular.
Código Avançado - Com Botão de Reset
Adiciona um botão físico para resetar o WiFi
Este código usa o botão da placa RoboCore (GPIO 4) para resetar as configurações WiFi. Segure por 3 segundos para abrir o portal novamente!
/************************************************
* WIFI MANAGER COM BOTÃO DE RESET
*
* Segure o botão por 3 segundos para resetar
* as configurações WiFi e abrir o portal!
***********************************************/
#include <WiFiManager.h>
const int PINO_BOTAO = 4; // Botão da placa RoboCore
const int PINO_LED = 2; // LED onboard
WiFiManager wm;
void setup() {
Serial.begin(115200);
pinMode(PINO_BOTAO, INPUT);
pinMode(PINO_LED, OUTPUT);
Serial.println("Iniciando...");
// Verifica se o botão está pressionado no boot
if (digitalRead(PINO_BOTAO) == LOW) {
Serial.println("⚠️ Botão pressionado! Resetando WiFi...");
wm.resetSettings();
delay(1000);
}
// LED pisca enquanto configura
digitalWrite(PINO_LED, HIGH);
// Timeout de 3 minutos para configurar
wm.setConfigPortalTimeout(180);
bool conectou = wm.autoConnect("ESP32-Config", "12345678");
if (conectou) {
Serial.println("✅ Conectado ao WiFi!");
Serial.print("IP: ");
Serial.println(WiFi.localIP());
digitalWrite(PINO_LED, LOW); // LED apaga = conectado
} else {
Serial.println("❌ Timeout! Reiniciando...");
ESP.restart();
}
}
void loop() {
// Verifica se o botão foi pressionado por 3 segundos
if (digitalRead(PINO_BOTAO) == LOW) {
unsigned long inicio = millis();
while (digitalRead(PINO_BOTAO) == LOW) {
if (millis() - inicio > 3000) {
Serial.println("🔄 Resetando WiFi...");
wm.resetSettings();
ESP.restart();
}
delay(100);
}
}
// Seu código principal aqui...
delay(100);
}
🔗 Usando nas Próximas Atividades
A partir da Atividade 9, todos os códigos ESP32 usarão o WiFiManager! Basta substituir a parte de conexão WiFi manual por:
void setup() {
WiFiManager wm;
wm.autoConnect("ESP32-Config");
// Resto do código...
}
💡 Vantagem: Seus alunos não precisam mais editar o código! Qualquer pessoa pode configurar o WiFi pelo celular.
🔧 Problemas Comuns
Portal não abre automaticamente
Acesse manualmente 192.168.4.1 no navegador.
Alguns celulares bloqueiam o redirect automático.
Celular desconecta do ESP32-Config
Alguns celulares detectam "sem internet" e desconectam automaticamente. Desative a opção "Alternar para dados móveis automaticamente".
WiFi não aparece na lista
Clique em "Refresh" ou aguarde alguns segundos. Redes 5GHz não aparecem (ESP32 só suporta 2.4GHz).
📝 Teste seus Conhecimentos
Quiz Gamificado
Responda às perguntas para ganhar XP e desbloquear a próxima atividade!
Carregando quiz...