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

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

  • 18
    点赞
  • 124
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 31
    评论
1. 硬件准备: - ESP8266开发板 - DHT11温湿度传感器 - 蜂鸣器 - 杜邦线 - 面包板 2. 软件准备: - Arduino IDE - ESP8266库 - DHT库 3. 接线: 将DHT11的VCC接到ESP8266的3.3V,将DHT11的GND接到ESP8266的GND,将DHT11的DATA接到ESP8266的D1口,将蜂鸣器的正极接到ESP8266的D2口,将蜂鸣器的负极接到ESP8266的GND。 4. 代码编写: ``` #include <ESP8266WiFi.h> #include <DHT.h> #define DHTPIN D1 // DHT11 DATA引脚连接ESP8266的D1口 #define DHTTYPE DHT11 // DHT11传感器类型 #define buzzerPin D2 // 蜂鸣器连接ESP8266的D2口 const char* ssid = "你的WiFi名称"; // WiFi名称 const char* password = "你的WiFi密码"; // WiFi密码 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); pinMode(buzzerPin, OUTPUT); digitalWrite(buzzerPin, HIGH); delay(1000); digitalWrite(buzzerPin, LOW); delay(1000); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } Serial.println("Connected to WiFi"); } void loop() { delay(2000); float h = dht.readHumidity(); // 读取湿度 float t = dht.readTemperature(); // 读取温度 if (isnan(h) || isnan(t)) { Serial.println("Failed to read from DHT sensor!"); return; } Serial.print("Humidity: "); Serial.print(h); Serial.print("% Temperature: "); Serial.print(t); Serial.println("°C"); if (t > 28) { // 温度超过28°C时触发报警 digitalWrite(buzzerPin, HIGH); delay(1000); digitalWrite(buzzerPin, LOW); delay(1000); } } ``` 5. 上传代码: 将ESP8266通过USB连接到计算机,打开Arduino IDE,选择正确的开发板和端口,将代码上传到ESP8266中。 6. 测试: 将DHT11放置在需要检测的环境中,开启串口监视器,可以看到ESP8266每隔2秒钟会读取一次温湿度数据并打印到串口中,当温度超过28°C时,蜂鸣器会响起一次,表示触发了报警。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弓长于水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值