Arduino|Arduino IDE实现ESP8266上传DHT11测量数据至MQTT服务器
【Arduino|Arduino IDE实现ESP8266上传DHT11测量数据至MQTT服务器】一、硬件准备
ESP8266一块
温度传感器DHT11一块
二、软件准备
Arduino IDE
MQTTBox
下载地址在这里
emqX服务器
emqx服务器搭建方法见这里
三、编辑代码
#include #include
#include
int pinDHT11 = 2;
//esp8266用gpio2脚
const char* ssid="XXX";
//家里wifi账号
const char* password="xxxxxxxx";
//wifi密码
const char* mqtt_server = "xxx.xxx.xxx.xxx";
//mqtt服务地址
const char* clientID ="xxxx-id";
// 设备idWiFiClient espClient;
PubSubClient client(espClient);
SimpleDHT11 dht11(pinDHT11);
void setup() {
Serial.begin(115200);
setup_wifi();
client.setServer(mqtt_server,1883);
client.setCallback(callback);
}void setup_wifi(){
delay(10);
WiFi.begin(ssid,password);
//连接WiFi
while(WiFi.status()!=WL_CONNECTED){ //连接不上延迟0.5秒再连
delay(500);
}
Serial.println("WiFi connected");
}
//设置反馈
void callback(char* topic,byte* payload, unsigned int length){
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
for (int i = 0;
i < length;
i++) {
Serial.print((char)payload[i]);
}
}void reconnect() {
// 循环重新连接,直到连上
while (!client.connected()) {if (client.connect(clientID)) {
Serial.print("MQTT连接成功");
// 连接mqtt成功
client.subscribe("dhtll");
// 一旦连接,订阅主题
} else {
delay(5000);
}
}
}void loop() {
if(!client.connected()){
reconnect();
}
client.loop();
// start working...
Serial.println("=================================");
Serial.println("Sample DHT11...");
// read without samples.
byte temperature = 0;
byte humidity = 0;
int err = SimpleDHTErrSuccess;
if ((err = dht11.read(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
Serial.print("Read DHT11 failed, err=");
Serial.println(err);
delay(1000);
return;
}
String tmp = "temp:";
//字符串拼接
tmp += String(temperature);
tmp += String("humi:");
tmp += String(humidity);
Serial.print("Sample OK: ");
Serial.print((int)temperature);
Serial.print(" *C, ");
Serial.print((int)humidity);
Serial.println(" H");
client.publish("dht11",tmp.c_str());
//发送主题和内容delay(3000);
}
四、烧板查看结果
这时候代开串口可以看到:
文章图片
能看到这样的结果表示运行已经正常,
然后打开MQTTBox看看mqtt服务器的接收情况:
先来设置MQTTBox:
文章图片
设置完后点击最下面的确定:
文章图片
这样我们的工作就完成了。
推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- 孩子不是实现父母欲望的工具——林哈夫
- opencv|opencv C++模板匹配的简单实现
- Node.js中readline模块实现终端输入
- java中如何实现重建二叉树
- 人脸识别|【人脸识别系列】| 实现自动化妆
- paddle|动手从头实现LSTM
- pytorch|使用pytorch从头实现多层LSTM