• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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 и если соединения нет то обходите передачу данных
 
Сверху Снизу