智能家居应用教程11——室内环境播报-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1408|回复: 0

智能家居应用教程11——室内环境播报

[复制链接]
发表于 2022-1-25 09:49 | 显示全部楼层 |阅读模式
本帖最后由 OpenJumper 于 2022-1-25 09:52 编辑

[md]## 简介

将wifiduino连接进网络后,可以将搭载的传感器数据上传至网络,这样我们可以通过智能音箱语音播报,实际监测到的传感器数值。

## 器材准备

+ wifiduino主板 * 1

+ wifiduino拓展板 * 1

+ DHT11传感器 * 1

+ 3P连接线 * 1

+ 3.7V可充电电池 * 1

## 接通小度智能音箱

参考上一章节,将小度音箱配置联网。

## 程序下载

打开例程 DuerOS_sensor.ino   修改程序中的 auth[]值和要连接的wifi的ssid及密码  

01.jpg

注意程序中的定义连接DHT11模块的接口为D8
```
#define DHTPIN D8
```
下载程序到wifiduino板中。下载结束后,IDE提示栏中显示“上传成功”

02.jpg

## 完整程序[/md]
  1. #define BLINKER_WIFI
  2. #define BLINKER_DUEROS_SENSOR

  3. #include <Blinker.h>
  4. #include <DHT.h>
  5. #define DHTPIN D8
  6. #define DHTTYPE DHT11   // DHT 11
  7. DHT dht(DHTPIN, DHTTYPE);

  8. float humi_read = 0, temp_read = 0;

  9. char auth[] = "d8bdba0f8f8d";
  10. char ssid[] = "mostfun";
  11. char pswd[] = "1803808xxxx";



  12. void duerQuery(int32_t queryCode)
  13. {
  14.   BLINKER_LOG("DuerOS Query codes: ", queryCode);

  15.   switch (queryCode)
  16.   {

  17.     case BLINKER_CMD_QUERY_HUMI_NUMBER :
  18.       BLINKER_LOG("DuerOS Query HUMI");
  19.       BlinkerDuerOS.humi(humi_read);
  20.       BlinkerDuerOS.print();
  21.       break;
  22.     case BLINKER_CMD_QUERY_TEMP_NUMBER :
  23.       BLINKER_LOG("DuerOS Query TEMP");
  24.       BlinkerDuerOS.temp(temp_read);
  25.       BlinkerDuerOS.print();
  26.       break;

  27.     default :
  28.       BlinkerDuerOS.time(millis());
  29.       BlinkerDuerOS.print();
  30.       break;
  31.   }
  32. }

  33. void dataRead(const String & data)
  34. {
  35.   BLINKER_LOG("Blinker readString: ", data);

  36.   Blinker.vibrate();

  37.   uint32_t BlinkerTime = millis();
  38.   Blinker.print(BlinkerTime);
  39.   Blinker.print("millis", BlinkerTime);
  40. }

  41. void setup()
  42. {
  43.   Serial.begin(115200);
  44.   BLINKER_DEBUG.stream(Serial);

  45.   pinMode(LED_BUILTIN, OUTPUT);
  46.   digitalWrite(LED_BUILTIN, LOW);

  47.   Blinker.begin(auth, ssid, pswd);
  48.   Blinker.attachData(dataRead);

  49.   BlinkerDuerOS.attachQuery(duerQuery);
  50.   //Blinker.attachHeartbeat(heartbeat);
  51.   dht.begin();
  52. }

  53. void loop()
  54. {
  55.   Blinker.run();
  56.   unsigned char i = 0;
  57.   float data_temp;
  58.   data_temp = dht.readHumidity();
  59.   while (--i) {
  60.     if (isnan(data_temp))data_temp = dht.readHumidity();
  61.     else {
  62.       humi_read = data_temp;
  63.       break;
  64.     }
  65.   }


  66.   data_temp = dht.readTemperature();
  67.   while (--i) {
  68.     if (isnan(data_temp))data_temp = dht.readTemperature();
  69.     else {
  70.       temp_read = data_temp;
  71.       break;
  72.     }
  73.   }

  74.   Blinker.delay(2000);
  75. }
复制代码

[md]
## 硬件模块连接

确认扩展板对应插在wifiduino主板上,DHT11模块通过连接线连接在扩展板上的D8接口中

03.jpg

## 小度音箱app中添加智能设备

在手机界面中找到“智能家居”,选择“添加智能家居设备”。找到blinker点击授权。
点击“账号授权”,填写blinker的账号和密码,完成登录绑定。
这时候,在智能家居一栏中就会出现刚添加的智能设备(空气检测仪wifiduino)
04.jpg

注意:这里显示的智能设备会根据wifiduino中程序的定义自动判别添加的是插座、灯或者空气检测仪

## 语音控制

可以修改添加设备的属性,将其取名为XX位置的XX设备。(例如 设备名称:传感器  设备分组:客厅  )
05.jpg
对着小度音箱说“小度 小度 客厅的传感器温度”就会语音播报传感器检测到的温度数据。
说“小度 小度 客厅传感器湿度”就会语音播报传感器检测到的湿度数据。

## 常见问题

F:一张wifiduino主板被绑定过一种设备(例如:插座),现在想把它当成空气检测仪来使用可以吗?

Q:一个设备同一时间内只能被当成一种设备类型。

如果wifiduino之前被绑定过插座,你的设备还会被检查是插座,而不是空气检测仪。这时候需要采用下面办法进行重新绑定。

一、wifiduino上传灯控制的程序后,通电保证wifiduino在线。我们直接对小度音箱说“小度小度 发现设备”。小度会自动搜索附近的设备,然后添加新出现的设备(灯)

二、在手机界面中找到“智能家居”,直接点击右上角的“+”添加智能设备,找到blinker,点击“解除授权”,将之前绑定的设备解除。再重新添加新的设备。
06.jpg
[/md]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-27 14:06 , Processed in 0.081185 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表