返回
MQTT助力温湿度传感器数据Onenet上传
后端
2024-01-07 07:40:45
在物联网应用中,实时监测与存储环境温湿度数据是一项重要的需求。MQTT是一种轻量级、低功耗的物联网消息传递协议,非常适合在资源受限的设备上使用。Onenet是阿里云推出的一个物联网平台,提供了一套完整的物联网解决方案。
本文将介绍如何使用MQTT协议将DHT11温湿度传感器获取的数据上传到Onenet物联网平台。该项目使用Arduino Uno作为主控器,DHT11作为温湿度传感器,ESP8266作为WiFi模块,MQTT作为消息传递协议,Onenet作为物联网平台。
项目材料
- Arduino Uno
- DHT11温湿度传感器
- ESP8266 WiFi模块
- 面包板
- 跳线
- USB数据线
项目步骤
- 连接硬件
将DHT11温湿度传感器、ESP8266 WiFi模块、面包板和跳线连接起来,具体连接方式如下图所示:
[图片1: DHT11温湿度传感器、ESP8266 WiFi模块和Arduino Uno的连接图]
- 编写代码
使用Arduino IDE编写代码,代码如下:
#include <DHT.h>
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
// DHT11温湿度传感器引脚定义
#define DHTPIN 7
// ESP8266 WiFi模块引脚定义
#define RST_PIN 5
#define CH_PD_PIN 4
#define GPIO0_PIN 16
// MQTT服务器地址
#define MQTT_SERVER "mqtt.beebotte.com"
// MQTT端口号
#define MQTT_PORT 1883
// MQTT客户端ID
#define MQTT_CLIENT_ID "YOUR_CLIENT_ID"
// MQTT用户名
#define MQTT_USERNAME "YOUR_USERNAME"
// MQTT密码
#define MQTT_PASSWORD "YOUR_PASSWORD"
// MQTT主题
#define MQTT_TOPIC "YOUR_TOPIC"
// DHT11温湿度传感器对象
DHT dht(DHTPIN, DHT11);
// ESP8266 WiFi模块对象
ESP8266WiFi esp8266(RST_PIN, CH_PD_PIN, GPIO0_PIN);
// MQTT客户端对象
PubSubClient client(esp8266);
void setup() {
// 初始化串口
Serial.begin(9600);
// 连接WiFi
esp8266.begin("YOUR_WIFI_SSID", "YOUR_WIFI_PASSWORD");
// 等待WiFi连接成功
while (esp8266.status() != WL_CONNECTED) {
delay(100);
}
// 打印连接成功的提示信息
Serial.println("WiFi连接成功");
// 连接MQTT服务器
client.setServer(MQTT_SERVER, MQTT_PORT);
// 设置MQTT客户端ID、用户名和密码
client.setClientId(MQTT_CLIENT_ID);
client.setUsername(MQTT_USERNAME);
client.setPassword(MQTT_PASSWORD);
// 连接MQTT服务器
while (!client.connect()) {
delay(100);
}
// 打印连接成功的提示信息
Serial.println("MQTT连接成功");
// 订阅MQTT主题
client.subscribe(MQTT_TOPIC);
}
void loop() {
// 读取温湿度数据
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// 打印温湿度数据
Serial.print("温度:");
Serial.print(temperature);
Serial.print("°C ");
Serial.print("湿度:");
Serial.print(humidity);
Serial.println("%");
// 发布温湿度数据到MQTT主题
client.publish(MQTT_TOPIC, String(temperature).c_str());
client.publish(MQTT_TOPIC, String(humidity).c_str());
// 等待1秒
delay(1000);
}
- 上传代码
将代码上传到Arduino Uno中。
- 配置Onenet物联网平台
登录Onenet物联网平台,创建一个产品,并在产品中创建一个设备。
- 配置MQTT服务器地址和端口号
在Onenet物联网平台的设备详情页面,找到MQTT服务器地址和端口号,并将它们填入代码中。
- 配置MQTT客户端ID、用户名和密码
在Onenet物联网平台的设备详情页面,找到MQTT客户端ID、用户名和密码,并将它们填入代码中。
- 配置MQTT主题
在Onenet物联网平台的设备详情页面,找到MQTT主题,并将它填入代码中。
- 运行程序
运行程序,程序会连接WiFi,连接MQTT服务器,并订阅MQTT主题。当DHT11温湿度传感器获取到数据后,程序会将数据发布到MQTT主题。Onenet物联网平台会接收MQTT消息,并将数据存储在数据库中。
结语
至此,我们已经成功地将温湿度传感器获取的数据上传到Onenet物联网平台。我们可以通过Onenet物联网平台的Web界面或API来查看数据。