Skip to main content
edited tags
Link
Source Link

Watchdog timer errors for loops for webserver on ESP32

I am using ESP32 CAM module for a line follower robot. And, I am trying to create a webserver with 3 submit push buttons. But for now, I just observe the input on serial port and work with only one submit bar. These push buttons specifies the PWM value of motors and some constants. Here is my code:

#include "Arduino.h" #include "WiFi.h" #include "AsyncTCP.h" #include "ESPAsyncWebServer.h" AsyncWebServer server(80); // Internet ID and Password const char* ssid = "TURKSAT-KABLONET-BC75-2.4G"; const char* password = "d942d3db"; const char* PARAM_INPUT_1 = "input1"; const char* PARAM_INPUT_2 = "input2"; const char* PARAM_INPUT_3 = "input3"; // HTML web page to handle 3 input fields (input1, input2, input3) const char index_html[] PROGMEM = R"rawliteral( // Webserver design part <!DOCTYPE HTML><html><head> <title>ESP Input Form</title> <meta name="viewport" content="width=device-width, initial-scale=1"> </head><body> <form action="/get"> input1: <input type="text" name="input1"> <input type="submit" value="Submit"> // Submit bar 1 </form><br> <form action="/get"> input2: <input type="text" name="input2"> <input type="submit" value="Submit"> // Submit bar 2 </form><br> <form action="/get"> input3: <input type="text" name="input3"> <input type="submit" value="Submit"> // Submit bar 3 </form> </body></html>)rawliteral"; void notFound(AsyncWebServerRequest *request) { request->send(404, "text/plain", "Not found"); } String inputMessage; void Setup_to_Loop(String inputMessage); // Prototype of function void Setup_to_Loop(String inputMessage){ // Function to observe the variable while(1){ Serial.print(inputMessage); // Observe submit bar on serial port of Arduino delay(200); } } void setup() { Serial.begin(115200); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); if (WiFi.waitForConnectResult() != WL_CONNECTED) { Serial.println("WiFi Failed!"); return; } Serial.println(); Serial.print("IP Address: "); Serial.println(WiFi.localIP()); // Send web page with input fields to client server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){ request->send_P(200, "text/html", index_html); }); // Send a GET request to <ESP_IP>/get?input1=<inputMessage> server.on("/get", HTTP_GET, [] (AsyncWebServerRequest *request) { String inputMessage; String inputParam; // GET input1 value on <ESP_IP>/get?input1=<inputMessage> if (request->hasParam(PARAM_INPUT_1)) { // Check for which bar is filled ( bar 1 ) inputMessage = request->getParam(PARAM_INPUT_1)->value(); inputParam = PARAM_INPUT_1; } // GET input2 value on <ESP_IP>/get?input2=<inputMessage> else if (request->hasParam(PARAM_INPUT_2)) { // Check for which bar is filled ( bar 2 ) inputMessage = request->getParam(PARAM_INPUT_2)->value(); inputParam = PARAM_INPUT_2; } // GET input3 value on <ESP_IP>/get?input3=<inputMessage> else if (request->hasParam(PARAM_INPUT_3)) { // Check for which bar is filled ( bar 3 ) inputMessage = request->getParam(PARAM_INPUT_3)->value(); inputParam = PARAM_INPUT_3; } else { inputMessage = "No message sent"; inputParam = "none"; } Serial.println(inputMessage); request->send(200, "text/html", "HTTP GET request sent to your ESP on input field (" + inputParam + ") with value: " + inputMessage + "<br><a href=\"/\">Return to Home Page</a>"); // Send the values that were written on submit bars Setup_to_Loop(inputMessage); // Call of function }); server.onNotFound(notFound); server.begin(); } void loop() { } 

The recieved error is :

(20281) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time: E (20281) task_wdt: - async_tcp (CPU 0/1) E (20281) task_wdt: Tasks currently running: E (20281) task_wdt: CPU 0: IDLE0 E (20281) task_wdt: CPU 1: loopTask E (20281) task_wdt: Aborting. abort() was called at PC 0x400e5def on core 0 Backtrace: 0x4008efe0:0x3ffbe160 0x4008f211:0x3ffbe180 0x400e5def:0x3ffbe1a0 0x40081a15:0x3ffbe1c0 0x40147e4f:0x3ffbc170 0x400e1c53:0x3ffbc190 0x4008ce7d:0x3ffbc1b0 0x4008af7d:0x3ffbc1d0 Rebooting...