Captive Portal ESP32: Guia Prático para Configuração Wi-Fi

Configurar dispositivos embarcados para se conectarem a redes Wi-FiConfigurando IP Estático e Dinâmico no ESP32 via Wi-FiConfigurando IP Estático e Dinâmico no ESP32 via Wi-FiEste tutorial detalha como configurar IP estático e dinâmico no ESP32 via Wi-Fi, garantindo comunicação estável e integração perfeita em projetos IoT. pode ser um desafio, especialmente para usuários com pouco conhecimento técnico. Uma solução elegante para esse problema é a implementação de um captive portal no ESP32, que permite configurar as credenciais de Wi-Fi através de uma interface web intuitiva. Neste artigo, vamos explorar em detalhes como criar e implementar um captive portal no ESP32 para facilitar a configuração da conexão Wi-FiConfigurando a Conexão Wi-Fi no ESP32: Guia Passo a PassoConfigurando a Conexão Wi-Fi no ESP32: Guia Passo a PassoAprenda passo a passo a conectar seu ESP32 à rede Wi-Fi com segurança e estabilidade. Descubra dicas práticas e estratégias de otimização..

O Que é um Captive Portal?🔗

Um captive portal é uma página web que é automaticamente apresentada aos usuários ao se conectarem a uma rede Wi-Fi específica. É comumente usado em ambientes como hotéis, aeroportos e cafeterias para gerenciar o acesso à internetProtocolos Nativos: Wi-Fi (2.4 GHz), Bluetooth Classic e BLEProtocolos Nativos: Wi-Fi (2.4 GHz), Bluetooth Classic e BLEDescubra como utilizar os protocolos Wi-Fi, Bluetooth Classic e BLE no ESP32, com exemplos práticos e dicas para projetos IoT inovadores.. No contexto do ESP32, um captive portal permite que os usuários configurem facilmente as credenciais de Wi-Fi do dispositivo sem a necessidade de programação ou acesso físico ao hardware.

Por Que Implementar um Captive Portal no ESP32?🔗

Implementar um captive portal no ESP32O que é o ESP32: Introdução e Conceitos BásicosO que é o ESP32: Introdução e Conceitos BásicosDescubra como o ESP32 revoluciona a automação e IoT com dicas práticas e projetos que transformam sua casa conectada. Domine a tecnologia! oferece vários benefícios:

Pré-requisitos🔗

Antes de começarmos, certifique-se de ter os seguintes componentes📜 Quadro Digital com Tela E-Ink de 32 Polegadas📜 Quadro Digital com Tela E-Ink de 32 PolegadasDescubra como combinar eficiência energética, tecnologia E-Ink e ESP32 para criar quadros digitais, dashboards interativos e arte generativa com soluções IoT.:

Configurando o Ambiente de Desenvolvimento🔗

Instalando o Suporte ao ESP32 na Arduino IDE

Se ainda não o fez, adicione o suporte ao ESP32 na Arduino IDEInstalando o Arduino IDE para ESP32 no WindowsInstalando o Arduino IDE para ESP32 no WindowsEste tutorial passo a passo ensina como instalar o Arduino IDE e configurar o ESP32 no Windows, garantindo um ambiente ideal para IoT.:

1. Abra a Arduino IDEInstalando o Arduino IDE para ESP32 no WindowsInstalando o Arduino IDE para ESP32 no WindowsEste tutorial passo a passo ensina como instalar o Arduino IDE e configurar o ESP32 no Windows, garantindo um ambiente ideal para IoT..

2. Vá em Arquivo > Preferências.

3. No campo URLs Adicionais para Gerenciadores de PlacasInstalando o Arduino IDE para ESP32 no macOSInstalando o Arduino IDE para ESP32 no macOSAprenda passo a passo a instalar e configurar o Arduino IDE no macOS para programar o ESP32. Siga dicas essenciais para solucionar problemas comuns., adicione:

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

4. Clique em OK.

5. Vá em Ferramentas > Placa > Gerenciador de PlacasInstalando o Arduino IDE para ESP32 no macOSInstalando o Arduino IDE para ESP32 no macOSAprenda passo a passo a instalar e configurar o Arduino IDE no macOS para programar o ESP32. Siga dicas essenciais para solucionar problemas comuns..

6. Pesquise por esp32O que é o ESP32: Introdução e Conceitos BásicosO que é o ESP32: Introdução e Conceitos BásicosDescubra como o ESP32 revoluciona a automação e IoT com dicas práticas e projetos que transformam sua casa conectada. Domine a tecnologia! e instale a versão mais recente.

Instalando a Biblioteca WiFiManager

