自己动手做一个跟小爱同学互通的温湿度传感器(基于DHT11)
Blinker点灯科技提供了一个案例,如何配置自行百度即可,这里不做赘述,只分享修改后的代码。原案例中用的是DHT库,但是实测发现该库会产生报错,无法正常编译运行,所以修改为DHT11传感器(库文件可以自行搜索下载)。以下为具体代码:
#define BLINKER_WIFI
#define BLINKER_MIOT_SENSOR //小爱同学定义为传感器设备
#include <dht11.h>
#include <Blinker.h>
char auth[] = "xxx";//你的设备码,可从blinker app获取
char ssid[] = "xxx";//你的WiFi名
char pswd[] = "xxx";//你的WiFi密码
BlinkerNumber HUMI("humi"); //定义湿度数据键名
BlinkerNumber TEMP("temp"); //定义温度数据键名
dht11 DHT11;
float humi_read = 0, temp_read = 0;
void heartbeat()
{
HUMI.print(humi_read); //给blinkerapp回传湿度数据
TEMP.print(temp_read); //给blinkerapp回传温度数据
}
void miotQuery(int32_t queryCode) //小爱同学语音命令反馈
{
BLINKER_LOG("MIOT Query codes: ", queryCode);
int humi_read_int=humi_read; //去掉湿度浮点
BlinkerMIOT.humi(humi_read_int); //小爱接收湿度
BlinkerMIOT.temp(temp_read); //小爱接收温度
BlinkerMIOT.print();
}
void setup()
{
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
BLINKER_DEBUG.debugAll();
Blinker.begin(auth, ssid, pswd);
Blinker.attachHeartbeat(heartbeat);
pinMode(2,INPUT);
BlinkerMIOT.attachQuery(miotQuery);
}
void loop()
{
Blinker.run();
DHT11.read(2);
float h = DHT11.temperature;
float t = DHT11.humidity;
if (isnan(h) || isnan(t))
{
BLINKER_LOG("Failed to read from DHT sensor!");
}
else
{
BLINKER_LOG("Humidity: ", h, " %");
BLINKER_LOG("Temperature: ", t, " ℃");
humi_read = h;
temp_read = t;
}
Blinker.delay(2000);
}
按道理来说只要复制填空就行了,有问题可以给我留言,如果觉得我写得太简略,有时间更新下细节。以上。
对了,我还做了Pro版本,无需写死WiFi信息,可以智能配网,断电自动重连,换网络环境只要用手机就可以配置,想了解的可以给我留言。以上