Arduino IDE 开发 ESP-01S/ESP-01物联网实战检测温度湿度上传MQTT服务器
时间:2019-09-22
本文章向大家介绍Arduino IDE 开发 ESP-01S/ESP-01物联网实战检测温度湿度上传MQTT服务器,主要包括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 编写代码
#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主题
原文地址:https://www.cnblogs.com/easyidea/p/11568386.html
- 微信小程序「学科排名」发布了
- Nginx 负载均衡的Cache缓存批量清理的操作记录
- DotNet软件开发框架
- Nginx通过https方式反向代理的简单实现
- 再论IBatisNet + Castle进行项目的开发
- 利用xml轻松读取web.config中的用户自定义节
- 分布式监控系统Zabbix-3.0.3-完整安装记录(3)-监控nginx,php,memcache,Low-level discovery磁盘IO
- python报错问题解决:'ascii' codec can't encode character
- 利用message queue实现aspx与winform通信, 并附完整示例
- 10招步骤保护IIS服务器安全
- Haproxy+Keepalived高可用环境部署梳理(主主和主从模式)
- Android-Universal-Image-Loader 图片异步加载类库的使用
- 工作组模式下专用队列(Private Queue)如何引用远程队列路径
- haproxy反向代理环境部署(http和https代理)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 手把手教你搭建一个技术人的博客
- 发布更新|腾讯云 Serverless 产品动态 20200723
- Spring中异步注解@Async的使用、原理及使用时可能导致的问题
- Elasticsearch 聚合数据结果不精确,怎么破?
- Elasticsearch 预处理没有奇技淫巧,请先用好这一招!
- 时滞微分方程的matlab解法
- Zabbix Monitoring Logstash
- Join()和 List()的 6 种化学反应
- lettuce和hbase中对netty的使用你都了解吗?
- SAS-新规试行下诞生的程序
- AIOHTTP的实战(一)
- JMeter二次开发插件实例
- 「R」Obtain RNAseq Values for a Specific Gene in Xena Database
- 使用JMeter测试TCP协议
- SQL使用(一):如何使用SQL语句去查询第二高的值