ESP8266 получение мягкого сброса WDT
esp8266
error
Я пытаюсь получить некоторые данные с сайта на ESP8266, но когда я снизил скорость передачи данных (потому что был шум при общении с другими устройствами) Я продолжаю получать эту ошибку
13:09:41.550 -> --------------- CUT HERE FOR EXCEPTION DECODER ---------------
13:09:42.109 ->
13:09:42.109 -> Soft WDT reset
13:09:42.109 ->
13:09:42.109 -> >>>stack>>>
13:09:42.388 ->
13:09:42.388 -> ctx: cont
13:09:42.388 -> sp: 3ffffc00 end: 3fffffc0 offset: 01a0
13:09:42.621 -> 3ffffda0: 3fff03bc 00000001 3ffffe20 3fffff68
13:09:43.179 -> 3ffffdb0: 3fff7527 00000000 32202c35 4020a95d
13:09:43.689 -> 3ffffdc0: 3fff7334 00000001 3ffffe20 40206a60
13:09:43.972 -> 3ffffdd0: 00f42400 5b5b92c4 3ffffe00 3fffff68
13:09:44.484 -> 3ffffde0: 000000c8 3ffef158 3ffef158 40208080
13:09:44.764 -> 3ffffdf0: 000000c8 3ffef158 3ffffeac 402084c1
13:09:45.321 -> 3ffffe00: 000000c8 3ffef158 3ffffeac 40208⸮⸮⸮⸮
В середине распечатки некоторые значения
Вот мой код, я попробовал функцию yield ()
, но она ничего не сделала.
#include <ArduinoJson.h>
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClientSecureBearSSL.h>
#ifndef PSTR
#define PSTR // Make Arduino Due happy
#endif
#define PIN 12
StaticJsonDocument<2500> response;
Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(16, 16, PIN,
NEO_MATRIX_TOP + NEO_MATRIX_RIGHT +
NEO_MATRIX_ROWS + NEO_MATRIX_ZIGZAG,
NEO_GRB + NEO_KHZ800);
String str;
void setup(){
matrix.begin();
matrix.setBrightness(1);
Serial.begin(1200);
Serial.setTimeout(30000);
Serial.println(F("Connecting to WIFI!"));
WiFi.mode(WIFI_STA);
WiFi.begin("", "");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println(F("\n\rWiFi connected!"));
delay(2000);
}
String getData() {
std::unique_ptr<BearSSL::WiFiClientSecure>client(new BearSSL::WiFiClientSecure);
client->setInsecure();
HTTPClient https;
if (https.begin(*client, "https://api..cz/")) { // HTTPS
Serial.println("[HTTPS] GET...");
int httpCode = https.GET();
// httpCode will be negative on error
if (httpCode > 0) {
// HTTP header has been send and Server response header has been handled
Serial.printf("[HTTPS] GET... code: %d\n", httpCode);
// file found at server?
if (httpCode == HTTP_CODE_OK) {
String payload = https.getString();
yield();
Serial.println(payload);
return payload;
}
} else {
Serial.printf("[HTTPS] GET... failed, error: %s\n\r", https.errorToString(httpCode).c_str());
}
https.end();
} else {
Serial.printf("[HTTPS] Unable to connect\n\r");
}
}
void loop()
{
const auto deser_err = deserializeJson(response, getData());
if (deser_err) {
Serial.print(F("Failed to deserialize, reason: \""));
Serial.print(deser_err.c_str());
Serial.println('"');
} else {
Serial.print(F("Recevied valid json document with "));
Serial.print(response.size());
Serial.println(F(" elements."));
Serial.println(F("Pretty printed back at you:"));
serializeJsonPretty(response, Serial);
Serial.println();
}
matrix.fillScreen(0);
for (JsonObject elem : response.as<JsonArray>()) {
int x = elem["x"]; // 2, 2, 2
int y = elem["y"]; // 2, 2, 2
JsonArray rgb = elem["rgb"];
int rgb_0 = rgb[0]; // 255, 255, 255
int rgb_1 = rgb[1]; // 255, 255, 255
int rgb_2 = rgb[2]; // 255, 255, 255
matrix.drawPixel(x, y, matrix.Color(rgb_0, rgb_1, rgb_2));
Serial.println(y);
}
matrix.show();
delay(10000);
}
@krystof18, 👍0
Обсуждение0
Смотрите также:
- ESPTool 3 - ошибка запуска заглушки
- Ошибка при компиляции кода модуля NODE MCU ESP8266-12E в Arduino ide
- Как читать и записывать EEPROM в ESP8266
- Как сделать выводы Tx и Rx на ESP-8266-01 в выводах GPIO?
- Как навсегда изменить скорость передачи данных ESP8266 (12e)?
- Как заставить 5-вольтовое реле работать с NodeMCU
- Как исправить: Invalid conversion from 'const char*' to 'char*' [-fpermissive]
- ESP8266 не подключается к Wi-Fi
*Где* вы пробовали использовать функцию yield?, @Majenko
В каждой части кода которая может выполняться дольше нескольких миллисекунд, @krystof18
Почему вы используете такую низкую скорость передачи данных в бодах при последовательном соединении (
Serial.begin(1200);
)?, @GerbenПотому что, когда я использовал более высокую скорость передачи данных в бодах, шум от Wi-Fi-соединения повреждал данные, отправляемые на светодиодную матрицу, @krystof18
Я уже пользовался WDT раньше, но не вижу, чтобы он активировался вашим кодом... кроме того, у меня никогда не было проблем с шумом последовательного порта на более высоких скоростях... Вы уверены, что это проблема?, @Eugenio Pace
Что ж, снижение скорости передачи данных также привело к исчезновению моих проблем с шумом, так что я думаю, что это было из-за него, @krystof18