一、背景
很久以前购买的DHT11温湿度传感器,被无情遗忘。终于在今天倒腾器件时,给翻了出来。压箱这么久,也是亏欠了这位小老弟,怎么也得让它实现点自我价值才行啊!想了很久,这玩意似乎也只能做点温湿度检测的活了。说干就干,那就让你继续做温湿度数据上报吧!以后有更好的想法的时候,再让你实现更多的价值!
二、实现原理
本次使用到的器件如下:
- ESP8266 WIFI模块
- DHT11 温湿度传感器模块
- 3.3~5.0V电源适配器
ESP8266通过DHT11将温湿度数据监测,并上传至blinker物联网平台,同时在APP端显示对应的数据。PS:实现原理极为简单,不复杂,体验电子DIY的快乐,才是我们玩电子的初衷嘛!
三、电路连接
四、APP配置
五、编码实现
#define BLINKER_WIFI
#include <Blinker.h>
#include <DHT.h>
// 定义温湿度传感器引脚
#define DHTPIN 2
#define DHTTYPE DHT11
// 认证信息
char auth[] = "XXXXXXXX";
char ssid[] = "XXXXXXXX";
char pswd[] = "XXXXXXXX";
// 创建组件
BlinkerNumber HUMI("humi");
BlinkerNumber TEMP("temp");
// DHT11初始化
DHT dht(DHTPIN, DHTTYPE);
uint32_t read_time = 0;
float humi_read, temp_read;
// 数据读取
void dataRead(const String & data)
{
BLINKER_LOG("Blinker readString: ", data);
Blinker.vibrate();
uint32_t BlinkerTime = millis();
Blinker.print("millis", BlinkerTime);
}
// 温湿度数据发送
void heartbeat()
{
HUMI.print(humi_read);
TEMP.print(temp_read);
}
void setup()
{
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
Blinker.begin(auth, ssid, pswd);
Blinker.attachData(dataRead);
Blinker.attachHeartbeat(heartbeat);
dht.begin();
}
void loop()
{
Blinker.run();
if (read_time == 0 || (millis() - read_time) >= 2000)
{
read_time = millis();
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
BLINKER_LOG("Failed to read from DHT sensor!");
return;
}
float hic = dht.computeHeatIndex(t, h, false);
humi_read = h;
temp_read = t;
BLINKER_LOG("Humidity: ", h, " %");
BLINKER_LOG("Temperature: ", t, " *C");
BLINKER_LOG("Heat index: ", hic, " *C");
}
}
六、展望一下
其实DHT11也不能说一点用都没有,曾经用它实现过一个想法:通过DHT11采集室内温度,并上报,然后通过米家的多个设备设置自动化任务,最后实现在一定温度条件下控制某个插座或者开关打开。尤其针对南方的东西,尤为有效的。每天定时、定温度将电热毯打开,等你到床上躺着的时候,那叫一个舒服,一个享受!各位小伙伴还可以有其他想法,通过物联网平台的各种自动化、智能化任务,使多个设备联动,从而达到一个物物联通为自己服务,岂不快哉!
今天的文章ESP8266之blinker物联网平台DHT11温湿度数据上报分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/59440.html