Arduino IDE 开发 ESP-01S/ESP-01物联网实战检测温度湿度上传MQTT服务器
Posted easyidea
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Arduino IDE 开发 ESP-01S/ESP-01物联网实战检测温度湿度上传MQTT服务器相关的知识,希望对你有一定的参考价值。
一、硬件准备
USB转ESP8266两块、DHT11温度湿度传感器、ESP8266-01/ESP8266-01一块(如果学习的话多买几块,ESP-01/ESP-01S的区别)
USB转ESP8266 说明:为什么要买两块
二、软件准备
Arduino、EMQX(这是mqtt服务器可以部署在本地也可以放在远程服务器上)、MQTTBox(mqtt客户端程序)、如果是Window系统的话 安装相关USB驱动程序。
三、安装EMQX 下面介绍的方法是部署在远程服务器上。
四、安装Arduino IDE
五、配置Arduino IDE 的 ESP8266开发环境
六、把ESP-01与DHT11连接
七、打开Arduino IDE 编写代码
注意修改 Wi-Fi名和 Wi-Fi密码,如果是本地mqtt服务器的话地址填 127.0.0.1
#include <SimpleDHT.h> #include <ESP8266WiFi.h> #include <PubSubClient.h> int pinDHT11 = 2; // GPIO2 of ESP8266 const char* ssid = "XXXXX";//手机Wi-Fi热点 const char* password = "XXXX";//手机Wi-Fi密码 const char* mqtt_server = "XXXXXXX";//服务器网址或者IP地址 //const String macAddress = WiFi.macAddress(); //const char* clientID = macAddress.c_str(); //MAC地址 const char* clientID = "ESP8266_01_A"; //连接mqtt用户名 WiFiClient espClient; PubSubClient client(espClient); SimpleDHT11 dht11(pinDHT11); long lastMsg = 0; char msg[50]; int value = 0; void setup() //pinMode(BUILTIN_LED, OUTPUT); // 将BUILTIN_LED引脚初始化为输出 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) 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)) //connected Serial.print("MQTT连接成功"); // 连接mqtt成功 // client.publish("ESP_01主题", "hello world"); // 一旦连接,发布公告… client.subscribe("ESP_01主题"); // 一旦连接,发布主题 else delay(5000); // 等待5秒再重试 void loop() if (!client.connected()) reconnect(); client.loop(); ////////温度湿度 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 = "温度:"; //字符串拼接 tmp += String(temperature); tmp += String(" 湿度:"); tmp += String(humidity); Serial.print((int)temperature); Serial.print(" *C, "); Serial.print((int)humidity); Serial.println(" H"); client.publish("ESP_01主题", tmp.c_str());//发送主题 delay(2000); ////////温度湿度
八、烧录程序
用改装过的 USB转ESP8266 连接ESP-01连接电脑,准备烧录。
点击IDE左上角的箭头开始烧录。
九、测试程序
把烧录好的ESP8266,取下来,装到 USB转ESP8266 没改装的转换器上,插入电脑,打开IDE右上角的图标,即可看到运行状态。
十、打开MQTTBox 订阅ESP_01主题
以上是关于Arduino IDE 开发 ESP-01S/ESP-01物联网实战检测温度湿度上传MQTT服务器的主要内容,如果未能解决你的问题,请参考以下文章
通过 Arduino IDE 来自 IFTTT 的 HTTP 响应代码 -1
解析-ESP01模块开发Arduino物联网wifi开关模块
使用Arduino点亮ESP-01S,ESP8266-01S上的板载LED
迄今为止最好的arduino开发平台:vscode+platformio,秒杀arduino ide。及vscode+pio对比arduino ide对比Stduino