Esp8266 รีเซ็ทเอง

มันขึ้น Heartbeat timeout เเละรีเซ็ทตัวเอง เกิดจากอะไรครับ

ตัวอย่างโค้ด

#define BLYNK_PRINT Serial
#include <TridentTD_LineNotify.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#define SSID        "TFELECTRONIC 1"      // บรรทัดที่ 11 ให้ใส่ ชื่อ Wifi ที่จะเชื่อมต่อ Namo_ok 2.4G
#define PASSWORD    "091238tunyok"     // บรรทัดที่ 12 ใส่ รหัส Wifi 0910390929
#define LINE_TOKEN  "rk3NesD1ZUUn2Tp9AZ0pr9jjjz9k4jhhuoZuiQZgWKD"   // rk3NesD1ZUUn2Tp9AZ0pr9jjjz9k4jhhuoZuiQZgWKD

// token ,wifi user ,wifi password
char auth[] = "zMuKC40mMENmzRpv19Yamp-uHzfaYgvJ";
char ssid[] = "TFELECTRONIC 1";
char pass[] = "091238tunyok";
WidgetBridge bridge1(V11);
const int Relay1  = D4; //ไฟสัญญาณเตือนไฟดับ
const int Relay2  = D5; //ชุดไฟสัญญาณไฟฟ้าปกติ
const int Relay3  = D6;  //ชุดไฟเลี้ยง relay 220vac
const int Relay4  = D7;  //ตัดไฟเครื่องปั้นไฟ
const int button  = D1;
const int button2 = D2;
bool buttonStatus = 0;
bool buttonTemp = 0;

WidgetLED ledBlynk(V10);

BlynkTimer timer;

BLYNK_CONNECTED() {
   bridge1.setAuthToken("2_bjdxiGehJgDasHL0BaCc_gyUpBGu8H"); // token rx ตัวรับ
  Blynk.syncAll();
}

void checkStatusButton()

{
      delay(5000);
  buttonStatus = digitalRead(button2);  //ไฟฟ้าหลักใช้งานได้ปกติ

  if (buttonStatus != buttonTemp)
  {
    
    if (buttonStatus == HIGH)   //sw ปล่อย ไฟฟ้าปกติ 
    {
       delay(1100);
       Serial.println("ไฟฟ้าปกติ");
     
      delay(500);
      digitalWrite(Relay1, HIGH); //ไฟสถานะสีเเดง ดับ
      delay(500);
    
      bridge1.virtualWrite(V11, 0); 
      Blynk.virtualWrite(V12, 1);   //ไฟสถานะสีเขียว ทำงาน
      
     
       LINE.notify("ไฟฟ้าหลักใช้งานได้ปกติ");      ///sw ปล่อย ไฟฟ้าใช้งานได้ปกติ
      
      delay(500);
     
    
      delay(500);
      digitalWrite(Relay4, HIGH); // สวิซเปิด-ปิดเครื่องปั่นไฟ
      delay(1000);
      digitalWrite(Relay3,HIGH); // relay 220vac
       bridge1.virtualWrite(V11, 0); 
      LINE.notify("เครื่องปั่นไฟหยุดทำงานเเล้ว");      ///sw ปล่อย ไฟฟ้าใช้งานได้ปกติ
      digitalWrite(Relay2, LOW);  //ไฟสถานะสีเขียว ทำงาน
    }
    else 
    
   
    {
     
    
     Serial.println("ไฟฟ้าหลักดับ");
     bridge1.virtualWrite(V11, 1);  //ไฟสถานะสีเเดง ทำงาน
      delay(1100);
      digitalWrite(Relay1, LOW);  //ไฟสถานะสีเเดง ทำงาน
        delay(500);
       digitalWrite(Relay2, HIGH);  //ไฟสถานะสีเขียว ดับ
       delay(500);
       digitalWrite(Relay4, LOW);  //สวิซเครื่องปั่นไฟเปิด
       
  for (int k=1;k<12;k++)
     {
       LINE.notify("ไฟฟ้าหลักดับ กรุณาสตาร์ทเครื่องกำเนิดไฟ");      ///sw กด ไฟฟ้าดับ สั่งสตาร์ทเครื่องกำเนิดไฟ
      delay(100);
     
    }
      
       Blynk.virtualWrite(V12, 0); //ไฟสถานะสีเขียว ดับ
  
     bridge1.virtualWrite(V11, 1);  //ไฟสถานะสีเเดง ทำงาน
      digitalWrite(Relay3, LOW); // relay 220vac
       }
    buttonTemp = buttonStatus;
 
  }
}

BLYNK_WRITE(V11)  //ไฟสถานะสีเเดง
{
  if (param.asInt() == 0)    
  {
    digitalWrite(Relay1, HIGH);
     
  
  }
  if (param.asInt() == 1)    
  {
    digitalWrite(Relay1, LOW);
    
  }
}
BLYNK_WRITE(V12)   //ไฟสถานะสีเขียว
{
  if (param.asInt() == 0) 
  {
  
    digitalWrite(Relay2, HIGH);
  
  }
  if (param.asInt() == 1)
  {
   digitalWrite(Relay2, LOW);
    
  }
}

void setup() {
  Serial.begin(9600);
  //led
  pinMode(Relay1, OUTPUT);
  pinMode(Relay2, OUTPUT);
  pinMode(Relay3, OUTPUT);
  pinMode(Relay4, OUTPUT);
  //set default status
  digitalWrite(Relay1, HIGH);  ///สถานะรีเลย์ ปิด
  digitalWrite(Relay2, HIGH);
  digitalWrite(Relay3, HIGH);
  digitalWrite(Relay4, HIGH);
  //button
  pinMode(button, INPUT);
   pinMode(button2, INPUT);
  //start blynk
  Blynk.begin(auth, ssid, pass);
  timer.setInterval(500, checkStatusButton);
   Serial.println();
  Serial.println(LINE.getVersion());

  WiFi.begin(SSID, PASSWORD);
  Serial.printf("WiFi connecting to %s\n",  SSID);
  while (WiFi.status() != WL_CONNECTED) 
  {
    Serial.print(".");
    delay(400);
  }
   Serial.printf("\nWiFi connected\nIP : ");
  Serial.println(WiFi.localIP());

  // กำหนด Line Token
  LINE.setToken(LINE_TOKEN);
}

void loop() {
  
   
  Blynk.run();
  timer.run();
}

เน็ตวิ่งไป server นอกประเทศช้ามากครับ ถามว่าใช้เน็ตของเจ้าไหน แต่ละเจ้าไม่เท่ากัน ช้าเร็วเป็นบางช่วงด้วย ถ้าไม่เกี่ยวกับเน็ต ก็อาจจะเป็น ที่ server เอง กำลังอัพเดท เลยหยุดการเชื่อมต่อชั่วขณะ

ปกติ ไม่ เกิน 200 ms ครับ