A biblioteca WiFiManager simplifica a implementação de um captive portal. Para instalá-la:

1. Vá em Ferramentas > Gerenciar BibliotecasHospedando Múltiplas Páginas Web no ESP32Hospedando Múltiplas Páginas Web no ESP32Descubra como hospedar múltiplas páginas web no ESP32 com um guia passo a passo. Aprenda a configurar rotas e interagir via HTTP..

2. Pesquise por WiFiManager.

3. Instale a biblioteca WiFiManager by tzapu.

Implementando o Captive Portal🔗

Vamos criar um programa básico que configura o captive portal utilizando a biblioteca WiFiManager.

Incluindo as Bibliotecas Necessárias

Nos primeiros linhas do código, inclua as bibliotecasHospedando Múltiplas Páginas Web no ESP32Hospedando Múltiplas Páginas Web no ESP32Descubra como hospedar múltiplas páginas web no ESP32 com um guia passo a passo. Aprenda a configurar rotas e interagir via HTTP.:

#include <WiFi.h>
#include <WiFiManager.h>

Configurando o Programa

Inicialmente, vamos configurarInstalando o Arduino IDE para ESP32 no macOSInstalando o Arduino IDE para ESP32 no macOSAprenda passo a passo a instalar e configurar o Arduino IDE no macOS para programar o ESP32. Siga dicas essenciais para solucionar problemas comuns. o serial e declarar o WiFiManager:

void setup()
{
  Serial.begin(115200);
  // Criando uma instância do WiFiManager
  WiFiManager wifiManager;
  // Inicia o captive portal
  wifiManager.autoConnect("ESP32_Config_Portal");
  Serial.println("Conectado à rede Wi-Fi!");
}
void loop()
{
  // Seu código principal aqui
}

Explicação do Código

Funcionamento do Captive Portal

Quando o ESP32 não consegue se conectar a uma rede Wi-Fi conhecida, ele cria um ponto de acesso Wi-Fi chamado "ESP32_Config_Portal". Ao conectar-se a esse ponto de acesso, qualquer tentativa de acessar um site redireciona o usuário a uma página web hospedada no ESP32, permitindo inserir as credenciais da rede Wi-FiConectando o ESP32 à Rede Wi-Fi: Seus Primeiros PassosConectando o ESP32 à Rede Wi-Fi: Seus Primeiros PassosDescubra como conectar seu ESP32 à rede Wi-Fi com segurança e eficiência. Siga o guia passo a passo e otimize seus projetos de IoT com facilidade. desejada.

Personalizando o Captive Portal🔗

Para aprimorar a experiência, podemos personalizar o captive portal.

Adicionando Parâmetros Personalizados

Podemos solicitar informações adicionais, como o nome do usuário ou configuraçõesInstalando o Arduino IDE para ESP32 no macOSInstalando o Arduino IDE para ESP32 no macOSAprenda passo a passo a instalar e configurar o Arduino IDE no macOS para programar o ESP32. Siga dicas essenciais para solucionar problemas comuns. específicas.

WiFiManagerParameter custom_field("key", "Descrição", "valor padrão", tamanho);
void setup()
{
  // ... código anterior ...
  // Adicionando o parâmetro personalizado
  wifiManager.addParameter(&custom_field);
  // ... restante do código ...
}

Exemplo: Solicitando um Token de Acesso

WiFiManagerParameter custom_token("token", "Token de Acesso", "", 32);
void setup()
{
  // ... código anterior ...
  wifiManager.addParameter(&custom_token);
  // ... restante do código ...
}

Após a conexão, podemos recuperar o valor inserido:

String token = custom_token.getValue();
Serial.println("Token de Acesso: " + token);

Salvando as Configurações

Para que os parâmetros personalizados persistam após reinicializações, precisamos salvá-los em memória não volátilGerenciando Múltiplas Redes Wi-Fi com o ESP32Gerenciando Múltiplas Redes Wi-Fi com o ESP32Aprenda a configurar o ESP32 para gerenciar diversas redes Wi-Fi automaticamente, garantindo conexão robusta e estável com práticas simples e seguras..

Usando o SPIFFS para Armazenar Dados

Inclua as bibliotecasHospedando Múltiplas Páginas Web no ESP32Hospedando Múltiplas Páginas Web no ESP32Descubra como hospedar múltiplas páginas web no ESP32 com um guia passo a passo. Aprenda a configurar rotas e interagir via HTTP. necessárias:

#include <FS.h>
#include <SPIFFS.h>

