esp8266+dht11+bmp180温湿度气压数据存储-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2328|回复: 1

[分享] esp8266+dht11+bmp180温湿度气压数据存储

[复制链接]
发表于 2020-10-25 18:53 | 显示全部楼层 |阅读模式
esp8266+dht11+bmp180温湿度气压数据使用blinke数据记录 esp8266 dht11 bmp180电路图.jpg QQ图片20201025185246.jpg

使用blinker自带的实例两个合并为一个,esp8266的i2c接口是D1,D2,  D1=SCL D2=SDA BMP180使用的是这两接口,bmp180使用3.3v,DHT11可以在定义为D7接口
代码有两个问题,一个是天猫精灵关联后无法获取温湿度数据,第二个历史数据无法记录,单独dht11模块可以存历史数据。两个合并后就无法存储了。
  1. #define BLINKER_WIFI
  2. #define BLINKER_ALIGENIE_SENSOR

  3. #include <Blinker.h>
  4. #include <DHT.h>

  5. char auth[] = "a9135b780e41";
  6. char ssid[] = "abc";
  7. char pswd[] = "chenxu123";

  8. BlinkerNumber HUMI("humi"); //DHT11
  9. BlinkerNumber TEMP11("temp"); //DHT11
  10. BlinkerNumber TEMP180("temp180"); // Temperature
  11. BlinkerNumber PRES("pres"); // Pressure
  12. BlinkerNumber ALTI("alti"); // Altitude

  13. #define DHTPIN D7
  14. #define DHTTYPE DHT11   // DHT 11
  15. //#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
  16. //#define DHTTYPE DHT21   // DHT 21 (AM2301)

  17. #include <Wire.h>
  18. #include <Adafruit_BMP085.h>

  19. Adafruit_BMP085 bmp;

  20. DHT dht(DHTPIN, DHTTYPE);


  21. float humi_read = 0,temp180_read = 0, temp_read = 0 , pres_read = 0, alti_read = 0 ;

  22. void heartbeat()
  23. {
  24.     HUMI.print(humi_read);
  25.     TEMP11.print(temp_read);
  26.     TEMP180.print(bmp.readTemperature());
  27.     PRES.print(bmp.readPressure());
  28.     ALTI.print(bmp.readAltitude());
  29.    
  30. }

  31. void dataStorage()
  32. {
  33.     pres_read=bmp.readPressure();
  34.     Blinker.dataStorage("temp", temp_read);
  35.     Blinker.dataStorage("humi", humi_read);
  36.     Blinker.dataStorage("pres", pres_read);
  37. }

  38. void aligenieQuery(int32_t queryCode)
  39. {
  40.     switch (queryCode)
  41.     {
  42.         case BLINKER_CMD_QUERY_ALL_NUMBER :
  43.             BLINKER_LOG("AliGenie Query All");
  44.             BlinkerAliGenie.temp(temp_read);
  45.             BlinkerAliGenie.humi(humi_read);
  46.             BlinkerAliGenie.print();
  47.             break;
  48.         case BLINKER_CMD_QUERY_TEMP_NUMBER :
  49.             BlinkerAliGenie.temp(temp_read);
  50.             BlinkerAliGenie.print();
  51.             break;
  52.         case BLINKER_CMD_QUERY_HUMI_NUMBER :
  53.             BlinkerAliGenie.humi(humi_read);
  54.             BlinkerAliGenie.print();
  55.             break;
  56.         default :
  57.             BlinkerAliGenie.temp(20);
  58.             BlinkerAliGenie.humi(20);
  59.             BlinkerAliGenie.print();
  60.             break;
  61.     }
  62. }

  63. void setup()
  64. {
  65.     Serial.begin(115200);
  66.     BLINKER_DEBUG.stream(Serial);
  67.     BLINKER_DEBUG.debugAll();
  68.     pinMode(LED_BUILTIN, OUTPUT);
  69.     digitalWrite(LED_BUILTIN, LOW);

  70.     Blinker.begin(auth, ssid, pswd);
  71.     Blinker.attachHeartbeat(heartbeat);
  72.     BlinkerAliGenie.attachQuery(aligenieQuery);
  73.     Blinker.attachDataStorage(dataStorage);
  74.     dht.begin();
  75.     if (!bmp.begin()) {
  76.        BLINKER_LOG("Could not find a valid BMP085 sensor, check wiring!");
  77.        while (1) {delay(100);}
  78.     }
  79. }

  80. void loop()
  81. {
  82.     Blinker.run();

  83.     float h = dht.readHumidity();
  84.     float t = dht.readTemperature();

  85.     if (isnan(h) || isnan(t))
  86.     {
  87.         BLINKER_LOG("Failed to read from DHT sensor!");
  88.     }
  89.     else
  90.     {
  91.         BLINKER_LOG("Humidity: ", h, " %");
  92.         BLINKER_LOG("Temperature: ", t, " *C");
  93.         humi_read = h;
  94.         temp_read = t;
  95.     }

  96.     Blinker.delay(2000);
  97. }
复制代码



发表于 2020-10-25 21:31 | 显示全部楼层
看调试信息
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-28 14:52 , Processed in 0.075554 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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