nodeMCU ขึ้น CUT HERE FOR EXCEPTION DECODER

Node MCU ขึ้น

--------------- CUT HERE FOR EXCEPTION DECODER ---------------
Soft WDT reset

>>>stack>>>

ctx: sys
sp: 3ffff510 end: 3fffffb0 offset: 01a0
3ffff6b0:  00860013 00000005 3fff118c 4020ff0c`

แก้ไขยังไงครับ

เบื้องต้น วางโค้ตที่ใช้ กับ แคป หน้า IDE มาดูหน่อยครับ

#include <SPI.h>
#include <Wire.h>
#include <ESP8266WiFi.h>
#include <SoftwareSerial.h>
#include <TridentTD_LineNotify.h>
#include <BlynkSimpleEsp8266.h>
SoftwareSerial NodeSerial(D4, D3); // RX | TX
#define BLYNK_PRINT Serial
#define SSID        "PWAHOME2sd"
#define PASSWORD    "P78991290WA"
#define LINE_TOKEN  "jtJlxIc9ZRMul0mHoKzuFtmj0kSwtDhYx6mPDoTB7uV"
char auth[] = "KWK-5oGEsWYGmJx8xHT8qb8Nn_Pib5jV";
int i_data;
float f_data;
int val;
int input;
int Total;
int Delay;
int ONLINE;
BlynkTimer timer;
WidgetLCD lcd(V7);
WidgetLED led(V8);
WidgetTerminal terminal(V13);
void setup()
{
  pinMode(D3, INPUT);
  pinMode(D4, OUTPUT);
  Serial.begin(9600);
  NodeSerial.begin(57600);
  WiFi.begin(SSID, PASSWORD);
  Serial.printf("WiFi connecting to %s\n",  SSID);
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(400);
 }
  Serial.println(WiFi.localIP());
  LINE.setToken(LINE_TOKEN);
  Blynk.begin(auth, SSID, PASSWORD, "blynk.iot-cm.com", 8080);
  timer.setInterval(1000L, sendUptime); 
}
void loop()
{
  while (NodeSerial.available())
  {
    i_data = NodeSerial.parseInt();
    f_data = NodeSerial.parseFloat();
    Total = i_data + input;    
    terminal.print(i_data);
    terminal.print(" : ");
    terminal.print(input);
    terminal.print(" : ");
    terminal.println(Total);
    delay(Delay);
    Serial.print("รับค่าอนาล็อก");
    Serial.print(" : ");
    Serial.println(Total);
    Blynk.run();
    timer.run();
    Blynk.setProperty(V1,"color","#3d94eb"); //ฟ้า
    Blynk.setProperty(V3,"color","#94eb3d"); //เขียว
    Blynk.setProperty(V5,"color","#3debeb"); // น้ำเงินเข้ม
    Blynk.setProperty(V6,"color","#3DEB94"); // น้ำเงินเข้ม
    if (WiFi.status() != WL_CONNECTED){ reconnect();}
    CheckConnection();
  }
}
void LINE1()
{
  Serial.println("ส่งเเรียบร้อย");
  LINE.notify(Total);
}
BLYNK_WRITE(V1) 
{
 if (param.asInt()==1) {
     ONLINE = 1;
     led.off();
 }else{
     ONLINE = 0;
     led.on();
 }
}
BLYNK_WRITE(V2)
{
  if (param.asInt() == 1){
    if(ONLINE=1)
    {
     LINE1();
     //delay(200);
    }
  }
}
BLYNK_WRITE(V3)
{
  if (param.asInt() == 1){
    LINE1();
    //delay(200);
  }
}
BLYNK_WRITE(V21) //รับค่า+-
{
  input = param.asInt();
  Blynk.virtualWrite(V1, input); 
}
BLYNK_WRITE(V22) //รับค่าหน่วง
{
  Delay = param.asInt();
}
void sendUptime()
{
  Blynk.virtualWrite(V6, Total);
  Blynk.virtualWrite(V5, Total);
}
void reconnect()
{
  Serial.print("Reconnecting");
  WiFi.mode(WIFI_STA);
  WiFi.begin(SSID, PASSWORD);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("Connected!");
}
void CheckConnection()   //เช็คการเชือมต่อของ blynk
{
  if(!Blynk.connected())
  {
    Blynk.connect(); 
  }
}

ถ้า กดที่ Blynk ให้ตัว NodeMcu ส่งข้อมูลแจ้เตือนผ่าน line จะ ขึ้นข้อ ความแบบนี้แล้วรีเซทเอง

--------------- CUT HERE FOR EXCEPTION DECODER ---------------

Soft WDT reset

>>>stack>>>

ctx: cont
sp: 3ffff580 end: 4010084d offset: 01a0
3ffff720:  00000000 3fff10a4 3fff1844 01000000  
3ffff730:  3ffff768 0000b9a7 3fff1844 40226860  
3ffff740:  000001bb 3fff1844 3ffff760 3fff03e4  
3ffff750:  3fff113c 0000b9a7 3fff146c 402103b2  
3ffff760:  3fff1844 3fff3afc 00000014 40206614  
3ffff770:  00003a98 3ffff7a0 3ffff840 40210414  
3ffff780:  00000000 00000000 3fff113c 3ffff7e0  
3ffff790:  000001bb 3ffe881d 3ffff828 40210613  
3ffff7a0:  00000000 00000000 3ffe881d 3ffff7e0  
3ffff7b0:  000001bb 3ffff828 3ffe881d 402106dd  
3ffff7c0:  40211268 ae8a68cb 40211268 ae8a68cb  
3ffff7d0:  00000000 3ffff958 3ffff94c 4020472b  
3ffff7e0:  40202ca1 00000030 00000010 ffffffff  
3ffff7f0:  40204df7 3ffef355 3ffff958 00000000  
3ffff800:  00000000 3ffff94c 3ffef704 3ffe88b9  
3ffff810:  3ffff940 3ffe88ba 00000000 3ffef370  
3ffff820:  3ffe88b9 3ffef370 40211488 00000000  
3ffff830:  00003a98 00000c11 3ffef224 3fff113c  
3ffff840:  3fff146c 3fff1174 7ffffffb ffff0208  
3ffff850:  3ffff8f0 7fffffff 00000057 3ffe869f  
3ffff860:  00000000 3ffe86b6 00000027 00000030  
3ffff870:  40103fc7 2c9f0300 4000050c 3fffc278  
3ffff880:  40102d7c 3fffc200 00000022 3ffecd18  
3ffff890:  40201029 00000030 00000010 ffffffff  
3ffff8a0:  00000004 3ffffa23 3ffff8d0 3ffff8c0  
3ffff8b0:  40248e2e 00000000 00000000 3ffef374  
3ffff8c0:  3ffef704 00000c11 3ffff958 402061e9  
3ffff8d0:  3ffefed4 40202ca4 3ffffa20 00000001  
3ffff8e0:  3ffef370 3ffe88b9 3ffef370 40204e1a  
3ffff8f0:  3ffff940 00000000 00000000 3ffef4d4  
3ffff900:  3ffff958 00000000 00000000 3ffff94c  
3ffff910:  3ffef704 3ffff940 3ffe88b9 40206152  
3ffff920:  3ffef370 3ffe88b9 3ffff940 40204e73  
3ffff930:  3ffff940 00000000 00000000 402054e8  
3ffff940:  40205400 3ffef3a8 80fe88b7 40205700  
3ffff950:  3ffef1ec 80000027 39383033 40205900  
3ffff960:  84fef1ec 00000003 3ffef3a8 40205998  
3ffff970:  3ffef1ec 00000003 3ffffa26 40201123  
3ffff980:  00000000 00000000 4bc6a7f0 40201162  
3ffff990:  00000000 00000003 3ffffa26 4020150c  
3ffff9a0:  00000000 00000000 4bc6a7f0 00000000  
3ffff9b0:  3ffffa25 00000001 00000001 0000b91f  
3ffff9c0:  00000003 00000000 00000000 3ffffa25  
3ffff9d0:  3ffffa26 3fff7776 00000000 40206790  
3ffff9e0:  00000006 00000005 00000005 3ffffa20  
3ffff9f0:  00000001 3ffffa20 3ffef1ec 3ffffa20  
3ffffa00:  00000001 3ffffa20 3ffef1ec 40201810  
3ffffa10:  00000001 3ffef210 3ffef1ec 402015ac  
3ffffa20:  33007776 e6003100 4bc6a700 00000000  
3ffffa30:  00000000 00000000 00000000 3ffffae0  
3ffffa40:  00000000 065bac14 00000000 3ffffae0  
3ffffa50:  3ffef1ec 3ffef210 00000000 40206790  
3ffffa60:  00000006 00000000 3ffef1ec 40206e72  
3ffffa70:  3ffef1ec 3ffef210 3ffef1ec 3ffffae0  
3ffffa80:  3ffef1ec 3ffef210 3ffef1ec 40201aa2  
3ffffa90:  00000000 3ffef210 00000000 40206790  
3ffffaa0:  00d60b0a 00000014 00000014 40206e72  
3ffffab0:  3ffef1ec 3ffef210 00000013 3ffffae0  
3ffffac0:  3ffef1ec 0000000f 00000013 3ffffae0  
3ffffad0:  3ffef1ec 0000000f 00000013 40201b6b  
3ffffae0:  0000b946 00000230 3ffffb40 00000000  
3ffffaf0:  3ffffae0 3ffffac0 3ffef210 00000001  
3ffffb00:  3ffffb40 0000b905 00040000 00000008  
3ffffb10:  3ffe8785 00000000 3fffff40 3ffe877f  
3ffffb20:  3ffef1ec 00000000 3fffff40 40201d80  
3ffffb30:  00000000 3ffecd18 3ffefed4 00000001  
3ffffb40:  6f630031 00726f6c 39643323 00626534  
3ffffb50:  00000005 00000005 00000002 40101e24  
3ffffb60:  3ffe95d2 4024063b 3ffecd18 00000020  
3ffffb70:  00000000 40233bb3 3ffee1f8 3ffefed4  
3ffffb80:  00000000 00000002 00000000 3ffecd18  
3ffffb90:  3fff17aa 4010571f 3fff1520 3ffef8b0  
3ffffba0:  3fff029c 00000000 3ffe9721 00000000  
3ffffbb0:  00000005 4021a0ad 3fff1520 3ffef8b0  
3ffffbc0:  00000002 00000000 00000005 40101e24  
3ffffbd0:  3ffe95d5 401050cf 3ffed010 00000000  
3ffffbe0:  3ffefcb0 3ffefc78 3fff1774 4021a33a  
3ffffbf0:  ffffffdc 3ffefc78 3fff1774 4021a758  
3ffffc00:  3ffefb2c 00000000 00000000 00000000  
3ffffc10:  ffffffdc 02c6d9ea 4010305a 3ffefb30  
3ffffc20:  3ffefcb0 00000000 3ffefc78 40221cdc  
3ffffc30:  00000001 00000080 00000000 00000000  
3ffffc40:  00000000 3fff1774 3ffffda0 02c6d9ea  
3ffffc50:  3fffc228 40105975 4000050c 3fff1774  
3ffffc60:  3fff1774 3ffefc84 3ffefc78 40221f30  
3ffffc70:  00000000 ffffffff 40206704 3fffefa0  
3ffffc80:  3fff17b8 3fff12f0 3ffefc78 40223720  
3ffffc90:  3fff12ec 00000000 00000020 40101010  
3ffffca0:  00000014 3fff12ec 000000ff 00000000  
3ffffcb0:  00000006 3ffefc20 00000000 40224214  
3ffffcc0:  00000005 00000000 00000020 40100554  
3ffffcd0:  3fff10bc 3ffefc78 00000005 40101e24  
3ffffce0:  00000000 00000000 00000020 40100554  
3ffffcf0:  401029bb 3ffecfe8 00000000 40101e24  
3ffffd00:  3ffe95d0 401050b7 3ffece80 40102b98  
3ffffd10:  00000001 40104292 3ffed750 4021f87a  
3ffffd20:  e4246735 00000001 3⸮Ј⸮
 ⸮9Dt⸮⸮
1 Like
  1. อธิบายการทำงานตรงนี้ให้ฟังหน่อยครับ ให้มันทำงานยังไง?
  2. แล้วตรง Delay นี้คือกำหนดไว้เท่าไหร่ ตอนที่มันรีเซต?
  3. ทำไมต้องใส่ while (NodeSerial.available()) ด้วย?

ภาพ

  1. หลักการทำงานมีอยู่ว่า ตัว NodeMCU จะรับค่าจาก UNO มาแสดงที่ แอพ Blnyk แล้ว เมื่อกดหรือตั้งเวลาในแอพจะส่งค่าที่รับมาให้ทาง Line
  2. Delay ตรงนี้คือจะตั้งค่าในแอพไว้ 100 ครับแต่ตอนเทสผมลองเอาออกแล้วยังเป็นอยู่ครับ
  3. เพื่อตรวจจสอบการส่งข้อมูลจาก ตัว UNO ว่ามาหรือไม่ครับ แต่ผมลองเอาออกแล้วยังเป็นอยู่ครับ
1 Like

ลองดูครับ

#include <SPI.h>
#include <Wire.h>
#include <ESP8266WiFi.h>
#include <SoftwareSerial.h>
#include <TridentTD_LineNotify.h>
#include <BlynkSimpleEsp8266.h>
SoftwareSerial NodeSerial(D4, D3); // RX | TX
#define BLYNK_PRINT Serial
#define SSID        "PWAHOME2sd"
#define PASSWORD    "P78991290WA"
#define LINE_TOKEN  "jtJlxIc9ZRMul0mHoKzuFtmj0kSwtDhYx6mPDoTB7uV"
char auth[] = "KWK-5oGEsWYGmJx8xHT8qb8Nn_Pib5jV";
int i_data;
float f_data;
int val;
int input;
int Total;
int Delay;
int ONLINE;
BlynkTimer timer;
WidgetLCD lcd(V7);
WidgetLED led(V8);
WidgetTerminal terminal(V13);
void setup()
{
  pinMode(D3, INPUT);
  pinMode(D4, OUTPUT);
  Serial.begin(9600);
  NodeSerial.begin(57600);
  WiFi.begin(SSID, PASSWORD);
  Serial.printf("WiFi connecting to %s\n",  SSID);
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(400);
 }
  Serial.println(WiFi.localIP());
  LINE.setToken(LINE_TOKEN);
  Blynk.begin(auth, SSID, PASSWORD, "blynk.iot-cm.com", 8080);
  timer.setInterval(1000L, sendUptime); 
}
void loop()
{
  while (NodeSerial.available())
  {
    i_data = NodeSerial.parseInt();
    f_data = NodeSerial.parseFloat();
    Total = i_data + input;    
    terminal.print(i_data);
    terminal.print(" : ");
    terminal.print(input);
    terminal.print(" : ");
    terminal.println(Total);
    delay(Delay);
    Serial.print("รับค่าอนาล็อก");
    Serial.print(" : ");
    Serial.println(Total);
    Blynk.run();
    timer.run();
    Blynk.setProperty(V1,"color","#3d94eb"); //ฟ้า
    Blynk.setProperty(V3,"color","#94eb3d"); //เขียว
    Blynk.setProperty(V5,"color","#3debeb"); // น้ำเงินเข้ม
    Blynk.setProperty(V6,"color","#3DEB94"); // น้ำเงินเข้ม
    if (WiFi.status() != WL_CONNECTED){ reconnect();}
    CheckConnection();
  }
}
void LINE1()
{
  Serial.println("ส่งเเรียบร้อย");
  LINE.notify(String(Total));
}
BLYNK_WRITE(V1) 
{
 if (param.asInt()==1) {
     ONLINE = 1;
     led.off();
 }else{
     ONLINE = 0;
     led.on();
 }
}
BLYNK_WRITE(V2)
{
  if (param.asInt() == 1){
    if(ONLINE=1)
    {
     LINE1();
     //delay(200);
    }
  }
}
BLYNK_WRITE(V3)
{
  if (param.asInt() == 1){
    LINE1();
    //delay(200);
  }
}
BLYNK_WRITE(V21) //รับค่า+-
{
  input = param.asInt();
  Blynk.virtualWrite(V1, input); 
}
BLYNK_WRITE(V22) //รับค่าหน่วง
{
  Delay = param.asInt();
}
void sendUptime()
{
  Blynk.virtualWrite(V6, Total);
  Blynk.virtualWrite(V5, Total);
}
void reconnect()
{
  Serial.print("Reconnecting");
  WiFi.mode(WIFI_STA);
  WiFi.begin(SSID, PASSWORD);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("Connected!");
}
void CheckConnection()   //เช็คการเชือมต่อของ blynk
{
  if(!Blynk.connected())
  {
    Blynk.connect(); 
  }
}

image


เปลียนแล้วครับ ยังเป็นเหมือนเดิมเลยครับ
แต่ผมลองย้าย ไปอยู่ setup แล้วลบ delay ใน loop ออกไม่เป็นครับ

Blynk.setProperty(V1, "color", "#3d94eb"); //ฟ้า
  Blynk.setProperty(V3, "color", "#94eb3d"); //เขียว
  Blynk.setProperty(V5, "color", "#3debeb"); // น้ำเงินเข้ม
  Blynk.setProperty(V6, "color", "#3DEB94"); // น้ำเงินเข้ม
1 Like

วางโค้ตเต็มทีได้แล้วให้ดูหน่อยครับ

#include <SPI.h>
#include <Wire.h>
#include <ESP8266WiFi.h>
#include <SoftwareSerial.h>
#include <TridentTD_LineNotify.h>
#include <BlynkSimpleEsp8266.h>
SoftwareSerial NodeSerial(D4, D3); // RX | TX
#define BLYNK_PRINT Serial
#define SSID        "PWAHOME2sd"
#define PASSWORD    "P78991290WA"
#define LINE_TOKEN  "jtJlxIc9ZRMul0mHoKzuFtmj0kSwtDhYx6mPDoTB7uV"
char auth[] = "KWK-5oGEsWYGmJx8xHT8qb8Nn_Pib5jV";
int i_data;
float f_data;
int val;
int input;
int Total;
int Delay;
int ONLINE;
BlynkTimer timer;
WidgetLCD lcd(V7);
WidgetLED led(V8);
WidgetTerminal terminal(V13);
void setup()
{
  pinMode(D3, INPUT);
  pinMode(D4, OUTPUT);
  Serial.begin(9600);
  NodeSerial.begin(57600);
  WiFi.begin(SSID, PASSWORD);
  Serial.printf("WiFi connecting to %s\n",  SSID);
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(400);
  }
  Serial.println(WiFi.localIP());
  Serial.println(Delay);
  Serial.println(Total);
  LINE.setToken(LINE_TOKEN);
  Blynk.begin(auth, SSID, PASSWORD, "blynk.iot-cm.com", 8080);
  timer.setInterval(1000L, sendUptime);
  Blynk.setProperty(V1, "color", "#3d94eb"); //ฟ้า
  Blynk.setProperty(V3, "color", "#94eb3d"); //เขียว
  Blynk.setProperty(V5, "color", "#3debeb"); // น้ำเงินเข้ม
  Blynk.setProperty(V6, "color", "#3DEB94"); // น้ำเงินเข้ม
}
void loop()
{
  i_data = NodeSerial.parseInt();
  f_data = NodeSerial.parseFloat();
  Total = i_data + input;
  //delay(100);
  delay(Delay);
  terminal.print(i_data);
  terminal.print(" : ");
  terminal.print(input);
  terminal.print(" : ");
  terminal.print(Total);
  terminal.print(" : ");
  terminal.println(Delay);
  Serial.print("รับค่าอนาล็อก");
  Serial.print(" : ");
  Serial.println(Total);
  Blynk.run();
  timer.run();
  if (WiFi.status() != WL_CONNECTED) {
    reconnect();
  }
  CheckConnection();
}
void LINE1()
{
  Serial.println("ส่งเเรียบร้อย");
  LINE.notify(String(Total));
}
BLYNK_WRITE(V1)
{
  if (param.asInt() == 1) {
    ONLINE = 1;
    led.off();
  } else {
    ONLINE = 0;
    led.on();
  }
}
BLYNK_WRITE(V2)
{
  if (param.asInt() == 1) {
    if (ONLINE = 1)
    {
      LINE1();
      //delay(200);
    }
  }
}
BLYNK_WRITE(V3)
{
  if (param.asInt() == 1) {
    LINE1();
    //delay(200);
  }
}
BLYNK_WRITE(V21) //รับค่า+-
{
  input = param.asInt();
}
BLYNK_WRITE(V22) //รับค่าหน่วง
{
  Delay = param.asInt();
}
void sendUptime()
{
  Blynk.virtualWrite(V6, Total);
  Blynk.virtualWrite(V5, Total);
}
void reconnect()
{
  Serial.print("Reconnecting");
  WiFi.mode(WIFI_STA);
  WiFi.begin(SSID, PASSWORD);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("Connected!");
}
void CheckConnection()   //เช็คการเชือมต่อของ blynk
{
  if (!Blynk.connected())
  {
    Blynk.connect();
  }
}
1 Like