Inicialize o SPIFFSUtilizando SPIFFS para Armazenamento de Arquivos WebUtilizando SPIFFS para Armazenamento de Arquivos WebAprenda a usar SPIFFS para armazenar arquivos web no ESP32, otimizando o desempenho e facilitando a criação de interfaces IoT com segurança e eficiência. no setup():

void setup()
{
  // ... código anterior ...
  // Inicializa o SPIFFS
  if(!SPIFFS.begin(true))
  {
    Serial.println("Erro ao montar o SPIFFS");
  }
  // ... restante do código ...
}

Salvando e Carregando Configurações

Crie funções para salvar e carregar as configuraçõesInstalando o Arduino IDE para ESP32 no macOSInstalando o Arduino IDE para ESP32 no macOSAprenda passo a passo a instalar e configurar o Arduino IDE no macOS para programar o ESP32. Siga dicas essenciais para solucionar problemas comuns.:

void saveConfig()
{
  // Abre o arquivo para escrita
  File configFile = SPIFFS.open("/config.json", "w");
  if(!configFile)
  {
    Serial.println("Falha ao abrir o arquivo de configuração para escrita");
    return;
  }
  // Cria um objeto JSON
  DynamicJsonDocument doc(1024);
  doc["token"] = custom_token.getValue();
  // Grava os dados no arquivo
  serializeJson(doc, configFile);
  configFile.close();
}
void loadConfig()
{
  if(SPIFFS.exists("/config.json"))
  {
    // Abre o arquivo para leitura
    File configFile = SPIFFS.open("/config.json", "r");
    if(configFile)
    {
      size_t size = configFile.size();
      std::unique_ptr<char[]> buf(new char[size]);
      configFile.readBytes(buf.get(), size);
      DynamicJsonDocument doc(1024);
      if(deserializeJson(doc, buf.get()) == DeserializationError::Ok)
      {
        String token = doc["token"];
        Serial.println("Token carregado: " + token);
        // Use o token conforme necessário
      }
      else
      {
        Serial.println("Erro ao analisar o arquivo de configuração");
      }
      configFile.close();
    }
  }
}

Chame loadConfig() no início do setup() e saveConfig() após a conexão.

Modificando o Comportamento do Captive Portal

Podemos ajustar como o captive portal funciona, definindo callbacks e tempos limite.

Definindo um Callback de Configuração

void configModeCallback(WiFiManager *myWiFiManager)
{
  Serial.println("Entrou no modo de configuração");
  Serial.println("Conecte-se ao AP: " + String(myWiFiManager->getConfigPortalSSID()));
}
void setup()
{
  // ... código anterior ...
  wifiManager.setAPCallback(configModeCallback);
  // ... restante do código ...
}

Configurando um Tempo Limite

wifiManager.setTimeout(180); // Tempo limite em segundos
if(!wifiManager.autoConnect("ESP32_Config_Portal"))
{
  Serial.println("Tempo limite excedido. Reiniciando...");
  ESP.restart();
}

Segurança no Captive Portal🔗

Para evitar acessos não autorizados, podemos adicionar uma senhaConfigurando a Conexão Wi-Fi no ESP32: Guia Passo a PassoConfigurando a Conexão Wi-Fi no ESP32: Guia Passo a PassoAprenda passo a passo a conectar seu ESP32 à rede Wi-Fi com segurança e estabilidade. Descubra dicas práticas e estratégias de otimização. ao ponto de acesso:

wifiManager.autoConnect("ESP32_Config_Portal", "senha_segura");

Alternativamente, podemos implementar autenticaçãoSegurança na Rede: Protegendo a Conexão Wi-Fi do ESP32Segurança na Rede: Protegendo a Conexão Wi-Fi do ESP32Proteja a conexão Wi-Fi do ESP32 com dicas de criptografia, senhas fortes e monitoramento, garantindo segurança e integridade dos dados. na página web.

Testando o Captive Portal🔗

1. Inicialização: Carregue o código no ESP32 e abra o monitor serialConfigurando a Conexão Wi-Fi no ESP32: Guia Passo a PassoConfigurando a Conexão Wi-Fi no ESP32: Guia Passo a PassoAprenda passo a passo a conectar seu ESP32 à rede Wi-Fi com segurança e estabilidade. Descubra dicas práticas e estratégias de otimização..

2. Sem Credenciais Salvas: Se o ESP32 não tiver credenciais Wi-FiTestando e Solucionando Problemas no Sistema de Alarme com ESP32Testando e Solucionando Problemas no Sistema de Alarme com ESP32Confira nosso guia prático de testes e diagnósticos para sistemas de alarme com ESP32, solucionando falhas e otimizando seu projeto com dicas essenciais. salvas, ele iniciará o captive portal.

