用esp8266+DHT11实现小爱同学查看家中温湿度

接着上一次做的小爱同学脱离局域网控制三路开关,我还找到另外一个好玩的项目,,接下来我讲解一下项目过程

用到的东西和上一次差不多,有esp8266nodemcu、点灯科技app、Arduino IDE,但是还需加上一个DHT11模块

如果是直接看到这篇文章的小伙伴,如果没有配置好Arduino IDE,建议去看一下博主这个专栏的上一个文章,里面有详细介绍使用Arduino IDE开发esp8266所需要的设置

还有我们需要在Arduino IDE里添加DHT11的库文件,在文章里提供下载链接

下载以后找到自己软件的安装目录,找到libraries文件夹,解压放入
在这里插入图片描述

那么现在我们直接来上代码:

#define BLINKER_WIFI
#define BLINKER_MIOT_SENSOR   //小爱同学定义为传感器设备
 
#include <Blinker.h>
#include <DHT.h>
 
char auth[] = "点灯app获取的设备密钥";
char ssid[] = "WiFi名称";
char pswd[] = "WiFi密码";
 
BlinkerNumber HUMI("humi");    //定义湿度数据键名
BlinkerNumber TEMP("temp");    //定义温度数据键名
  
#define DHTPIN 5      //定义DHT11模块连接管脚io5
 
#define DHTTYPE DHT11   // 使用DHT 11温度湿度模块 
//#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)
 
DHT dht(DHTPIN, DHTTYPE);    //定义dht
 
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);
    dht.begin();
    BlinkerMIOT.attachQuery(miotQuery);
}
 
void loop()
{
    Blinker.run();
 
    float h = dht.readHumidity();
    float t = dht.readTemperature();
 
    if (isnan(h) || isnan(t))
    {
        BLINKER_LOG("Failed to read from DHT sensor!");
    }
    else
    {
        BLINKER_LOG("Humidity: ", h, " %");
        BLINKER_LOG("Temperature: ", t, " *C");
        humi_read = h;
        temp_read = t;
    }

 
    Blinker.delay(2000);
}

在代码的注释内容下我们可以很容易的找到用esp8266接收数据的引脚是哪一个

但是在这里指的是GPIO5,并不是我们esp8266d nodemcu的D5
在这里插入图片描述这里我为大家提供了编号装换图,与是得知,我设置的gpio5是我们开发板上的D1

OK,我们开始


1、打开Arduino IDE写入代码,编译上传,烧录程序:

2、硬件连接:

我们的DHT11模块有三个引脚:VCC、GND以及DATA

DATA就是我们的数据传输引脚,接在我们程序设置好的GPIO5,也就是esp8266 nodemcu的D1引脚上
VCC接esp8266 nodemcu 3V供电端口即可
GND接esp8266 nodemcu G接地端口即可

3、重启开发板,我们可以看到点灯app上设备在线,我们还可以设置点灯app内的组件设置,在点灯app内查看温度湿度:

我们可以这样添加组件


例如我们的湿度数据,数据键名为代码前定义的humi,显示文本为湿度,单位为%,最大值为100

我已经设置好了,大家可以看到效果

4、最后我们使用小爱同学控制,在米家中绑定点灯平台,在小爱训练中添加训练即可,具体训练过程可以看看我的小爱脱离局域网控制小灯

好啦,感兴趣的可以去试一试,成本很低,收获很大。

原创文章 7 获赞 14 访问量 1838

猜你喜欢

转载自blog.csdn.net/qq_44419932/article/details/106161708