Introdução
Neste artigo, mostraremos como utilizar o WiFi Manager para gerenciar as credenciais de WiFi e configurar variáveis adicionais, utilizando a placa de desenvolvimento ESP32-C6 DevKitC-1.
Nosso projeto terá como objetivo o envio e recebimento de mensagens via MQTT para controlar o estado de um LED, além de incluir uma funcionalidade extra: atualizar dinamicamente as credenciais do broker MQTT utilizando tanto WebServer quanto WiFiManager, sem a necessidade de regravar o firmware.
O artigo com ênfase no MQTT está disponível no portal em ESP32-C6 na Prática: Comunicação MQTT. Sendo assim, nesse projeto vamos explorar as funcionalidades da biblioteca de WiFi Manager.
Para conhecer mais a placa de desenvolvimento consulte nosso artigo Introdução à Placa ESP32-C6-DevKitC-1: Ideal para IoT
O que é o WiFi Manager
O WiFi Manager para ESP32 é uma aplicação que facilita a configuração da rede Wi-Fi diretamente pelo usuário, sem precisar alterar o código e regravar a placa sempre que mudar de rede.
Exemplo de funcionamento:
- Tenta conectar usando as credenciais salvas na memória do ESP32.
- Se não conseguir, cria um Access Point (ex.: AutoConnectAP).
- O usuário se conecta ao AP e é redirecionado para um portal web.
- No portal, ele seleciona a rede Wi-Fi e insere a senha.
- As credenciais são salvas na memória e o ESP 32 reinicia já conectado.
Para saber mais sobre o WiFi Manager, veja o webinar do Allan Caldas em https://embarcados.com.br/webinar-implementando-um-webserver-com-wifimanager-no-esp32
Características do WiFi Manager
- Coloca o ESP em modo Access Point (AP) se não conseguir se conectar à rede salva
- Não precisa regravar código ao trocar de Wi-Fi.
- Usuário final configura a rede pelo celular
Materiais Necessários
Para desenvolver nossa aplicação os materiais utilizados foram:
- Placa ESP23-C6 DevKitC-1
- Cabo USB-C
- LED
- Resistor 330 ohms
- Botão
- Jumpers
- Arduino IDE
- Broker MQTT (broker.emqx.io e broker.hivemq.com )
- Cliente de visualização MQTT (MQTTX)
Para configurar o ambiente e instalar o suporte a ESP32-C6 veja o artigo ESP32-C6 na Prática: Seu Primeiro “Hello World”
Circuito
O circuito utilizado para este artigo será a placa ESP32-C6 DevKitC-1 para gerir o Web Server e se conectar ao Broker MQTT como publicador e assinante no tópico, o LED para sinalizar as ações via MQTT e o botão para publicar o estado do LED.
Como o ESP32-C6 possui resistores internos de pull-up, não utilizaremos um resistor externo para o botão.
Instalação de Bibliotecas
Abra a Arduino IDE e siga os passos abaixo:
- Vá em Sketch > Incluir Biblioteca > Gerenciar Bibliotecas.
- Busque por WiFiManager by tzapu
- Instale a biblioteca mais recente
Caracteristicas da Biblioteca WiFiManager
- Passar parâmetros adicionais para salvar informações, como um token de api
- Personalizar a parte visual de configuração Web
- Personalizar rotas e adicionar um código HTML livre
- Realizar upload de firmware via OTA desde que configurado.
- Permite callback para salvar informações na memória
Caso queira explorar mais a biblioteca, ela está disponível em https://github.com/tzapu/WiFiManager
Código
No projeto proposto, o ESP23-C6 DevKitC-1 gera um Acess Point, AutoConnectAP e senha “password” para nos conectarmos e configurar a rede Wi-Fi, Broker MQTT e a porta de conexão do Broker.
#include <WiFiManager.h> // Inclui a biblioteca do WiFiManager
// Configuração do Broker MQTT
const char* idMqtt = id_mqtt;
char mqtt_server[40] = broker_default;
char mqtt_port[6] = mqtt_tcp_port_default;
// global wm instance
WiFiManager wm;
// Criação dos parâmetros do WiFiManager
WiFiManagerParameter custom_mqtt_server("server", "mqtt server", mqtt_server, 40);
WiFiManagerParameter custom_mqtt_port("port", "mqtt port", mqtt_port, 6);
wm.addParameter(&custom_mqtt_server);
wm.addParameter(&custom_mqtt_port);
if (!wm.autoConnect("AutoConnectAP", "password")) {
Serial.println("Failed to connect");
} else {
Serial.println("connected...yeey :)");
}
// read updated parameters
strcpy(mqtt_server, custom_mqtt_server.getValue());
strcpy(mqtt_port, custom_mqtt_port.getValue());
Em seguida, copie o endereço IP apresentado no monitor serial (Figura 4) e cole-o no navegador de sua preferência (Figura 5).
Para acompanhar o funcionamento do projeto, abra o monitor serial e verifique as etapas de criação do servidor. Abaixo, você encontrará o endereço IP da placa conectada.
Todo o código desenvolvido está disponível para consulta em https://github.com/guilhermefernandesk/ESP32-C6/tree/main/wifiManager. Além de algumas configurações adicionais estarem comentadas. As configurações também podem ser encontradas nos exemplos da biblioteca.
Resultados

Atenção: Caso você receba uma falha na conexão MQTT com o status -2, isso indica que a porta TCP 1883 está bloqueada pelo firewall do seu roteador Wi-Fi. Para resolver esse problema, utilize as credenciais do hotspot do celular ou reconfigure seu roteador para liberar a porta 1883.
Conclusão
Neste artigo, mostramos como utilizar o WiFiManager para alterar credenciais de rede e broker sem adicioná-las no código utilizando a placa ESP32-C6 DevKitC-1. A interface HTML foi integrada ao firmware, permitindo comunicação em tempo real com o hardware.
Para leitores que não estão familiarizados com HTML e JavaScript, pode haver certa dificuldade inicial, mas existem diversas ferramentas e recursos online que podem auxiliar nesse processo em HTML Basic Examples
Sinta-se à vontade para compartilhar seus resultados com a comunidade, seja por artigos, vídeos ou repositórios abertos. Sua experiência pode inspirar e auxiliar muitos outros desenvolvedores.
Referências
- HTML Basic Examples
- Introdução à Placa ESP32-C6-DevKitC-1: Ideal para IoT
- ESP32-C6 na Prática: Seu Primeiro “Hello World”
- ESP32-C6 na Prática: Comunicação MQTT
- https://github.com/guilhermefernandesk/ESP32-C6/tree/main/wifiManager
- https://github.com/tzapu/WiFiManager
- https://embarcados.com.br/webinar-implementando-um-webserver-com-wifimanager-no-esp32




