• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь Периодический Disconect от Wi-Fi

evgenii0016

New member
Всем доброго времени суток!
Подскажите причину проблемы: периодически с разным интервалом esp отключается от сети, код следующий
Код:
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <dht11.h>      
#include "DHT.h"
#define DHTTYPE DHT11

int hh = 0;
const byte dht_pin = 2;

DHT dht(dht_pin, DHTTYPE);
const char* ssid = "Tested";
const char* password = "pass";
WiFiUDP Udp;
unsigned int localUdpPort = 4400; 

char packetBuffer[UDP_TX_PACKET_MAX_SIZE];

IPAddress ip(192, 168, 10, 159); 
IPAddress gateway(192, 168, 10, 1);
IPAddress subnet(255, 255, 255, 0);
void setup()
{
  Serial.begin(115200);
  delay(500);
  Serial.println();
  dht.begin();
  Serial.printf("Connecting to %s ", ssid);

  WiFi.config(ip, gateway, subnet);      
  WiFi.begin(ssid, password);
 
 
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(1000);
    Serial.print(".");
  }
  Serial.println(" connected");
  Udp.begin(localUdpPort);
  Serial.printf("Now listening at IP %s, UDP port %d\n", WiFi.localIP().toString().c_str(), localUdpPort);
       
}
void loop()     
{ 
 

  if (hh == 0) {Serial.println("void loop() start "); hh++;}
 
  int packetSize = Udp.parsePacket();
  if (packetSize)
  {
    Serial.print("Received packet of size ");
    Serial.println(packetSize);
    Serial.print("From ");
    IPAddress remote = Udp.remoteIP();
    for (int i =0; i < 4; i++)
    {
      Serial.print(remote[i], DEC);
      if (i < 3)
      {
        Serial.print(".");
      }
    }
    Serial.print(", port ");
    Serial.println(Udp.remotePort());
    Udp.read(packetBuffer,UDP_TX_PACKET_MAX_SIZE);
    Serial.println("Contents:");
    Serial.println(packetBuffer);

    String str = packetBuffer;

    if (str[0] == 50 && str[2] == 49)
      {    
        Udp.beginPacket(Udp.remoteIP(), 4400);
        str+=":";
        str+=dht.readTemperature();
        str+=":";
        str+=dht.readHumidity();
        Serial.println("send:");
        Serial.println(str);
        Udp.print(str);
        Udp.endPacket();
    }
}
}
Модуль подключается к сети wi-fi, далее сервер обращается к нему по udp, и модуль отправляет ответ с показаниями температуры и влажности. Но периодически (когда и 50 запросов пройдет, а когда только 1 (запросы каждые 10 сек)), esp перестает отвечать, и в мониторе порта следующее:
Код:
Exception (29):
epc1=0x40218fbf epc2=0x00000000 epc3=0x00000000 excvaddr=0x000000e0 depc=0x00000000

ctx: sys
sp: 3ffffda0 end: 3fffffb0 offset: 01a0

>>>stack>>>
3fffff40:  4022304c 00000000 3ffe9e34 3ffe9e40 
3fffff50:  00000000 00000022 00000000 00000036 
3fffff60:  00000000 3ffe9e4a 40222993 3ffec9b0 
3fffff70:  3ffe9e34 3fffdcc0 3ffe8ff0 3ffe8ff0 
3fffff80:  000000b0 3ffec9b0 00000002 00000000 
3fffff90:  40222253 3fffdab0 00000000 00000005 
3fffffa0:  3ffe8ff0 40000f49 3fffdab0 40000f49 
<<<stack<<<

ets Jan  8 2013,rst cause:4, boot mode:(3,6)

wdt reset
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v614f7c32
~ld
В чем может быть причина?
Заранее спасибо за ответы
 

CodeNameHawk

Moderator
Команда форума
Связь теряется по разным причинам.
Перед тем как посылать в сеть, делайте проверку на наличие соединения.
Существует авто переподключение.
 

nikolz

Well-known member
Всем доброго времени суток!
Подскажите причину проблемы: периодически с разным интервалом esp отключается от сети, код следующий
В чем может быть причина?
Заранее спасибо за ответы
возможно винов этот цикл
  1. while (WiFi.status() != WL_CONNECTED)
  2. {
  3. delay(1000);
  4. Serial.print(".");
  5. }
 

nikolz

Well-known member
сделайте проверку соединения в loop и если соединения нет то обходите передачу данных
 
Сверху Снизу