Início Etapa 2 Atividade 8.5
8.5
BÔNUS - ESSENCIAL

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:

  1. Abrir o código no Arduino IDE
  2. Alterar SSID e SENHA
  3. 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?

1

ESP32 liga sem WiFi configurado

Primeira vez ou credenciais apagadas

2

ESP32 vira um "roteador" temporário

Cria a rede "ESP32-Config" (Access Point)

3

Você conecta o celular nessa rede

Abre automaticamente a página de configuração

4

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

    Abra o Arduino IDE

  2. 2

    Vá em Sketch → Include Library → Manage Libraries

  3. 3

    Pesquise por WiFiManager

  4. 4

    Instale a versão do autor tzapu

    WiFiManager by tzapu (versão mais recente)

1

Código ESP32 - WiFiManager Básico

Teste primeiro este código simples

wifimanager_basico.ino (Arduino IDE)
/************************************************
 * 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. 1

    Faça upload do código para o ESP32

    Abra o Monitor Serial (115200 baud)

  2. 2

    No celular, vá em Configurações WiFi

    Procure a rede "ESP32-Config"

  3. 3

    Conecte usando a senha "12345678"

    O portal deve abrir automaticamente

  4. 4

    Clique em "Configure WiFi"

    Escolha sua rede e digite a senha

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

2

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!

wifimanager_botao.ino (Arduino IDE)
/************************************************
 * 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:

#include <WiFiManager.h>

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