风筝
发表于: 2020-4-11 10:24:18 | 显示全部楼层

在本篇文章中,我们主要介绍如何使用DHT11和NodeMCU实现在ThingSpeak上进行湿度和温度监控。本文解释了如何在云平台上记录湿度和温度数据。我们可以使用Thingspeak作为云服务平台提供商和DHT11来测量温度和湿度。


本文使用Arduino IDE开发环境编程NodeMCU。您还可以使用Arduino配置ESP8266开发板来监控温度和湿度。


所需的硬件

本文只需NodeMCU ESP-12E WiFi开发板和湿度传感器DHT11或DHT22。除了这些外,我们还需要面包板和连接线。

components.png


DHT11湿度和温度传感器

DHT11是一款基本的超低成本数字温度和湿度传感器。它使用电容式湿度传感器和热敏电阻来测量周围的空气,并在数据引脚上发出数字信号(无需模拟输入引脚)。

dht11.png

它使用起来相当简单,但是需要精确的时间来获取数据。该传感器唯一真正的缺点是,您每2秒只能从其中获取一次新数据,因此,在使用库时,传感器的读数可能长达2秒。


连接电路图

以下是ESP8266连接DHT11的电路图

Circuit-Connecton.jpg


设置Thingspeak和获取API密钥

1.  打开https://thingspeak.com/,登录到您的帐户。如果没有,请先创建一个帐户。


2.  单击创建一个新频道。输入该频道的基本详细信息。然后向下滚动并保存该频道。


3.  然后转到API密钥,然后将此密钥复制并粘贴到单独的记事本文件中。稍后在编程时将需要它。


源代码/程序

下面给出了在ThingSpeak上使用DHT11和NodeMCU进行湿度和温度监控的程序。


1.  复制此程序并将其粘贴到Arduino IDE上。

2.  从github下载DHT11 / DHT22库,并将其添加到您的库管理器中。

3.  从开发板管理器中选择NodeMCU ESP-12E板。

4.  粘贴之前在thingspeak创建的API密钥到编程代码部分。

5.  编辑程序以使用您自己的名称更改wifi ssid和密码。

6.  编译代码并将其上传到NodeMCU开发板

2.png

  1. #include <DHT.h>  // Including library for dht

  2. #include <ESP8266WiFi.h>

  3. String apiKey = "H38TEGNC0XKW43BB";     //  Enter your Write API key from ThingSpeak

  4. const char *ssid =  "how2electronics";     // replace with your wifi ssid and wpa2 key
  5. const char *pass =  "alhabibi";
  6. const char* server = "api.thingspeak.com";

  7. #define DHTPIN 0          //pin where the dht11 is connected

  8. DHT dht(DHTPIN, DHT11);

  9. WiFiClient client;

  10. void setup()
  11. {
  12.        Serial.begin(115200);
  13.        delay(10);
  14.        dht.begin();

  15.        Serial.println("Connecting to ");
  16.        Serial.println(ssid);


  17.        WiFi.begin(ssid, pass);

  18.       while (WiFi.status() != WL_CONNECTED)
  19.      {
  20.             delay(500);
  21.             Serial.print(".");
  22.      }
  23.       Serial.println("");
  24.       Serial.println("WiFi connected");

  25. }

  26. void loop()
  27. {
  28.   
  29.       float h = dht.readHumidity();
  30.       float t = dht.readTemperature();
  31.       
  32.               if (isnan(h) || isnan(t))
  33.                  {
  34.                      Serial.println("Failed to read from DHT sensor!");
  35.                       return;
  36.                  }

  37.                          if (client.connect(server,80))   //   "184.106.153.149" or api.thingspeak.com
  38.                       {  
  39.                            
  40.                              String postStr = apiKey;
  41.                              postStr +="&field1=";
  42.                              postStr += String(t);
  43.                              postStr +="&field2=";
  44.                              postStr += String(h);
  45.                              postStr += "\r\n\r\n";

  46.                              client.print("POST /update HTTP/1.1\n");
  47.                              client.print("Host: api.thingspeak.com\n");
  48.                              client.print("Connection: close\n");
  49.                              client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");
  50.                              client.print("Content-Type: application/x-www-form-urlencoded\n");
  51.                              client.print("Content-Length: ");
  52.                              client.print(postStr.length());
  53.                              client.print("\n\n");
  54.                              client.print(postStr);

  55.                              Serial.print("Temperature: ");
  56.                              Serial.print(t);
  57.                              Serial.print(" degrees Celcius, Humidity: ");
  58.                              Serial.print(h);
  59.                              Serial.println("%. Send to Thingspeak.");
  60.                         }
  61.           client.stop();

  62.           Serial.println("Waiting...");
  63.   
  64.   // thingspeak needs minimum 15 sec delay between updates
  65.   delay(1000);
  66. }
复制代码

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1480



手机版|

GMT+8, 2024-4-19 10:36 , Processed in 0.158403 second(s), 8 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

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