3. Conecte-se ao APProtocolos Nativos: Wi-Fi (2.4 GHz), Bluetooth Classic e BLEProtocolos Nativos: Wi-Fi (2.4 GHz), Bluetooth Classic e BLEDescubra como utilizar os protocolos Wi-Fi, Bluetooth Classic e BLE no ESP32, com exemplos práticos e dicas para projetos IoT inovadores.: No seu dispositivo (computador ou smartphone), conecte-se à rede Wi-FiConectando o ESP32 à Rede Wi-Fi: Seus Primeiros PassosConectando o ESP32 à Rede Wi-Fi: Seus Primeiros PassosDescubra como conectar seu ESP32 à rede Wi-Fi com segurança e eficiência. Siga o guia passo a passo e otimize seus projetos de IoT com facilidade. "ESP32_Config_Portal".

4. Acessando o Portal: O navegador deve abrir automaticamente a página de configuraçãoInstalando o Arduino IDE para ESP32 no macOSInstalando o Arduino IDE para ESP32 no macOSAprenda passo a passo a instalar e configurar o Arduino IDE no macOS para programar o ESP32. Siga dicas essenciais para solucionar problemas comuns.. Se não abrir, acesse qualquer endereço (por exemplo, httpProtocolos Nativos: Wi-Fi (2.4 GHz), Bluetooth Classic e BLEProtocolos Nativos: Wi-Fi (2.4 GHz), Bluetooth Classic e BLEDescubra como utilizar os protocolos Wi-Fi, Bluetooth Classic e BLE no ESP32, com exemplos práticos e dicas para projetos IoT inovadores.://192.168.4.1).

5. Configurando a Rede Wi-FiConectando o ESP32 à Rede Wi-Fi: Seus Primeiros PassosConectando o ESP32 à Rede Wi-Fi: Seus Primeiros PassosDescubra como conectar seu ESP32 à rede Wi-Fi com segurança e eficiência. Siga o guia passo a passo e otimize seus projetos de IoT com facilidade.: Selecione sua rede Wi-FiConectando o ESP32 à Rede Wi-Fi: Seus Primeiros PassosConectando o ESP32 à Rede Wi-Fi: Seus Primeiros PassosDescubra como conectar seu ESP32 à rede Wi-Fi com segurança e eficiência. Siga o guia passo a passo e otimize seus projetos de IoT com facilidade. e insira a senha.

6. Parâmetros Personalizados: Insira quaisquer parâmetros adicionais solicitados.

7. Conexão Estabelecida: O ESP32 tentará se conectar à rede Wi-FiExemplos de Código e BibliotecasExemplos de Código e BibliotecasDescubra exemplos práticos e bibliotecas essenciais para utilizar o ESP32 em projetos de IoT, automação, Wi-Fi, OTA, MQTT e BLE. fornecida. Verifique o monitor serial para confirmações.

Possíveis Problemas e Soluções🔗

Aplicações Práticas🔗

Implementar um captive portal no ESP32O que é o ESP32: Introdução e Conceitos BásicosO que é o ESP32: Introdução e Conceitos BásicosDescubra como o ESP32 revoluciona a automação e IoT com dicas práticas e projetos que transformam sua casa conectada. Domine a tecnologia! é especialmente útil em projetos onde:

Considerações Finais🔗

A implementação de um captive portal é uma maneira eficaz de tornar dispositivos baseados no ESP32 mais acessíveis e fáceis de configurarInstalando o Arduino IDE para ESP32 no macOSInstalando o Arduino IDE para ESP32 no macOSAprenda passo a passo a instalar e configurar o Arduino IDE no macOS para programar o ESP32. Siga dicas essenciais para solucionar problemas comuns.. Com a ajuda da biblioteca WiFiManager, esse processo se torna relativamente simples, mesmo para aqueles com pouco conhecimento em programação ou eletrônica.

Próximos Passos🔗

Com o captive portal funcionando, você pode expandir seu projeto:


A automação e a IoT oferecem um vasto campo de possibilidades. Ao facilitar a configuraçãoInstalando o Arduino IDE para ESP32 no macOSInstalando o Arduino IDE para ESP32 no macOSAprenda passo a passo a instalar e configurar o Arduino IDE no macOS para programar o ESP32. Siga dicas essenciais para solucionar problemas comuns. e a usabilidade dos dispositivos através de técnicas como o captive portal, estamos um passo mais próximos de integrar ainda mais a tecnologia ao nosso cotidiano. Continue explorando, aprendendo e inovando!

Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.

Referências🔗

Compartilhar artigo

Artigos Relacionados