|
在本篇文章中,我们主要介绍如何使用DHT11和NodeMCU实现在ThingSpeak上进行湿度和温度监控。本文解释了如何在云平台上记录湿度和温度数据。我们可以使用Thingspeak作为云服务平台提供商和DHT11来测量温度和湿度。
本文使用Arduino IDE开发环境编程NodeMCU。您还可以使用Arduino配置ESP8266开发板来监控温度和湿度。
所需的硬件 本文只需NodeMCU ESP-12E WiFi开发板和湿度传感器DHT11或DHT22。除了这些外,我们还需要面包板和连接线。
DHT11湿度和温度传感器 DHT11是一款基本的超低成本数字温度和湿度传感器。它使用电容式湿度传感器和热敏电阻来测量周围的空气,并在数据引脚上发出数字信号(无需模拟输入引脚)。
它使用起来相当简单,但是需要精确的时间来获取数据。该传感器唯一真正的缺点是,您每2秒只能从其中获取一次新数据,因此,在使用库时,传感器的读数可能长达2秒。
连接电路图 以下是ESP8266连接DHT11的电路图
设置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开发板
- #include <DHT.h> // Including library for dht
- #include <ESP8266WiFi.h>
-
- String apiKey = "H38TEGNC0XKW43BB"; // Enter your Write API key from ThingSpeak
- const char *ssid = "how2electronics"; // replace with your wifi ssid and wpa2 key
- const char *pass = "alhabibi";
- const char* server = "api.thingspeak.com";
- #define DHTPIN 0 //pin where the dht11 is connected
-
- DHT dht(DHTPIN, DHT11);
- WiFiClient client;
-
- void setup()
- {
- Serial.begin(115200);
- delay(10);
- dht.begin();
-
- Serial.println("Connecting to ");
- Serial.println(ssid);
-
-
- WiFi.begin(ssid, pass);
-
- while (WiFi.status() != WL_CONNECTED)
- {
- delay(500);
- Serial.print(".");
- }
- Serial.println("");
- Serial.println("WiFi connected");
-
- }
-
- void loop()
- {
-
- float h = dht.readHumidity();
- float t = dht.readTemperature();
-
- if (isnan(h) || isnan(t))
- {
- Serial.println("Failed to read from DHT sensor!");
- return;
- }
- if (client.connect(server,80)) // "184.106.153.149" or api.thingspeak.com
- {
-
- String postStr = apiKey;
- postStr +="&field1=";
- postStr += String(t);
- postStr +="&field2=";
- postStr += String(h);
- postStr += "\r\n\r\n";
-
- client.print("POST /update HTTP/1.1\n");
- client.print("Host: api.thingspeak.com\n");
- client.print("Connection: close\n");
- client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");
- client.print("Content-Type: application/x-www-form-urlencoded\n");
- client.print("Content-Length: ");
- client.print(postStr.length());
- client.print("\n\n");
- client.print(postStr);
-
- Serial.print("Temperature: ");
- Serial.print(t);
- Serial.print(" degrees Celcius, Humidity: ");
- Serial.print(h);
- Serial.println("%. Send to Thingspeak.");
- }
- client.stop();
-
- Serial.println("Waiting...");
-
- // thingspeak needs minimum 15 sec delay between updates
- delay(1000);
- }
复制代码
|