Recents in Beach


Receba o meu conteúdo GRATUITAMENTE


ESP8266 e ESP32 com WiFiManager



Já conhece a WiFiManager, uma biblioteca que serve como um gerenciador de conexões wireless? Pois, com ela temos uma maior facilidade para configurar tanto um Ponto de Acesso quanto uma Estação. Eu tenho recebido diversas sugestões para falar sobre o assunto, então, hoje vou te apresentar uma biblioteca desta e suas funções. Ainda vou fazer uma demonstração de uso tanto com o ESP32 quanto o ESP8266.




PINOUT

Aqui eu deixo para vocês o PINOUT dos dois dispositivos que vamos utilizar:


NodeMCU ESP-12E

NodeMCU ESP-WROOM-32


WiFiManager

A WiFiManager, portanto, nada mais é que uma biblioteca escrita em cima do WiFi.h para facilitar o gerenciamento de conexões wireless. Lembrando que, com ela, temos uma maior facilidade para configurar tanto um Ponto de Acesso quanto uma Estação. Para o modo Estação, configuramos através de um portal no navegador.

Algumas características:
·         Depende da conectividade automática
·         Inicialização do portal de configuração não automática
·         Opera seletivamente no modo duplo


Como Funciona


O ESP iniciará um portal de configuração WiFi quando ligado e salvará os dados de configuração em memória não volátil. Posteriormente, o portal de configuração só será iniciado novamente se um botão for pressionado no módulo ESP.
Abaixo você confere o fluxo de configuração e o passo a passo:


1.       Utilizando qualquer dispositivo habilitado para WiFi com um navegador  conecte-se ao ponto de acesso recém-criado e digite o endereço 192.168.4.1.
2.       Na tela você terá duas opções para se conectar a uma rede existente:
·         Configure WiFi
·         Configure WiFi (No Scan)
3.       Escolha uma das redes e coloque a senha (se precisar). Então, salve e aguarde o ESP reiniciar.
4.       Ao finalizar o boot, o ESP tentará se conectar na rede salva. Caso não consiga, irá habilitar um Ponto de Acesso.


Bibliotecas

Adicione as bibliotecas: “WifiManager-ESP32”, DNSServer-ESP32” e WebServer-ESP32”.
Descompacte os arquivos e cole na pasta de bibliotecas da IDE do arduino.
C:/Program Files (x86)/Arduino/libraries


Observação:


A biblioteca WiFiManager-ESP32 já traz as configurações que funcionam com o ESP8266, por isso utilizaremos apenas ela, ao invés de duas libs “WiFiManager” (uma para cada tipo de chip).
Como veremos mais adiante, ESP8266WiFi e ESP8266WebServer são bibliotecas que não precisaremos realizar o download, pois elas já vêm quando instalamos o ESP8266 na IDE do arduino.




Funções

A seguir temos algumas funções que o WiFiManager nos oferece.

1.       autoConnect
A função autoConnect é responsável por criar um Access Point. Podemos usá-la de três maneiras.
·         autoConnect(“nome da rede”, “senha”); - cria uma rede com o nome e a senha definidos.
·         autoConnect(“nome da rede”); - cria uma rede aberta com o nome definido.
·         autoConnect(); - cria uma rede aberta e com nome gerado automaticamente com o nome sendo ‘ESP’ + chipID.



2.       startConfigPortal
A função startConfigPortal é responsável por criar um Access Point sem tentar conectar antes a uma rede salva anteriormente.
·         startConfigPortal(“nome da rede”, “senha”);   - cria uma rede com o nome e a senha definidos.
·         startConfigPortal(); - cria uma rede aberta e com nome gerado automaticamente com o nome sendo ‘ESP’ + chipID.



3.       getConfigPortalSSID
                Retorna o SSID do portal (Access Point)
4.       getSSID
Retorna o SSID da rede a qual está conectado.
5.       getPassword
                Retorna a senha da rede a qual está conectado.



6.       setDebugOutput
A função setDebugOutput é responsável por imprimir mensagens de debug no serial monitor. Essas mensagens já são definidas na biblioteca. Conforme passa pelas funções, os dados vão sendo impressos.
Por padrão essa função vem setada como TRUE. Caso queira desabilitar as mensagens, basta setar a função como FALSE.



7.       setMinimumSignalQuality
A função setMinimumSignalQuality é responsável por filtrar as redes baseadas na qualidade do sinal. Por padrão, o WiFiManager não mostrará redes com sinal abaixo de 8%.



8.       setRemoveDuplicateAPs
A função setRemoveDuplicateAPs é responsável por remover as duplicatas de redes.
Por padrão vem setado como TRUE. 



9.       setAPStaticIPConfig
A função setAPStaticIPConfig é responsável por setar as configurações de endereço estáticas quando no modo access point.
(IP, GATEWAY, SUBNET)



10.   setSTAStaticIPConfig
A função setSTAStaticIPConfig é responsável por setar as configurações de endereço estáticas quando no modo estação.
(IP, GATEWAY, SUBNET)


Deve-se adicionar o comando antes de autoConnect !!!



