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:
Pois é, mas ai que está, eu consigo fazer o blink funcionar e piscar a led normal, mas para isso preciso usar apenas o código do blink:
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
===========
Se eu colocar assim, funciona perfeito.
Da mesma forma se eu colocar só o código para a parte wifi que estou testando funciona também.
Quando eu junto os dois códigos é que dá o erro. E não adianta nem trocar a led de pino.
Não aparece erro no compilador, e a led ou fica acessa permanentemente ou não liga.
Me parece uma instabilidade do modulo na realidade, ou até de firmware. Meu modulo é o NodeMCU V.3 - Lolin com ESP12-E Já efetuei o mesmo teste em 4 deles.
Tentou isso ?
O Led azul do modulo EP8266-12 esta conectado no GPIO 1 , mas no ESP8266-12E o Led esta conectado no pino GPIO 2. O led do GPIO 2 (D2) corresponde ao pino TX1 da comunicação serial (secundária) Sugiro que desative a comunicação serial no seu Sketch, para efeito de testes.
Caro José estava olhando o seu link:
https://github.com/esp8266/Arduino
Eu já fiz esse procedimento de instalar os arquivos para funcionar com a IDE do Arduino. Estou comessando a desconfiar do bootloader da placa, talves eu esteja com uma versão diferente de esp que não é o 12-E, percebi que o pessoal está chamando o bootloader de firmware.
Você já leu sobre algum firmware ou bootloader específico para Esp-12E para trabalhar na IDE do arduino?
Edilson, bom dia.
Se já conseguiu carregar o FW da IDE Arduino, esqueça o FW NonOS da Espressif.
O que esta rodando é o FW carregado da IDE do Arduino.
Sugiro que desative a comunicação serial no seu Sketch, para efeito de testes.
Edilson, enxuguei seu código e utilizei a constante D4 (que é o GPIO2). Compilei numa NodeMCU 0.9 (ESP-12 Module) e em uma NodeMCU 1.0 (ESP-12e Module)
Veja aqui:
Se não funcionar, comece a desconfiar do seu hardware ou da sua instalação, o código não é o problema
Você configurou corretamente a placa na IDE do Arduino ?
É importante isso. NodeMCU 0.9 é uma coisa, NodeMCU 1.0 é outra. Generic Module é outra.
Qual a função do pino CS0 ?
Edilson, bom dia !
Não há nada de errado com sua placa ou bootloader.
Para trabalhar com o nodeMCU na IDE do Arduino não precisa gravar nenhum bootloader.
Veja meu artigo sobre isso em: http://josecintra.com/blog/programando-nodemcu-esp8266-ide-arduino/
Se o código do blink está funcionando OK, então o problema é simplesmente no código do WiFiManager. Não tem nada a ver com a pinagem.
Para acessar a Internet, o WiFiManager é apenas um facilitador, nem ele é necessário..
Veja este outro exemplo: http://josecintra.com/blog/nodemcu-web-server-ajax/
O que está acontecendo é que o WiFiManager não permite acessar a rotina que está no loop, enquanto você não libera a configuração do WiFi que deve ser feita remotamente acessando de um outro terminal.
Veja um artigo sobre o WiFiManager aqui: http://pedrominatel.com.br/esp8266/biblioteca-wifimanager-para-o-es...
Veja a explicação para isso do próprio criador do WiFiManager:
If you would rather start the configuration portal on demand rather than automatically on a failed connection attempt, then this is for you.
Instead of calling autoConnect()
which does all the connecting and failover configuration portal setup for you, you need to use startConfigPortal()
. Do not use BOTH.
void loop() {
// is configuration portal requested?
if ( digitalRead(TRIGGER_PIN) == LOW ) {
WiFiManager wifiManager;
wifiManager.startConfigPortal("OnDemandAP");
Serial.println("connected...yeey :)");
}
}
Entendi, então como não recebo a mensagem de conectado, ele não continua a ler o código correto?
Muito obrigado Jose
Resolvido era isso mesmo!
Quando recebi a mensagem de conectado rodou o código do loop.
Alterei o título do tópico para ficar correspondente ao problema real caso alguém o enfrente também.
Poderia me dar uma última informação? Você sabe se é possível usar o configurador por interface web dessa biblioteca sem travar o código loop? Por que estou pensando em usar em um projeto que precisa que o código loop seja executado independente de o wifi estar conectado ou não, se isso não é possível conhece alguma outra biblioteca que permita a configuração por interface web para que eu de uma estudada nela?
Olá Edilson!
Nunca usei essa library WiFiManager.
Fiquei conhecendo através do seu post.
Assim que puder, vou testá-la, pois achei bem interessante.
Tire a configuração do setup e tente fazer toda a configuração dentro do loop, dessa forma:
void loop() {
WiFiManager wifiManager;
wifiManager.startConfigPortal("OnDemandAP");
Serial.println("connected");
... coloque o código do blink aqui...
}
Se não der certo:
Quem conhece bem essa library é o Pedro Minatel. Tente enviar uma mensagem para ele no blog:
http://pedrominatel.com.br/esp8266/biblioteca-wifimanager-para-o-es...
Informe timeout antes de chamar autoConnect()
#include <WiFiManager.h>
void setup() {
pinMode(D4, OUTPUT);
WiFiManager wifiManager;
//sets timeout in seconds
wifiManager.setTimeout(20);
if(!wifiManager.autoConnect("AutoConnectAP")) {
Serial.println("failed to connect and hit timeout");
}
else {
Serial.println("Conectado...");
}
}
void loop() {
//vc vai chegar aqui mesmo sem conexão WiFi
digitalWrite(D4,HIGH);
delay(1000);
digitalWrite(D4, LOW);
delay(1000);
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por