我正试图为ESP32芯片编写代码,它接收来自DHT22传感器的读数,将其打包到json文件中,然后将其发送到一个烧瓶服务器。在我尝试发布之前,一切都很好,我在那里得到了以下错误:
Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0x400d3488 PS : 0x00060030 A0 : 0x800d355c A1 : 0x3ffb1bb0
A2 : 0x00000000 A3 : 0x3ffb1bff A4 : 0x00000001 A5 : 0x00000001
A6 : 0x00000000 A7 : 0x00000000 A8 : 0x00000000 A9 : 0x00000000
A10 : 0x00000000 A11 : 0x3ffcb8fc A12 : 0x00000050 A13 : 0x00000001
A14 : 0x00000000 A15 : 0x00000000 SAR : 0x0000000a EXCCAUSE: 0x0000001c
EXCVADDR: 0x00000008 LBEG : 0x4000c2e0 LEND : 0x4000c2f6 LCOUNT : 0xffffffff我试着对这个问题做了详尽的调查,但没有结果,我也不知道发生了什么。有谁能洞察如何解决这个问题呢?
这是我的Arduino代码:
#include <HTTPClient.h>
#include <WiFi.h>
#include <DHT.h>
#include <ArduinoJson.h>
#define DHTTYPE DHT22
const char* ssid = "ssid";
const char* password = "password";
uint8_t sensor = 16;
DHT dht(sensor, DHTTYPE);
void setup() {
Serial.begin(115200);
dht.begin();
WiFi.begin(ssid, password);
while(WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting...");
}
Serial.println("Connected!");
}
void loop() {
if(WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin("http://192.168.10.5:8090/");
http.addHeader("Content-Type", "text/plain");
Serial.println("Began http on Flask");
const int cap = JSON_OBJECT_SIZE(2);
StaticJsonDocument<cap> doc;
Serial.println("Created json document");
doc["temperature"] = dht.readTemperature();
doc["humidity"] = dht.readHumidity();
Serial.println("Read temperature and humidity correctly");
char output[256];
serializeJsonPretty(doc, output);
Serial.println(output);
//Code will give back error after trying to POST
int httpCode = http.POST(output);
Serial.println("Got httpCode");
if(httpCode > 0) {
Serial.println(httpCode);
} else Serial.println("Error in Connection");
http.end();
}
delay(10000);
}这里有print语句,这些语句将打印出各种内容,具体取决于它在代码中的位置。它可以很好地打印出json文档,但没有打印出"Got“。下面是我为Flask服务器编写的代码:
from flask import Flask, request
app = Flask(__name__)
@app.route('/', methods = ['POST'])
def hello():
req = request.get_json()
print(req)
return "Thanks", 200
if __name__ == "__main__":
app.run(host = '0.0.0.0', port = 8090)提前谢谢你的帮助。
发布于 2020-11-19 09:05:55
在使用WebSockets时,我也得到了这个错误。
原来,我用来接收消息的缓冲区(声明为全局)是附加了新消息,而不是覆盖中先前存在的内容。因此,非法的内存写入尝试被进行,设备惊慌失措并重新启动.
onWebSocketEvent()解决方案:我只是在函数中本地声明缓冲区,当缓冲区在每个事件上被重新声明时,就解决了覆盖问题,防止了非法的内存写入尝试。这个装置再也没有惊慌失措。
发布于 2020-08-13 17:41:01
我在回调过程中遇到了一个Guru错误,原因是微内存耗尽了。解决方案是摆脱未使用的库,使用指针而不是创建局部变量。
https://stackoverflow.com/questions/63399901
复制相似问题