11.   setAPCallback
A função setAPCallback é responsável por informar que o modo AP foi iniciado.
O parâmetro é uma função que se deve criar para indicá-la como sendo um callback;



12.   setSaveConfigCallback
A função setSaveConfigCallback é responsável por informar que uma nova configuração foi salva e a conexão foi realizada com sucesso.
O parâmetro é uma função que se deve criar para indicá-la como sendo um callback.


Deve-se adicionar o comando antes de autoConnect!!!


Montagem



Exemplo

No nosso exemplo vamos criar um Access Point com o ESP (o código servirá tanto para o ESP8266 como para o ESP32). Após a criação do AP, vamos acessar o portal através do IP 192.168.4.1 (que é o padrão para acessá-lo). Então, vamos buscar as redes disponíveis, selecionar uma delas e salvar. A partir daí, o ESP irá reiniciar e tentará se conectar a ela, trabalhando, então, como uma estação e, não mais, como um Access Point.
Após entrar em modo estação, apenas através do botão que você poderá fazer o ESP voltar ao modo Access Point.

Código

Bibliotecas

Primeiramente vamos definir as bibliotecas que utilizaremos.
Repare que temos comandos #if defined, #else e #endif. Eles são condicionais para incluir bibliotecas necessárias referentes ao chip. Essa parte é extremamente importante para poder rodar o mesmo código tanto no ESP8266 quanto no ESP32.

#if defined(ESP8266)
#include <ESP8266WiFi.h>  //ESP8266 Core WiFi Library         
#else
#include <WiFi.h>      //ESP32 Core WiFi Library    
#endif

#if defined(ESP8266)
#include <ESP8266WebServer.h> //Local WebServer used to serve the configuration portal
#else
#include <WebServer.h> //Local WebServer used to serve the configuration portal ( https://github.com/zhouhan0126/WebServer-esp32 )
#endif

#include <DNSServer.h> //Local DNS Server used for redirecting all requests to the configuration portal ( https://github.com/zhouhan0126/DNSServer---esp32 )
#include <WiFiManager.h>   // WiFi Configuration Magic ( https://github.com/zhouhan0126/WIFIMANAGER-ESP32 ) >> https://github.com/tzapu/WiFiManager (ORIGINAL)


Setup

No setup estamos configurando nosso WiFiManager da maneira mais simples. Vamos apenas definir os callbacks e criar a rede. 

const int PIN_AP = 2;

void setup() {
  Serial.begin(9600);
  pinMode(PIN_AP, INPUT);
  //declaração do objeto wifiManager
  WiFiManager wifiManager;

  //utilizando esse comando, as configurações são apagadas da memória
  //caso tiver salvo alguma rede para conectar automaticamente, ela é apagada.
//  wifiManager.resetSettings();

//callback para quando entra em modo de configuração AP
  wifiManager.setAPCallback(configModeCallback); 
//callback para quando se conecta em uma rede, ou seja, quando passa a trabalhar em modo estação
  wifiManager.setSaveConfigCallback(saveConfigCallback); 

//cria uma rede de nome ESP_AP com senha 12345678
  wifiManager.autoConnect("ESP_AP", "12345678"); 
}


Loop

No loop, faremos a leitura do pino do botão para saber se ele foi pressionado e, então, vamos chamar o método para habilitar novamente o modo AP.

void loop() 
{
   if ( digitalRead(PIN_AP) == HIGH ) 
   {
      WiFiManager wifiManager;
      if(!wifiManager.startConfigPortal("ESP_AP", "12345678") )
      {
        Serial.println("Falha ao conectar");
        delay(2000);
        ESP.restart();
      }
   }

}



Ao pressionar o botão, o ESP sairá do modo Estação e abrirá seu Access Point e o portal.
Lembre-se que não utilizamos o comando resetSettings(). As configurações ainda permanecem salvas para a próxima vez que o ESP inicializar.


Callbacks


//callback que indica que o ESP entrou no modo AP
void configModeCallback (WiFiManager *myWiFiManager) {  
//  Serial.println("Entered config mode");
  Serial.println("Entrou no modo de configuração");
  Serial.println(WiFi.softAPIP()); //imprime o IP do AP
  Serial.println(myWiFiManager->getConfigPortalSSID()); //imprime o SSID criado da rede

}

//callback que indica que salvamos uma nova rede para se conectar (modo estação)
void saveConfigCallback () {
  Serial.println("Configuração salva");
}

As funções de callback, as quais são associadas a eventos, servem para você ter o momento exato de uma operação, no nosso caso, a entrada no modo AP e no modo Estação. Podemos, então, implementar alguma rotina desejada, como recuperar o SSID da rede conectada, por exemplo.


Faça o download dos arquivos:


Postar um comentário

