DHT11接入小爱后经常查询不到温度,湿度查询不到,求解-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2106|回复: 4

[已解答] DHT11接入小爱后经常查询不到温度,湿度查询不到,求解

[复制链接]
发表于 2020-8-14 16:33 | 显示全部楼层 |阅读模式
DHT11接入小爱同学后,偶尔能查询到温度,多数时候提示与设备沟通失败,blinker APP中显示是正常的。湿度信息从来没有查询到过,请教问题所在
代码如下:
  1. #define BLINKER_WIFI
  2. #define BLINKER_MIOT_SENSOR
  3. #define BLINKER_DUEROS_SENSOR
  4. #define BLINKER_ALIGENIE_SENSOR
  5. #define BLINKER_ESP_SMARTCONFIG

  6. #include <Blinker.h>
  7. #include <DHT.h>

  8. char auth[] = "e3f1db5684864"; // Blinker APP中添加设备时生成的Secret Key

  9. BlinkerNumber HUMI("humi");
  10. BlinkerNumber TEMP("temp");

  11. #define DHTPIN 5

  12. #define DHTTYPE DHT11   // DHT 11

  13. DHT dht(DHTPIN, DHTTYPE);

  14. uint32_t read_time = 0;

  15. int humi_read = 0;
  16. float temp_read = 0;

  17. void heartbeat()
  18. {
  19.     HUMI.print(humi_read);
  20.     TEMP.print(temp_read);
  21. }

  22. void miotQuery(int32_t queryCode)
  23. {
  24.     BLINKER_LOG("MIOT Query codes: ", queryCode);

  25.     switch (queryCode)
  26.     {
  27.         case BLINKER_CMD_QUERY_ALL_NUMBER :
  28.             BLINKER_LOG("MIOT Query All");
  29.             BlinkerMIOT.temp(temp_read);
  30.             BlinkerMIOT.humi(humi_read);
  31.             BlinkerMIOT.print();
  32.             break;
  33.         default :
  34.             BlinkerMIOT.temp(20);
  35.             BlinkerMIOT.humi(20);
  36.             BlinkerMIOT.print();
  37.             break;
  38.     }
  39. }

  40. void dataStorage()
  41. {
  42.     Blinker.dataStorage("temp", temp_read);
  43.     Blinker.dataStorage("humi", humi_read);
  44. }

  45. void duerQuery(int32_t queryCode)
  46. {
  47.     BLINKER_LOG("DuerOS Query codes: ", queryCode);

  48.     switch (queryCode)
  49.     {
  50.         case BLINKER_CMD_QUERY_HUMI_NUMBER :
  51.             BLINKER_LOG("DuerOS Query HUMI");
  52.             BlinkerDuerOS.humi(humi_read);
  53.             BlinkerDuerOS.print();
  54.             break;
  55.         case BLINKER_CMD_QUERY_TEMP_NUMBER :
  56.             BLINKER_LOG("DuerOS Query TEMP");
  57.             BlinkerDuerOS.temp(temp_read);
  58.             BlinkerDuerOS.print();
  59.             break;
  60.         default :
  61.             BlinkerDuerOS.temp(20);
  62.             BlinkerDuerOS.humi(20);
  63.             BlinkerDuerOS.print();
  64.             break;
  65.     }
  66. }

  67. void aligenieQuery(int32_t queryCode)
  68. {
  69.     BLINKER_LOG("AliGenie Query codes: ", queryCode);

  70.     switch (queryCode)
  71.     {
  72.         case BLINKER_CMD_QUERY_ALL_NUMBER :
  73.             BLINKER_LOG("AliGenie Query All");
  74.             BlinkerAliGenie.temp(temp_read);
  75.             BlinkerAliGenie.humi(humi_read);
  76.             BlinkerAliGenie.print();
  77.             break;
  78.         default :
  79.             BlinkerAliGenie.temp(20);
  80.             BlinkerAliGenie.humi(20);
  81.             BlinkerAliGenie.print();
  82.             break;
  83.     }
  84. }

  85. void dataRead(const String & data)
  86. {
  87.     BLINKER_LOG("Blinker readString: ", data);

  88.     Blinker.vibrate();
  89.    
  90.     uint32_t BlinkerTime = millis();
  91.    
  92.     Blinker.print("millis", BlinkerTime);
  93. }

  94. void setup()
  95. {
  96.     Serial.begin(115200);
  97.     BLINKER_DEBUG.stream(Serial);

  98.     pinMode(LED_BUILTIN, OUTPUT);
  99.     digitalWrite(LED_BUILTIN, LOW);

  100.     Blinker.begin(auth);
  101.     Blinker.attachData(dataRead);
  102.     Blinker.attachHeartbeat(heartbeat);
  103.     Blinker.attachDataStorage(dataStorage);
  104.     BlinkerMIOT.attachQuery(miotQuery);
  105.     BlinkerDuerOS.attachQuery(duerQuery);
  106.     BlinkerAliGenie.attachQuery(aligenieQuery);   
  107.     dht.begin();
  108. }

  109. void loop()
  110. {
  111.     Blinker.run();

  112.     if (read_time == 0 || (millis() - read_time) >= 2000)
  113.     {
  114.         read_time = millis();

  115.         float h = dht.readHumidity();
  116.         float t = dht.readTemperature();        

  117.         if (isnan(h) || isnan(t)) {
  118.             BLINKER_LOG("Failed to read from DHT sensor!");
  119.             return;
  120.         }

  121.         float hic = dht.computeHeatIndex(t, h, false);

  122.         humi_read = h;
  123.         temp_read = t;

  124.         BLINKER_LOG("Humidity: ", h, " %");
  125.         BLINKER_LOG("Temperature: ", t, " ℃");
  126.         BLINKER_LOG("Heat index: ", hic, " ℃");
  127.     }
  128. }
复制代码




 楼主| 发表于 2020-8-14 16:34 | 显示全部楼层
float humi_read, temp_read; 也是不行
发表于 2020-8-14 16:52 | 显示全部楼层
molun 发表于 2020-8-14 16:34
float humi_read, temp_read; 也是不行

换个dht11专用库试试

dht11.rar

2.53 KB, 下载次数: 32

发表于 2020-8-15 23:21 | 显示全部楼层
看串口调试信息
发表于 2020-9-26 23:10 | 显示全部楼层
这个问题我也遇到了 楼主解决了吗
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-28 11:42 , Processed in 0.120514 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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