使用DHT22实施NodeMCU 8266时出错
我在带有MacOS Monterey的Mac中实现了一个带有温度传感器(DHT22)的API REST服务器,当我在简单的循环中阅读温度和湿度时,我没有任何问题,但是实现看起来像这样,
#include <DHT.h>
#include <DHT_U.h>
float hum, temp;
DHT dht(D1, DHT22);
void setup() {
Serial.begin(115200);
dht.begin();
}
void loop() {
temp = dht.readTemperature();
hum = dht.readHumidity();
Serial.println("Temperatura: " + String(temp) + " humedad: " + String(hum));
}
但是当我实现了服务器API并尝试读取温度以返回该信息。IDE返回不可能读取错误的错误,
我
User exception (panic/abort/assert)
--------------- CUT HERE FOR EXCEPTION DECODER ---------------
Panic core_esp8266_main.cpp:137 __yield
>>>stack>>>
ctx: sys
sp: 3fffeab0 end: 3fffffb0 offset: 0000
3fffeab0: 5c93ba25 b85ced93 00000000 40102074
3fffeac0: 000000fe 00000000 00000000 00000000
3fffead0: 00000000 00000000 00000000 3ffeee38
3fffeae0: 00000000 3ffe8a04 4bc6a7f0 3ffeec2c
...
...
3fffffa0: feefeffe feefeffe feefeffe 40207f46
<<<stack<<<
--------------- CUT HERE FOR EXCEPTION DECODER ---------------
ets Jan 8 2013,rst cause:2, boot mode:(3,7)
load 0x4010f000, len 3460, room 16
tail 4
chksum 0xcc
load 0x3fff20b8, len 40, room 4
tail 4
chksum 0xc9
csum 0xc9
v0004a0b0
~ld
的代码是
#include <DHT.h>
#include <DHT_U.h>
#include <ESP8266WiFi.h>
#include <ESPAsyncWebServer.h>
#include <FS.h>
const char* ssid = "xxxxxxx";
const char* password = "xxxxxxx";
float hum, temp;
DHT dht(D1, DHT22);
void getSensorInformation(AsyncWebServerRequest *request)
{
Serial.println("2...");
temp = dht.readTemperature();
Serial.println("1...");
hum = dht.readHumidity();
String message = "Temperatura: " + String(temp) + " humedad: " + String(hum);
Serial.println(message);
request->send(200, "text/plain", message);
}
void getIpAddress(AsyncWebServerRequest *request) {
String ip = WiFi.localIP().toString();
String message = "ip: " + ip;
Serial.println(message);
request->send(200, "text/plain", message);
}
AsyncWebServer server(80);
void notFound(AsyncWebServerRequest *request) {
request->send(404, "text/plain", "Not found");
}
void InitServer()
{
server.on("/ip", HTTP_GET, getIpAddress);
server.on("/info", HTTP_GET, getSensorInformation);
server.onNotFound(notFound);
server.begin();
Serial.println("HTTP server started");
}
void ConnectWiFi_STA() {
WiFi.begin(ssid, password);
Serial.println("Connecting...");
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.print("Connected to WiFi network with IP Address: ");
Serial.println(WiFi.localIP());
}
void setup() {
Serial.begin(115200);
ConnectWiFi_STA();
dht.begin();
InitServer();
}
void loop() {
}
创建两个方法,第一个getipAddress
,它返回了我的计算机的IP和另一个返回传感器数据,第一种方法,但是第二个打印直到2 ...
,所以我认为这行中的失败temp = dht.readTemperature();
但是我不知道为什么
PS:对不起我的英语我的主要语言是西班牙语。
I implemented a nodemcu 8266 as a api rest server with a temperature sensor (DHT22) in a Mac with macOS Monterey, when I read the temperature and humidity in a simple loop I don't have any problem, the implementation looks like this
#include <DHT.h>
#include <DHT_U.h>
float hum, temp;
DHT dht(D1, DHT22);
void setup() {
Serial.begin(115200);
dht.begin();
}
void loop() {
temp = dht.readTemperature();
hum = dht.readHumidity();
Serial.println("Temperatura: " + String(temp) + " humedad: " + String(hum));
}
but when I implement a server api and try to read temperature to return that information the IDE return an error impossible to read
like this
User exception (panic/abort/assert)
--------------- CUT HERE FOR EXCEPTION DECODER ---------------
Panic core_esp8266_main.cpp:137 __yield
>>>stack>>>
ctx: sys
sp: 3fffeab0 end: 3fffffb0 offset: 0000
3fffeab0: 5c93ba25 b85ced93 00000000 40102074
3fffeac0: 000000fe 00000000 00000000 00000000
3fffead0: 00000000 00000000 00000000 3ffeee38
3fffeae0: 00000000 3ffe8a04 4bc6a7f0 3ffeec2c
...
...
3fffffa0: feefeffe feefeffe feefeffe 40207f46
<<<stack<<<
--------------- CUT HERE FOR EXCEPTION DECODER ---------------
ets Jan 8 2013,rst cause:2, boot mode:(3,7)
load 0x4010f000, len 3460, room 16
tail 4
chksum 0xcc
load 0x3fff20b8, len 40, room 4
tail 4
chksum 0xc9
csum 0xc9
v0004a0b0
~ld
My code is
#include <DHT.h>
#include <DHT_U.h>
#include <ESP8266WiFi.h>
#include <ESPAsyncWebServer.h>
#include <FS.h>
const char* ssid = "xxxxxxx";
const char* password = "xxxxxxx";
float hum, temp;
DHT dht(D1, DHT22);
void getSensorInformation(AsyncWebServerRequest *request)
{
Serial.println("2...");
temp = dht.readTemperature();
Serial.println("1...");
hum = dht.readHumidity();
String message = "Temperatura: " + String(temp) + " humedad: " + String(hum);
Serial.println(message);
request->send(200, "text/plain", message);
}
void getIpAddress(AsyncWebServerRequest *request) {
String ip = WiFi.localIP().toString();
String message = "ip: " + ip;
Serial.println(message);
request->send(200, "text/plain", message);
}
AsyncWebServer server(80);
void notFound(AsyncWebServerRequest *request) {
request->send(404, "text/plain", "Not found");
}
void InitServer()
{
server.on("/ip", HTTP_GET, getIpAddress);
server.on("/info", HTTP_GET, getSensorInformation);
server.onNotFound(notFound);
server.begin();
Serial.println("HTTP server started");
}
void ConnectWiFi_STA() {
WiFi.begin(ssid, password);
Serial.println("Connecting...");
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.print("Connected to WiFi network with IP Address: ");
Serial.println(WiFi.localIP());
}
void setup() {
Serial.begin(115200);
ConnectWiFi_STA();
dht.begin();
InitServer();
}
void loop() {
}
I create two methods, first getIpAddress
that returns the IP of my computer and another that returns the sensor data, first method it works, but the second print until 2...
, so I think it failure in this line temp = dht.readTemperature();
but I don't know why
PS: Sorry about my english my main language is spanish.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论