ESP8266-Arduino网络编程实例-DHT11传感器数据上传到ThingSpeak物联网平台
DHT11传感器数据上传到ThingSpeak物联网平台
1、DHT11简单介绍及ThingSpeak平台配置
DHT11数字温湿度传感器是一种复合传感器,包含一个经过校准的温湿度数字信号输出。 应用了专用的数字模块采集技术和温湿度传感技术,确保产品具有高可靠性和优异的长期稳定性。 该传感器包括一个电阻感湿元件和一个 NTC 温度测量装置,并与一个高性能 8 位微控制器相连。
ThingSpeak 是一种物联网分析平台服务,可以聚合、可视化和分析云中的实时数据流。 可以将数据从设备发送到 ThingSpeak™,创建实时数据的即时可视化,并使用 Twitter® 和 Twilio® 等 Web 服务发送警报。 借助 ThingSpeak 中的 MATLAB® 分析,可以编写和执行 MATLAB 代码来执行预处理、可视化和分析。 ThingSpeak 使工程师和科学家能够在不设置服务器或开发 Web 软件的情况下对物联网系统进行原型设计和构建。
您现在需要在 thingspeak 创建一个新帐户 – https://thingspeak.com。 完成后,创建一个新通道并添加两个新字段,一个将保存温度读数,另一个将保存我们 DHT11 的湿度读数。

在前面的文章中,对DHT11做了详细的介绍,请参考:
2、硬件准备
- ESP8266 NodeMCU开发板一块
- DHT11温度湿度传感器模块一个
- 面板板一个
- 杜邦线若干
- 数据线一条
硬件接线图如下:

3、软件准备
- Arduino IDE或VSCode + PlatformIO
在前面的文章中,对如何搭建ESP8266开发环境做了详细的介绍,请参考:
ESP8266 NodeMCU的引脚介绍在前面的文章中做了详细的介绍,请参考:
4、代码实现
1)导入头文件
1 2 3
| #include <DHT.h> #include <ESP8266WiFi.h>
|
本次使用DHT11驱动库为:
2)定义WiFi及ThingSpeak配置参数
1 2 3 4 5
| String apiKey = "你的API密钥"; const char\* ssid = "\*\*\*\*\*"; const char\* ssd_pwd= "\*\*\*\*"; const char\* server = "api.thingspeak.com";
|
3)定义DHT11传感器对象及Web客户端对象
1 2 3 4 5 6
| #define DHTPIN D7 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); WiFiClient client;
|
4)在setup函数中,初始化各项配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| void setup() { // 初始化串口 Serial.begin(115200); delay(10); // 启动传感器 dht.begin(); // 启动WiFi连接 WiFi.begin(ssid, ssd_pwd); Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); // 等待WiFi连接完成 while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); }
|
5)在loop函数中,读取DHT11传感器温度和湿度数据并上传到ThingSpeak平台
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| void loop() { // 读取传感器湿度数据 float h = dht.readHumidity(); // 读取传感器温度数据 float t = dht.readTemperature(); if (isnan(h) || isnan(t)) { Serial.println("Failed to read from DHT sensor!"); return; } // 连接ThingSpeak平台 if (client.connect(server,80)) { // 构造请求参数 String postStr = apiKey; postStr +="&field1="; postStr += String(t); postStr +="&field2="; postStr += String(h); postStr += "\r\n\r\n"; // 构造POST请求头 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 Celsius Humidity: "); Serial.print(h); Serial.println("Sending data to Thingspeak"); } // 关闭连接 client.stop(); Serial.println("Waiting 15 secs"); // thingspeak 在更新之间需要至少 15 秒的延迟 delay(15000); }
|
运行结果:

ThingSpeak平台接收到数据结果:

文章来源: https://iotsmart.blog.csdn.net/article/details/127240428
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!