99 Comentários

  1. Geteway lora por 15 dólares
    É real https://youtu.be/ZV_ZY-0Q1lo

    ResponderExcluir
  2. bom dia fernando

    sou iniciante com arduino e já coloquei aqui o codigo e deu certo abriu a pagina tudo certo

    agora minha duvida e simples mas eu nao entendo! como coloco por exemplo um codigo seu mesmo aquele ddns em cima deste já que quando coloco um o outro apaga

    ResponderExcluir
    Respostas
    1. Olá. O WiFiManager serve apenas para você se conectar mais facilmente à um Ponto de Acesso. A respeito do DDNS ele terá que ser configurado em seu roteador. Abraço!

      Excluir
  3. quem souber e puder ajudar eu agradeço

    ResponderExcluir
  4. Respostas
    1. Olá. Os dois são muito bons, você precisa avaliar de acordo com sua aplicação desejada. O ESP32 tem melhor processamento que o ESP8266. Abraço!

      Excluir
  5. Olá Fernando muito bacana o seu post. Estou tentando conectar na nuvem utilizando este wifimanager, de inicio dá tudo certo, porem com o tempo (tipo 12h) o esp disconecta e para de enviar dados a nuvem, além disso ele não gera novamente o servidor para tentar novamente a conexão, ou seja, ele para de mandar dados. Tem alguma ideia do que poderia ser, obrigado

    ResponderExcluir
  6. como envio dados para a nuvem, na vdd preciso enviar dados da leitura da D8 para um link http interno
    tipo http://192.168.0.1/recebe_dados.php
    só o valor da leitura.
    como fazer?

    ResponderExcluir
    Respostas
    1. Eu uso o client() pra fazer um GET no servidor. Dê uma olhada nesse exemplo: https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266WiFi/examples/WiFiClient/WiFiClient.ino

      Espero que ajude! Abraço!

      Excluir
  7. Olá Fernando,
    Seria possível criar um loop, para verificar a existência de conexão com a internet?
    Se sim, como seria isso?

    ResponderExcluir
    Respostas
    1. Boa tarde! Você conseguiu fazer algo para validar se ele está conectado a alguma rede?

      Excluir
  8. Boa noite amigo vc pode me enviar uma ide pra colocar no meu esp 8266 nodemcu pra acionar 10 relés via wi-fi do meu celular sem precisar de internet

    ResponderExcluir
  9. Se puder enviar pro meu WhatsApp (22)997380309 eu agradeço

    ResponderExcluir
  10. Fernando não há um jeito de usar um nome em vez do ip?
    por exemplo "portalAP" em vez 192.168.4.1

    ResponderExcluir
  11. Olá Fernando!
    Estou tentando rodar meu próprio código "hello world" ativando um LED via navegador na IDE Arduino, porém estou me deparando com um problema. A conexão com a rede local ocorre normalmente, e o monitor serial mostra a URL (endereço IP) que eu deveria utilizar para acessar o servidor. Entretanto, quando jogo o endereço no navegador e tento acessar, aparece um erro dizendo que não foi possível encontrar a página. Já desativei o firewall, testei em vários navegadores diferentes, redes diferentes, portas diferentes (mudei da porta 80 para a 443) e nada funciona! O que pode estar acontecendo?
    P.S.: Estou utilizando um ESP32 e SO Windows 10

    ResponderExcluir
  12. o meu nao compilou /Users/josimar/Documents/Arduino/libraries/WiFiManager/WiFiManager.h:24:30: fatal error: user_interface.h: No such file or directory

    ResponderExcluir
    Respostas
    1. Vá na biblioteca WiFiManager.h troque a palavra HTTP_HEAD por HTTP_HEADER, no meu funcionou.

      Excluir
  13. Olá Prof. Fernando.
    Funcionou perfeitamente.
    A biblioteca já cá a tinha, não sabia era como usá-la.
    Muito Obrigado.
    Um grande abraço de Portugal.

    ResponderExcluir
  14. Por mais que eu tente ele nao cria a conexão com o nome configurado, sempre aparece Wifi-repeater.
    Também tive vários problemas de conflito entre as bibliotecas por usarem nome de arquivos iguais e quando eu removo qualquer um deles ou troco o nome a aplicação não funciona.

    ResponderExcluir
  15. Fiz e reg=fiz a instalacao muitas vezes, MAS......

    Multiple libraries were found for "WiFi.h"
    WifiManager32:14:159: error: WiFiManager.h: No such file or directory

    Used: C:\Users\vidal\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.0\libraries\WiFi
    compilation terminated.

    Not used: C:\Arduino\libraries\WiFi
    exit status 1
    WiFiManager.h: No such file or directory

    ResponderExcluir
  16. Boa noite Fernando, acho fantasticas suas aulas e venho seguindo alguns tutoriais, comecei a brincar com o esp32 a pouco tempo e estou tentando carregar o autoconect do wifimanager aparecem informaçoes de duplas bibliotecas e no final da um erro de compilação, estou há meses tentando instalar e desisntalar ide, bibliotecas etc mas da sempre o mesmo erro, o blink ele carrega. O Senhor ou alguem que segue a página pode me ajudar? abraços, obrigado

    ResponderExcluir
    Respostas
    1. Ola estou com o mes o problema utilizando o ino do site e as bibliotecas indicadas no artigo.
      Alguma sugestão ?

      Excluir
  17. Hola Fernando,
    just a question,
    why in the INO program downloadable from your page, in Void Loop is called WiFiManager wifiManager and after there is the function IF to check the input.
    and in the video, like in the documentation in this pages, in the loop the first command there is the if function to check the push button and, if is TRUE is called the WiFiManager wifiManager?

    what is the difference
    thanks

    ResponderExcluir
  18. Cara estou com o problema de múltiplas biblioteca a semanas e ninguém consegue me da um norte.
    ta osso kkk.

    Qualquer exemplo que uso as biblioteca citadas acima dao esse erro.

    Outras biblioteca e exemplos funcionam normal

    ResponderExcluir
    Respostas
    1. Murilo, ja faz tempo que essa sua duvida esta aqui. Mas andei procurando muito sobre e consegui resolver. Caso alguem procure acho valido responder.

      Resolvi da seguinte maneira:
      Quando se aparece o erro de multiplas bibliotecas geralmente no erro aparece o endereço da biblioteca que esta sendo usada e o endereço da biblioteca nao usada.
      Copie o endereço da biblioteca não usada, ache esse endereço no seu pc e exclua a biblioteca que esta dando conflito!
      qualquer duvidas
      alexandre.souza@engenharia.ufjf.br

      Abraços

      Excluir
  19. To na com esse problema tambem "Murilo Gimenez" ja refiz todo o processo de instalação e nada da certo

    ResponderExcluir
  20. Bom dia Fernando,

    Segui a risca seu tutorial para a configuração do Access Point utilizando ESP32, porém, não saio desse erro.

    Foram encontradas múltiplas bibliotecas para "WebServer.h"
    In file included from C:\Users\kaina\Desktop\sketch_nov17a\sketch_nov17a.ino:10:0:

    Usado: C:\Users\kaina\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.0\libraries\WebServer
    C:\Users\kaina\Documents\Arduino\libraries\WiFiManager/WiFiManager.h:16:25: fatal error: ESP8266WiFi.h: No such file or directory

    Não usado: C:\Program Files (x86)\Arduino\libraries\WebServer-ESP32
    compilation terminated.

    Foram encontradas múltiplas bibliotecas para "WiFi.h"
    Usado: C:\Users\kaina\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.0\libraries\WiFi
    Não usado: C:\Program Files (x86)\Arduino\libraries\WiFi
    Foram encontradas múltiplas bibliotecas para "DNSServer.h"
    Usado: C:\Users\kaina\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.0\libraries\DNSServer
    Não usado: C:\Program Files (x86)\Arduino\libraries\DNSServer-ESP32
    exit status 1
    Erro compilando para a placa ESP32 Dev Module

    Se puder ajudar eu agradeço.

    Forte abraço, e parabéns pelos tutoriais.

    ResponderExcluir
    Respostas
    1. Kainã, também estou com esse problema. Você conseguiu algo para resolver?
      Obrigado.

      Excluir
    2. Também estou com esse problema, alguém resolveu?

      Excluir
    3. Eu tive um problema parecido, deletei todas as bibliotecas e reinstalei e resolveu tudo

      Excluir
    4. Tive problemas 1000 tentando usar a Esp8266WiFi.h Cansei depois de 2 meses reinstalando tudo... Estou tentando experimentar o VScode, mas ainda estou engatinhando. Nele tenho conflitos entre bibliotecas e o PlatformIO. CANSA!

      Excluir
    5. Sigam esse video, resolveu meu problema com isso, porem estou com problema em acessar o WiFi Manager ainda

      Excluir
    6. Esqueci do link kkkk https://www.youtube.com/watch?v=O2b1yAW_bHk&t=186s

      Excluir
    7. Tambem tive o mesmo problema, resolvi apagando todas as bibliotecas com o mesmo nome na pasta do ESP8266 e do arduíno. Deixei apenas as que baixei no tutorial

      Excluir
  21. Eu tive um problema parecido, deletei todas as bibliotecas e reinstalei e resolveu tudo

    ResponderExcluir
  22. Olá Fernando, Acompanho direto seu Blog e o Youtube tb. Migrei do ARDUINO pro ESP32 baseado em tudo que vi nos seus posts. Configurei a IDE ARDUINO pro ESP pelas 2 maneiras, mas de todas as formas tenho tido muitos problemas com LIBRARYS aparentemente incompletas. Ha 2 meses brigo pra fazer funcionar a ESP8266WiFi.h, mas caio de erro em erro na compilação, pois acusa faltar arquivos chamados internamente pela propria library que aparentam nao estar lá. Cheguei a formatar meu note para ver se o problema nao era meu PC. Baixei a biblioteca no GitHub, e cheguei a complementar colocando manualmente 6 arquivos... mas as pendencias internas desta biblioteca nunca acabavam. Vc tem ela COMPLETA ZIPADA pra mim? onde consigo um arquivo confiável?
    Abraços!

    ResponderExcluir
  23. Olá Fernando, Acompanho direto seu Blog e o Youtube tb. Migrei do ARDUINO pro ESP32 baseado em tudo que vi nos seus posts. Configurei a IDE ARDUINO pro ESP pelas 2 maneiras, mas de todas as formas tenho tido muitos problemas com LIBRARYS aparentemente incompletas. Ha 2 meses brigo pra fazer funcionar a ESP8266WiFi.h, mas caio de erro em erro na compilação, pois acusa faltar arquivos chamados internamente pela propria library que aparentam nao estar lá. Cheguei a formatar meu note para ver se o problema nao era meu PC. Baixei a biblioteca no GitHub, e cheguei a complementar colocando manualmente 6 arquivos... mas as pendencias internas desta biblioteca nunca acabavam. Vc tem ela COMPLETA ZIPADA pra mim? onde consigo um arquivo confiável?
    Abraços!

    ResponderExcluir
  24. alguem sabe o que fazer !!!

    Foram encontradas múltiplas bibliotecas para "WiFi.h" Usado: C:\Users\Marcos\AppData

    ResponderExcluir
  25. Uma dica que dou a quem está tendo problemas com as bibliotecas e arquivos, é instalar a placa do ESP8266, e depois baixar as bibliotecas necessárias, algumas delas tem o link no próprio arquivo .ino.

    ResponderExcluir
  26. Entendi que as informações de redes salvas ficam na memória Flash o que faz com que mesmo que recompilemos e gravemos o fonte, o dispositivo vai continuar se conectando automaticamente a rede com maior sinal. Como faço para remover as redes salvas?

    ResponderExcluir
  27. Não entendi duas coisa:
    O que significa em "opera seletivamente em modo duplo"?
    O que significa "inicialização do portal de configuração não automática"?

    ResponderExcluir
  28. Não funcionou! Muita gente está com o mesmo problema. Vou pesquisar em outro site.

    ResponderExcluir
  29. Boa Noite Fernando, você já utilizou o WIFIManager em redes que precisam de usuário e senha? Busquei na documentação porém não encontrei. Se puder auxiliar agradeço.

    ResponderExcluir
  30. Boa Noite Fernando, você já utilizou o WIFIManager em redes que precisam de usuário e senha? Busquei na documentação porém não encontrei. Se puder auxiliar agradeço.

    ResponderExcluir
  31. Bom dia, muito bacaba o seu post, ajudou muita gente. Gostaria de saber quais os endereços de memória flash são ocupados por essa biblioteca pois pretendo gravar informações na flash certamente vou sobrepor a da biblioteca se não souber o mapeamento. Obrigado

    ResponderExcluir
  32. captive portal, alem do ssid tem username e password alguém já conseguiu fazer conexão passando esse parametro a mais, username ?

    ResponderExcluir
  33. Boa noite, estou com problemas para compilar o esquema na minha IDE, "erro compilando a placa nodemcu-32s"

    ResponderExcluir
  34. Olá, este tutorial foi muito útil, mas eu preciso selecionar DHCP ou IP estático para conectar wi-fi. Agradeço qualquer ajuda ou sugestão sobre como fazer isso.
    Me desculpe, meu português é ruim, eu usei a tradução do google.
    Obrigado antecipadamente.

    ResponderExcluir
    Respostas
    1. Olá, eu recomendo usar WPS muito mais prático, veja exemplo: https://arduinodoviny.blogspot.com/2019/06/esp8266-conectado-wi-fi-com-wpsqss.html
      Boa sorte!

      Excluir
    2. Obrigado por responder. Sua sugestão é boa, mas eu nem sempre tenho acesso ao roteador, então dependendo de cada caso eu preciso selecionar dhcp ou ip estático.
      Eu encontrei isto:https://www.instructables.com/id/ESP32-Captive-Portal-to-Configure-Static-and-DHCP-/
      mas não funciona, não encontra redes disponíveis para conectar e não é possível configurar o ssid e o passw.
      Vou continuar olhando e agradeço qualquer ideia.

      Excluir
  35. FernandoK e colegas do site... esta tendo um problema com wifimanager esp32 um problema com um erro de header na hora de compilar: HTTP_HEAD e a solução era mais simples do que parecia. Acabei de editar os arquivos WiFiManager.h e WifiManager.cpp substituindo (HTTP_HEAD) por (HTTP_HEADER) e não houve mais problemas de compilação (méritos para um site gringo que achei a dica).

    ResponderExcluir
  36. http_HEAD redeclaration error ao compilar!

    Solução:

    Caso alguém esteja tendo problemas para compilar este código em função de erros relacionados a redeclaração do http_HEAD assim como eu tive vou deixar aqui a solução:

    Abra a biblioteca WifiManager.h e substitua todos os http_HEAD por http_HEADER.
    Abra o arquivo WifiManager.cpp e substitua todos os http_HEAD por http_HEADER.

    Utilize bloco de notas para abrir esses dois arquivos e use o atalho control+f para buscar por http_HEAD e substitua todos que encontrar.

    Depois basta salvar os arquivos e compilar novamente o código.

    ResponderExcluir
  37. Olá
    Eu estou testando o código, mas ele não se conecta ao ESP AP, eu não entendo o porquê. No monitor serial, você vê este resultado:

    *WM: Configuring access point...
    *WM: ESP_AP
    *WM: 12345678
    *WM: AP IP address:
    *WM: 192.168.4.1
    *WM: HTTP server started
    dhcps: send_nak>>udp_sendto result 0

    Alguém poderia me ajudar?
    Obrigada

    ResponderExcluir
    Respostas
    1. Copiei a resposta do cara
      Fiz isso e resolveu

      |
      \/
      http_HEAD redeclaration error ao compilar!

      Solução:

      Caso alguém esteja tendo problemas para compilar este código em função de erros relacionados a redeclaração do http_HEAD assim como eu tive vou deixar aqui a solução:

      Abra a biblioteca WifiManager.h e substitua todos os http_HEAD por http_HEADER.
      Abra o arquivo WifiManager.cpp e substitua todos os http_HEAD por http_HEADER.

      Utilize bloco de notas para abrir esses dois arquivos e use o atalho control+f para buscar por http_HEAD e substitua todos que encontrar.

      Depois basta salvar os arquivos e compilar novamente o código.

      Excluir
  38. Boa noite, tudo certo? Excelente tutorial! Já ajudou a abrir minha mente rss
    Agora eu preciso fazer o seguinte, quando iniciar o ESP32, inicie como AP para que possa ser alterado o SSID e senha, quando eu salvar a SSID e senha, ele reinicia, verificar se foi possível conectar, caso ele não conecte, ele volte para o modo AP, se a conexão foi bem sucedida, ele inicia a rotina programada nele, no meu caso, preciso monitorar um equipamento que possui duas saídas 12v, caso haja estes 12v, ele muda o estado do pino para HIGH, se não possuir, ele mudará para LOW. Minha ideia seria fazer automaticamente ele entrar em modo AP quando não conseguir conectar, sem precisar pressionar o botão conforme ensinado aqui.

    ResponderExcluir
  39. agora como eu faco pra poder ligar uma lampada a distancia pela internet com mais essa facilidade da wifi manager

    ResponderExcluir
  40. como coloco ota mais wifi manager e depois o codigo pra ligar uma lampada remoto?

    ResponderExcluir
  41. Boa Noite Fernando. Primeiro parabéns por seu trabalho, sempre indico aos meus alunos aqui do SENAI Guarulhos.
    Queria sua ajuda, por favor, pois preciso cominunicar um esp32 DEVKITV1 (DOIT) A UM CELULAR USANDO UM ROTEADOR WIFI, mas sem internet, so usando o wifi, é possível, vc tem algum exemplo.

    Muito obrigado

    ResponderExcluir
  42. Bom dia Fernando, antes de mais os meus parabéns pelas excelentes aulas e conteúdo muito bom.
    Gostaria de saber se há alguma maneira fácil de fazer o ESP reconectar caso perca a ligação com o AP. Obrigado.

    ResponderExcluir
  43. Estou com este erro. Já desinstalei instalei e não resolve: Me salva.

    testeesp32:15:25: error: WiFiManager.h: No such file or directory

    compilation terminated.

    Foram encontradas múltiplas bibliotecas para "WiFi.h"
    Usado: C:\Users\carll\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.3\libraries\WiFi
    Não usado: C:\Program
    Foram encontradas múltiplas bibliotecas para "WebServer.h"
    Usado: C:\Users\carll\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.3\libraries\WebServer
    Foram encontradas múltiplas bibliotecas para "DNSServer.h"
    Usado: C:\Users\carll\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.3\libraries\DNSServer
    exit status 1
    WiFiManager.h: No such file or directory

    ResponderExcluir
    Respostas
    1. Hola como lo explicaban mas arriba, debes entrar y modificar los siguientes archivos: WiFiManager.h, WiFiManager.cpp y también en la carpeta extras el template, => HTTP_HEAD x =>HTTP_HEADER.

      Excluir
    2. Resolvi esse problema excluindo as antigas bibliotecas, deixando apenas as que baixei nesse post

      Excluir
  44. Estou implementando o WiFiManager no Esp01 ele carrega o programa tudo, acesso a rede do esp01 pelo IP 162.168.4.1 marco a minha rede digito a senha e ao salvar eu verifico no monitor serial que não foi para o passo final que seria a mensagem Serial.println("Configuração salva"); e sim volta no inicio informando o IP do esp01 com a mensagem Serial.println("resetar"). Já tentei de tudo que possa testar pode me ajudar se esse codigo funciona para o ESP01.

    ResponderExcluir
  45. PARABÉNS PELO BELO EXEMPLO..só que não consegue SALVAR a minha rede com a senha e não vai passo final..qual o problema???

    ResponderExcluir
  46. PARABÉNS PELO BELO EXEMPLO..só que não consegue SALVAR a minha rede com a senha e não vai passo final..qual o problema??? estou usando mcu esp 8266 v3...

    ResponderExcluir
  47. Boa tarde Fernando, pode me ajudar, estou tendo este erro ao compilar no ESP32

    WiFimanager:85:11: error: 'wifiManager' was not declared in this scope

    if(!wifiManager.startConfigPortal("88888", "888888") ){

    ^
    exit status 1
    variable or field 'configModeCallback' declared void

    ResponderExcluir
  48. Olá Fernando, a libi do wifi manager tem algum comando para zerar a flash do ESP8266, digo limpar as redes salvas ? Desde já obrigado pela atenção.

    ResponderExcluir
  49. Boa Tarde Fernando, como posso configurar a minha ESP32 para que eu a acesse mesmo que eu esteja conectado a uma rede diferente da ESP32?

    ResponderExcluir
  50. Boa tarde Fernando.
    Grato pela explicação e pelo fonte.
    Carreguei o programa em ESP8266 e ESP32. O ESP32 não mostrou as redes (getSSID) e o 8266 sim.
    Você poderia dar orientação do que fazer?
    Grato

    ResponderExcluir
  51. Boa tarde Fernando, é possível mudar a aparência do WiFi-Manager digo o HTML da pagina de AP desde já obrigado pela atenção.

    ResponderExcluir
  52. Olá, como faço para usar a ssid e a senha do wifi conectado para utilizar por exemplo em outra aplicação no mesmo programa?

    ResponderExcluir
  53. Queridos, estou com problemas com o WifiManager utilizado nesse exemplo em associação com o outro exemplo também dado pelo Fernado, que foi o WatchDog. O Esp32 tem reiniciado a cada 3 segundos (que foi o tempo definido do timmer.)

    Preciso chamar a função timerWrite(timer, 0); Mas não sei onde aplicar. Desculpe a pergunta, pode ser muito simples mas é o meu primeiro programa utilizado o ESP e um dos primeiros da minha vida com a liguagem C++

    Obrigado. O link do programa está abaixo.

    http://www.educalise.com.br/CaptacaoAguaTeste.ino

    ResponderExcluir
    Respostas
    1. Consegui resolver esse problema depois de muita luta. Seguem considerações:

      1º Modifiquei a porta do potenciometro #define POTENCIOMETRO 34 colocando nessa porta funciona, não me pergunte o porque, esse o pinout do meu ESP. Se alguem puder me dizer o motivo agradeço. https://circuits4you.com/wp-content/uploads/2018/12/ESP32-Pinout.jpg

      2º Coloquei os Timmers (WatchDog e o outro) Depois das rotinas de configuração do wifi. Então o watchdog não fica armado, consequentemente não fica reiniciando.

      Espero que isso ajude outros iniciantes como eu a resolver esses problemas.
      Vlw

      Excluir
  54. Outra pergunta, tem como fazer o programa não ficar parado enquanto não se configura o WiFi? Porque o programa não entra no loop enquanto o setup do wifi não for concluído. Essa é também uma das razões do porque o timerWrite(timer, 0); não funciona e reinicia.

    ResponderExcluir
  55. Galera alguém já fez algum edit nessa pagina Web do wifimanager?
    Exemplo: adicionar um botão para enviar dados pro ESP ou chamar outra pagina, enfim controlar o ESP por ela, sem ser somente os comandos de config no Wifi?

    ResponderExcluir
  56. Eu consigo fazer a funcionalidade do botão com m botão no meu app?

    ResponderExcluir
  57. Baixei as bibliotecas indicadas
    WifiManager-ESP32”, “DNSServer-ESP32” e “WebServer-ESP32”.

    e erros direto sem resolução

    Desinstalei as 3 bibliotecas

    Baixei pelo gerenciador de bibliotecas WiFiManager.h

    as outras duas já tinha versões incluídas na instalação da placa ESP32.

    ResponderExcluir
    Respostas
    1. Retire todas as bibliotecas aqui recomendadas de: C:\Users\grupo\Documents\Arduino\libraries
      Baixe a biblioteca wifimanager do link:
      https://www.arduino.cc/reference/en/libraries/wifimanager/
      Obs.: adicione através da Library Manager no Arduino IDE e instale-o a partir daí.

      Excluir
  58. Obrigado Fernando!

    Funcionou perfeitamente.

    Eu estava tendo problemas mas era um erro bobo meu.
    Eu tinha um projetinho já com rede definida o código que estava funcionado bem. mas eu queria essa facilidade de troca. Então, apenas acrescentei o seu código conforme você orientou. Aqui em casa sempre funcionou, mas quando eu ia para outra casa, não conseguia a conexão. Depois de muito quebrar a cabeça descobri que quando o ESP reiniciava, ele pegava a senha que ainda estava no código através do comando WiFi.begin(ssid, pass);
    Bastou eu comentar esta linha para funcionar.

    ResponderExcluir
  59. Olá Fernando bom dia bom dia estou tentando usar esse seu código wi-fi Manager,mais está doandoFernando essa falha,Erro compilando para a placa NodeMCU 1.0 (ESP-12E Module) você pode me uma dica com esse Erro.

    ResponderExcluir
  60. Boa tarde Fernando!
    Obrigado pelo post! Como iniciante, não estou conseguindo matar o problema que aparece nestas 3 linhas de código:

    wifiManager.setAPCallback(configModeCallback);
    wifiManager.setSaveConfigCallback(saveConfigCallback);
    wifiManager.autoConnect("UVMETER", "12345678");

    O erro que aparece é:

    expected unqualified-id before '.' token

    Alguma sugestão?
    Muito obrigado!

    ResponderExcluir
  61. No caso, como inserir fauxmo ou permitir controle da alexa? Obrigado.

    ResponderExcluir
  62. Caro Fernando , estou precisando de ajuda. Estou usando o seu exemplo. Ele abre o portal , escolho a rede WIFI , , ele reinicia e volta para o modo AP .

    ***** não está fazendo isto.
    3. Escolha uma das redes e coloque a senha (se precisar). Então, salve e aguarde o ESP reiniciar.
    4. Ao finalizar o boot, o ESP tentará se conectar na rede salva. Caso não consiga, irá habilitar um Ponto de Acesso.

    Pergunta : porque depois disto , ele não salva e vai para modo estação ?
    - Está voltando para modo AP ?

    //pino do botão
    const int PIN_AP = 2; significa o que ?


    void setup() {
    Serial.begin(115000);
    pinMode(PIN_AP, INPUT);
    //declaração do objeto wifiManager
    WiFiManager wifiManager;

    =======

    void loop() {
    WiFiManager wifiManager;
    //se o botão foi pressionado
    if ( digitalRead(PIN_AP) == HIGH ) {
    Serial.println("resetar"); //tenta abrir o portal
    if(!wifiManager.startConfigPortal("ESP_HORSE_AP", "12345678") ){
    Serial.println("Falha ao conectar");
    delay(2000);
    ESP.restart();
    delay(1000);
    }
    Serial.println("Conectou ESP_HORSE_AP !!!");
    }

    }


    Depois o dispositivo , parece que não lê quando aciono o botão RESET

    if ( digitalRead(PIN_AP) == HIGH ) HIGH quer dizer botão RESET ativado mesmo ???

    ResponderExcluir
  63. E por que fica dando esta mensagem no final da compilação ?

    Tenho que apertar o botão reset nesta hora ?

    Leaving...
    Hard resetting via RTS pin...

    ResponderExcluir
  64. Olá Fernando, tudo bem?

    Poderia me ajudar com esta mensagem de erro:

    =================================================================

    error: ‘class WiFiClass’ has no member named ‘softAPIP’

    Serial.println(WiFi.softAPIP()); //imprime o IP do AP

    =================================================================

    Já verifiquei a placa usada na compilação (no caso, estou usando “ESP32 Dev Module”)
    Já reinstalei as bibliotecas
    Já tentei usar as bibliotecas declaradas com ” ” colocá-las na mesma pasta do arquivo .ino
    Nada funcionou!! Você saberia me dizer o que pode estar errado?? E como posso corrigir??

    Fico no aguardo.
    Abraço

    ResponderExcluir
  65. Fernando, em qual versão do pacote ESP32 esse programa foi compilado?
    Tentei na 1.0.6, 1.0.5, 1.0.4 e 1.0.3 e em nenhuma dessas versões o código foi compilado.
    (Estou usando as mesmas bibliotecas disponibilizadas no site)

    ResponderExcluir
  66. Fernando, ótimo conteúdo, como sempre!!

    Você tem algum exemplo de como adicionar mais informações para o usuário preencher além do SSID e Senha?
    Gostaria de que o usuário entrasse com mais informações como um código para ser passado como parâmetro para uma API.

    Obrigado,
    Alexandre Marin

    ResponderExcluir
  67. Bom dia Fernando. Acompanho seu excelente trabalho desde o surgimento do ESP32. Estou tentando utilizar o código desse artigo, porém, quando o celular pede para fazer "login na rede" o acces point desconecta e não vai adiante, ou seja, não chega a scanear os roteadores acessiveis. coloquei algumas mensagens para ver onde o código está "passando" e verifiquei que ele nunca entra no "void loop()". Agradeço muito se me apresentar uma luz neste tunel... muito obrigado. (Também sou Fernando!)

    ResponderExcluir
  68. Este comentário foi removido pelo autor.

    ResponderExcluir
  69. Olá Fernando, gostaria de uma ajuda sua, gostaria de implementar, uma função em um botão, que ao ser pressionado por 10 segundos execute a função wm.resetsetings().
    Pode me auxiliar...

    ResponderExcluir
  70. Como faço para imprimir no navegador o IP que o ESP8266 assume após fazer a configuração pelo portal?

    ResponderExcluir
  71. Fernando, gran contenido, muchas gracias..! todo funciona bien.

    necesito como hago para obtener el SSID y la contraseña, luego que ya wifimanager alla conectado, ya que necesito usar esos datos para el blynk y llenar este comando: Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
    muchas gracias de antemano, saludos des Venezuela.

    ResponderExcluir
  72. Boa noite Fernando, estou tentando baixar os arquivos INO e PDF nos links acima, mas está dando erro de URL não encontrada, tem como conseguir os arquivos de outra forma. Cadastrei meu e-mail para receber posts, é eng.edsonferraz@gmail.com. É possível me enviar os arquivos pelo e-mail? Antecipadamente agradeço.

    ResponderExcluir