RESOLVIDO - ESP8266 12 - E não roda código do loop ao usar biblioteca Wifimanager

Para fins de teste de estabilidade resolvi unir 2 códigos no ESP preparado para IDE do Arduino de modo que o mesmo crie uma rede com um configurador de wirelles via web usando a biblioteca Wifimanager (https://github.com/tzapu/WiFiManager) e ao mesmo tempo o exemplo Blink do arduino.

A idéia é ficar piscando a led do modulo enquanto o mesmo estiver ligado, para ter certeza visualmente que ele está ligado e funcionando, e comparar se a rede está disponível e funcional nesse período de teste. É um teste de estabilidade do módulo.

O código é o seguinte:

//=======================

#include <ESP8266WiFi.h> //https://github.com/esp8266/Arduino

//needed for library
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h> //https://github.com/tzapu/WiFiManager


void setup() {
pinMode(2, OUTPUT);

// put your setup code here, to run once:
Serial.begin(115200);
//Monitora funcionamento

//WiFiManager
//Local intialization. Once its business is done, there is no need to keep it around
WiFiManager wifiManager;
//reset saved settings
//wifiManager.resetSettings();

//set custom ip for portal
//wifiManager.setAPConfig(IPAddress(10,0,1,1), IPAddress(10,0,1,1), IPAddress(255,255,255,0));

//fetches ssid and pass from eeprom and tries to connect
//if it does not connect it starts an access point with the specified name
//here "Rede teste"
//and goes into a blocking loop awaiting configuration
wifiManager.autoConnect("Configura_brinco_01");
//or use this for auto generated name ESP + ChipID
//wifiManager.autoConnect();


//if you get here you have connected to the WiFi
Serial.println("conetado!");

}


void loop() {
digitalWrite(2, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(2, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}

//=====================

O estranho que é a parte do blink não funciona de forma nenhuma. Mesmo se eu trocar o pino digital para outro, nesse código específico por comodidade estou usando o LED da própria placa do NodeMCU Lolin.

Será que alguém tem idéia do porque o código do led não funciona e o do wifi sim?

Detalhe: Se eu coloco só o código do blink funciona normal o led. 

Não dá nenhum erro de compilação quando uno os 2 códigos.

Exibições: 5807

Responder esta

Respostas a este tópico

Olá Edilson!

Se você está com dúvida sobre qual é a porta do LED interno do NodeMCU, existe uma constante que não falha: LED_BUILTIN

No setup:

pinMode(LED_BUILTIN, OUTPUT);

 

E no loop:

digitalWrite(LED_BUILTIN...

Obs:

1) Esse número de porta 25 que você usou, eu acho que não existe no NodeMCU.

2) O seu código do wifi está todo comentado. Passe o código que você realmente usou para ficar mais fácil te ajudar...

Perdão foi um erro meu, foi esse código exato que usei só que com o pino 2, corrigi o código lá em cima.

#include <ESP8266WiFi.h>

//needed for library
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h>


void setup() {
pinMode(2, OUTPUT);
Serial.begin(115200);
WiFiManager wifiManager;

wifiManager.autoConnect("Configura_rede");

Serial.println("conetado!");

}


void loop() {
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(2, LOW);
}

Removi os comentários e usei o pino correto da led da placa que é o 2 e funciona no exemplo do blink do arduino, e mesmo assim nada. Se eu uso o código do blink separado funciona, se eu junto os dois, não funciona o pisca pisca da led, mas a parte web funciona.

Oi Edilson,

Não existe pino 25 no NodeMCU. Não sei pra onde o compilador mandou... sorte que não travou. Ou travou e você não percebeu.

Você ganhou a mensagem "conetado!" ?

Dá um look nessa imagem:

http://imgur.com/a/EtqoS

São os pinos disponiveis. Utilize os GPIO's nos quadrados bege, de pŕeferencia os que não são utilizados por nada mais (GPIO4 e GPIO5 é uma boa idéia)

Tá tudo comentado no exemplo que você nos enviou:

#include <ESP8266WiFi.h> //https://github.com/esp8266/Arduino

//needed for library
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h> //https://github.com/tzapu/WiFiManager

Não vai funcionar nunca com todos esses comentários.

Siga a sugestão do nosso amigo JAC, retire os comentários irrelevantes.

Perdão foi um erro meu, foi esse código exato que usei só que com o pino 2, corrigi o código lá em cima, vou remover os comentários e recompilar e digo o que aconteceu. Não recebi a mensagem de conectado, apenas aparece a rede para fazer a configuração, se eu configuro, aparentemente tudo ocorre bem, mas não recebo a mensagem "Conectado".

#include <ESP8266WiFi.h>

//needed for library
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h>


void setup() {
pinMode(2, OUTPUT); 
Serial.begin(115200); 
WiFiManager wifiManager;

wifiManager.autoConnect("Configura_rede");

Serial.println("conetado!");

}


void loop() {
digitalWrite(2, HIGH); 
delay(1000); 
digitalWrite(2, LOW); 
}

Removi os comentários e usei o pino correto da led da placa que é o 2 e funciona no exemplo do blink do arduino, e mesmo assim nada. Se eu uso o código do blink separado funciona, se eu junto os dois, não funciona o pisca pisca da led, mas a parte web funciona.

Edilson , onde esta a configuração do ESP8266 para ele se conectar na rede ???

Tem que ter o setup inserido, senão nunca conseguirá conexão. 

void setup() {
// put your setup code here, to run once:
Serial.begin(115200);

//first parameter is name of access point, second is the password 
wifiManager.autoConnect("AP-NAME", "AP-PASSWORD");

https://github.com/tzapu/WiFiManager

Perdão foi um erro meu, foi esse código exato que usei só que com o pino 2, corrigi o código lá em cima.

O código todo responsável pela conexão está todo na biblioteca, que o código chama na

#include <wifimanager.h>

Todos os parâmetros já são automáticos nela, e abre uma interface web para que se possa scanear as redes e escolher qual deseja conectar ai basta inserir a senha e pronto. 

Essa parte não está me dando erro, apenas a parte do blink, que copiei do exemplo basic do arduino mesmo, que não funciona para piscar a led da placa que é no pino 2, se eu coloco o código do blink sozinho com pino 2 pisca a led perfeitamente.

Pelo que li na documentação esse comentário:

//first parameter is name of access point, second is the password 
wifiManager.autoConnect("AP-NAME", "AP-PASSWORD");

https://github.com/tzapu/WiFiManager


Só deve ser descomentado caso deseje configurar já automático uma conexão. Se não for descomentado, ela vai seguir o roteiro e abrir o wifimanager na interface web.

Sim, correto. Desde que você já tenha informado as credenciais de seu roteador e tenha conseguido uma conexão anterior.

Murta, não é necessariamente necessário; se tiver tido alguma conexão com sucesso, o WiFiManager grava a informação do login no ESP.

Na próxima conexão você pode utilizar apenas WiFi.connect(). Sem argumentos.

Amigo se vc está usando o nodemcu coloque porta do led com "D2" e não como "2" como você está fazendo.Exempl:

pinMode (D2, OUTPUT);// define gpio4 ou D2 (no caso do nodemcu )como saida
digitalWrite( D2, 1); liga led na porta gpio4 ou D2 no caso do nodemcu

eu passei exatamente por isso não conseguindo fazer um simples blink no nodemcu e era somente a nomeação das portas.

Se coloco assim, recebo esse erro na compilação:

exit status 1
'D2' was not declared in this scope

Lembro que não estou usando o Firmware do NodeMCU e sim a Firmware para poder usa-lo com a linguagem do arduino. Dessa forma eu teria que declarar  o que é D2, ou seja seria algo como:


const int D2 =  2  

De qualquer forma eu teria que usar um número de pino, mas ai está, eu uso o exemplo do blink do arduino com pino 2 e funciona, é apenas quando misturo os códigos que não funciona.

O problema que o compilador não dá erro nenhum, ai não tem como eu saber o que está acontecendo. 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço