Ajuda queda de conexão (Resolvido)

  • ​Bom pessoal após estudar um pouco sobre o módulo ESP-8266 ESP-01 Consegui montar um código que funciona hahaha

Bom estou usando o módulo ESP-8266 ESP-01 Junto do Arduino UNO e uma plaquinha de 4 reles.
Usando o código abaixo funciona normalmente por 1 minuto depois a conexão é perdida e preciso reiniciar o arduino.

No monitor serial aparece AT+CIPCLOSE=0  Depois disso não funciona até ser reiniciado.
Gostaria de alguma dica para ajudar a solucionar este problema desde já grato

  • #define SSID "teste"
  • #define PASSWORD "testando"
  • #include "uartWIFIUNO.h"
  • #include <SoftwareSerial.h>
  • WIFIUNO wifi;
  • extern int chlID;
  • // set pin numbers:
  • const int ledPin = 13; // Numero do led
  • const int relay1 = 2;
  • const int relay2 = 3;
  • const int relay3 = 4;
  • const int relay4 = 5;
  • boolean device1 = false;
  • boolean device2 = false;
  • boolean device3 = false;
  • boolean device4 = false;
  • void setup(){
  • pinMode(ledPin, OUTPUT);
  • pinMode(relay1, OUTPUT);
  • pinMode(relay2, OUTPUT);
  • pinMode(relay3, OUTPUT);
  • pinMode(relay4, OUTPUT);
  • //pinMode(ESP8266_CHPD, OUTPUT);
  • //digitalWrite(ESP8266_CHPD,LOW);
  • digitalWrite(relay1,HIGH);
  • digitalWrite(relay2,HIGH);
  • digitalWrite(relay3,HIGH);
  • digitalWrite(relay4,HIGH);
  • DebugSerial.println("ESP8266 Server v0.21");
  • if(!wifi.begin())
  • {
  • DebugSerial.println("Begin error");
  • }
  • bool b = wifi.Initialize(STA, SSID, PASSWORD);
  • if(!b)
  • {
  • DebugSerial.println("Erro ao Iniciar");
  • }
  • delay(8000); //make sure the module can have enough time to get an IP address
  • String ipstring = wifi.showIP();
  • DebugSerial.println(ipstring); //Mostra o endereço de IP do módulo
  • delay(1000);
  • wifi.confMux(1);
  • delay(100);
  • if(wifi.confServer(1,80))
  • DebugSerial.println("Servidor Ativado");
  • }
  • void loop()
  • {
  • char buf[500];
  • int iLen = wifi.ReceiveMessage(buf);
  • if(iLen > 1)
  • {
  • DebugSerial.print(buf);
  • //delay(300);
  • if (strncmp(buf, "GET /?status1=1", 15) == 1) {
  • //DebugSerial.print("RELAY 1 ON");
  • digitalWrite(relay1, HIGH);
  • device1 = true;
  • }
  • else if (strncmp(buf, "GET /?status1=0", 15) == 1) {
  • //DebugSerial.print("RELAY 1 OFF");
  • digitalWrite(relay1, LOW);
  • device1 = false;
  • }
  • if (strncmp(buf, "GET /?status2=1", 15) == 1) {
  • //DebugSerial.print("RELAY 2 ON");
  • digitalWrite(relay2, HIGH);
  • device2 = true;
  • }
  • else if (strncmp(buf, "GET /?status2=0", 15) == 1) {
  • //DebugSerial.print("RELAY 2 OFF");
  • digitalWrite(relay2, LOW);
  • device2 = false;
  • }
  • String cmd;
  • cmd = "HTTP/1.1 200 OK\r\n";
  • cmd += "Content-Type: text/html\r\n";
  • cmd += "Connection: close\r\n";
  • //cmd += "Refresh: 15\r\n";
  • cmd += "\r\n";
  • //cmd += "\r\n";
  • cmd += "\r\n";
  • //cmd += "ESP8266 Webserver

    "ESP8266 Web Server Control"

    ";
  • if(device1){
  • cmd +=("
    Device1 : ON");
  • }
  • else{
  • cmd +=("
    Device1 : OFF");
  • }
  • if(device2){
  • cmd +=("
    Device2 : ON");
  • }
  • else{
  • cmd +=("
    Device2 : OFF");
  • }
  • if(device3){
  • cmd +=("
    Device3 : ON");
  • }
  • else{
  • cmd +=("
    Device3 : OFF");
  • }
  • if(device4){
  • cmd +=("
    Device4 : ON");
  • }
  • else{
  • cmd +=("
    Device4 : OFF");
  • }
  • cmd += "\r\n";
  • wifi.Send(chlID,cmd);
  • // delay(200);
  • wifi.closeMux(chlID);
  • //delay(1000);
  • }
  • }

Resolvido divisor de tensão alterado!

RogerMxjr:
Resolvido divisor de tensão alterado!

Viva.

Também estou com um problema idêntico, logo ao 1/2 pedido, da me o mesmo sintoma.
Poderias disponibilizar o esquema das ligações arduino - ESP8266 ?
Eu tenho TX, RX, ligado ao arduino com um Level shifter, os 3.3v ( alimentado por um LM317 a 3.3vt ) CH_PD aos 3.3vt com resistência de 10k, e GND em comum.

Gracias.

arssant:
Viva.

Também estou com um problema idêntico, logo ao 1/2 pedido, da me o mesmo sintoma.
Poderias disponibilizar o esquema das ligações arduino - ESP8266 ?
Eu tenho TX, RX, ligado ao arduino com um Level shifter, os 3.3v ( alimentado por um LM317 a 3.3vt ) CH_PD aos 3.3vt com resistência de 10k, e GND em comum.

Gracias.

Qual é o level shiter? Porque é que não usa os 3,3V do Arduino? Quanto consome o level shifter?

luisilva:
Qual é o level shiter? Porque é que não usa os 3,3V do Arduino? Quanto consome o level shifter?

Viva.

Talvez tenha mal especificado, "level shifter" era mais correcto "Bi-Directional Logic Level Shifter da sparkfun ", no TX e RX.
O level shifter ta oki, voltei a testar com um sd card, e com uma eeprom atmel.
E para o TX e RX da ligação serial do arduino ao ESP. A alimentação 3.3 vts vcc é com um LM317 regulado a 3.3vts. Dado que o consumo do esp8266 por pico, pode chegar aos 600mA.

as cores dos resistores correspondem ao seus valores sendo assim os valores são 10k ohm , 220 ohm e 330 ohm

Usei este divisor porém deve-se notar as portas rx tx usadas em seu projeto e altera-las na sua ligação.
recomendo que use a biblioteca SoftwareSerial.h e defina o rx tx como portas digitais 10 , 11 rx tx
ou outras do seu gosto.

RogerMxjr:
![|500x305](http://3.bp.blogspot.com/-e4c7hcs-ZiQ/VRCXbIJxp6I/AAAAAAAADok/MCyhFiqH2X0
Usei este divisor porém deve-se notar as portas rx tx usadas em seu projeto e altera-las na sua ligação.
recomendo que use a biblioteca SoftwareSerial.h e defina o rx tx como portas digitais 10 , 11 rx tx
ou outras do seu gosto.
[/quote]

Viva.

Muito obrigado pela info.
Parece que andamos nos mesmo locais a procura.
Foi com base nesse diagrama que andei a testar o esp8622. Em vx de utilizar divisores de tensão, optei pelo Logic Level Shifter. Vou testar com o codigo que colocou aqui no forum, junto com os valores das resistências que indicou. Também coloquei a lib serial que indicou no meu codigo.

Mais uma vx, obrigado.

)