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); }

四、烧板查看结果
这时候代开串口可以看到:
Arduino|Arduino IDE实现ESP8266上传DHT11测量数据至MQTT服务器
文章图片

能看到这样的结果表示运行已经正常,
然后打开MQTTBox看看mqtt服务器的接收情况:
先来设置MQTTBox:
Arduino|Arduino IDE实现ESP8266上传DHT11测量数据至MQTT服务器
文章图片

设置完后点击最下面的确定:
Arduino|Arduino IDE实现ESP8266上传DHT11测量数据至MQTT服务器
文章图片

这样我们的工作就完成了。

    推荐阅读