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.
Tags:
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:
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.
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.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por