iis服务器助手广告广告
返回顶部
首页 > 资讯 > 服务器 >ESP-01S烧录及使用,连接本地MQTT服务器
  • 188
分享到

ESP-01S烧录及使用,连接本地MQTT服务器

服务器运维 2023-08-18 19:08:09 188人浏览 薄情痞子
摘要

网上的教程大多无法正常烧录与使用,因此在这里进行总结。 1 ESP-01S烧录 固件烧录建议使用专用的烧录器,十分省心。 本文讨论的是使用普通的CH340串口模块进行烧写。 必须使用的工具:杜邦线、CH340串口模块、另外一块有3V3电源和

网上的教程大多无法正常烧录与使用,因此在这里进行总结

1 ESP-01S烧录

固件烧录建议使用专用的烧录器,十分省心。
本文讨论的是使用普通的CH340串口模块进行烧写。
必须使用的工具:杜邦线、CH340串口模块、另外一块有3V3电源和GND的开发板。

1.1 烧写前连线

CH340 TTL转USB模块的引脚数量不够,因此需要另外一块开发板的引脚给ESP-01S提供高低电平。
注意:CH340的VCC引脚不要连接,电压比较高,可能会烧坏ESP-01S。
另一块开发板也要用USB线连接到电脑上。
CH340模块的供电不够,因此ESP-01S_VCC不连接到CH340,一般来说开发板供电都比较大,电源连接到开发板上。

# ESP-01S与CH340模块的连线:ESP-01S_TXD——CH340_RXDESP-01S_RXD——CH340_TXDESP-01S_GND——CH340_GND# ESP-01S与另一块开发板的连线ESP-01S_CH-PD/EN——3V3ESP-01S_GPio0——GNDESP-01S_GPIO2——3V3ESP-01S_VCC——3V3ESP-01S_RST——GND

ESP-01S_RST一定要先连接到GND上!烧录时要用到。

1.2 固件清除

点开烧录软件:
在这里插入图片描述
2、点击ESP8266 DownloadTool:
在这里插入图片描述
3、需要连接MQTT服务器的话必须使用相关AT固件:
教程:https://blog.csdn.net/weixin_46323814/article/details/128157350
下载链接:Https://docs.ai-thinker.com/%E5%9B%BA%E4%BB%B6%E6%B1%87%E6%80%BB
在这里插入图片描述
4、连接好所有的导线后,点击ERASE。
看到SYNC后,立刻拔掉ESP-01S_RST(非常重要),等待一秒,就可以清除程序了。
在这里插入图片描述
清除过程为Download。
清除完成后,显示Finish。

1.3 固件烧写

刚刚清除程序拔掉了ESP-01S_RST,现在再次连上GND。
点击START,开始烧写固件。
等到SYNC后,立刻拔掉ESP-01S_RST引脚(非常重要),等待一秒,软件就开始下载了。
在这里插入图片描述
点击STOP退出,这时烧入固件就成功了。

2 ESP-01S串口测试

不能使用CH340模块给ESP-01S供电,依然需要另一块开发板供电。
此时的连线需要进行改变:

# ESP-01S与CH340模块的连线:ESP-01S_TXD——CH340_RXDESP-01S_RXD——CH340_TXDESP-01S_GND——CH340_GND# ESP-01S与另一块开发板的连线ESP-01S_CH-PD/EN——3V3/悬空ESP-01S_GPIO0——3V3/悬空ESP-01S_GPIO2——3V3/悬空ESP-01S_VCC——3V3ESP-01S_RST——3V3/悬空

也就是最少只需要4根导线连线。

2.1 打开串口工具

选择串口,波特率初始值为115200,
发送方法:
(1)输入AT,选择“发送新行”,点击“发送数据”。
在这里插入图片描述
(2)输入AT加上回车,不选择“发送新行”,点击“发送数据”。
在这里插入图片描述
(3)输入AT,不选择“发送新行”,点击“发送数据”。输入回车,不选择“发送新行”,点击“发送数据”。
在这里插入图片描述
以上三种方法都可以测试成功。

2.2 AT指令——ESP-01S连接WIFI

以连接MQtT服务器为目的。
1、恢复初始化:

AT+RESTORE 

修改串口波特率:

AT+UART 9600,1,0,0

修改之后需要改串口软件的波特率。
3、设置STA模式:

AT+CWMODE?# 查询指令AT+CWMODE=# 设置指令,改为1:STA模式;2:AP模式;3:混合模式

连接AP(或者路由器WIFI):

AT+CWJAP?# 查询指令AT+CWJAP:,[,]# 目标AP的SSID,密码,# [,]目标AP的Mac地址,一般用于多个SSID相同的AP情况

输入命令:AT+CWJAP="MERCURY_XXXX","XXXXXXXX",如果连接成功,则会显示:

WIFI CONNECTEDWIFI GoT IPOK

开启单连接:

AT+CIPMUX=0

查询本地IP地址:

AT+CIFSR

收到回复:

+CIFSR:STAIP,"192.168.xxx.xxx"+CIFSR:STAMAC,"8c:xx:xx:xx:xx:xx"OK

3 ESP-01S连接本地MQTT服务器

3.1 本地MQTT服务器安装

参考链接:https://blog.csdn.net/felix_tao/article/details/125882339

下载windows端的EMQX服务器:https://www.emqx.com/zh/downloads/broker/5.0.3/emqx-5.0.3-windows-amd64.tar.gz

解压到英文路径下。
在这里插入图片描述
3、打开命令提示符,输入以下命令,进入bin文件夹:

d:cd EMQXcd emqx-5.0.3-windows-amd64cd bin

在这里插入图片描述

开启MQTT服务器:

.\emqx start

在这里插入图片描述
5、查看EMQX服务器状态:

.\emqx_ctl status

在这里插入图片描述
6、如果要关闭服务器,输入:

.\emqx stop

浏览器登录EMQX服务器控制面板,验证是否可用。
(1)输入地址:http://127.0.0.1:18083/#/login
(2)用户名:admin
(3)密码:public
(4)修改中文和界面:
在这里插入图片描述
8、进入websocket
点击连接,订阅ESP8266和MQTTFX两个话题。
在这里插入图片描述
9、MQTT.fx软件设置连接配置:
Broker Address需要电脑cmd ipconfig一下,查看电脑IP。其他设置默认。
在这里插入图片描述
MQTT.fx发送消息。
在这里插入图片描述
在EMQX服务器面板里可以看到接收到的消息。
在这里插入图片描述
接下来匹配ESP-01S,目的是让ESP-01S连接上MQTT服务器。
这里特别奇怪,我的电脑上安装了虚拟机,虚拟机里跑EMQX服务器,电脑能连接,ESP-01S无法连接。初步怀疑是不在一个网段。

3.2 ESP-01S的AT配置

ESP8266共有三种工作模式,分别是无线接入点模式(AP)、无线终端模式以及混合模式(以上两种模式的混合)。
本文ESP-01S作为客户端,连接WIFI接收手机或者电脑的控制,这种模式为STA模式。
依然是AT指令:
1、配置MQTT用户属性AT+MQTTUSERCFG
指定MQTT ID和用户名,密码

AT+MQTTUSERCFG=,,<"Client_ID">,<"username">,<“password”>,,,<"path">
:当前仅支持 link ID 0。:1: MQTT over tcp;2: MQTT over TLS(不校验证书);3: MQTT over TLS(校验 server 证书);4: MQTT over TLS(提供 client 证书);5: MQTT over TLS(校验 server 证书并且提供 client 证书);6: MQTT over WEBSocket(基于 TCP);7: MQTT over WebSocket Secure(基于 TLS,不校验证书);8: MQTT over WebSocket Secure(基于 TLS,校验 server 证书);9: MQTT over WebSocket Secure(基于 TLS,提供 client 证书);10: MQTT over WebSocket Secure(基于 TLS,校验 server 证书并且提供 client 证书)。:MQTT 客户端 ID,最大长度:256 字节。:用户名,用于登陆 MQTT broker,最大长度:64 字节。:密码,用于登陆 MQTT broker,最大长度:64 字节。:证书 ID,目前 ESP-AT 仅支持一套 cert 证书,参数为 0。:CA ID,目前 ESP-AT 仅支持一套 CA 证书,参数为 0。:资源路径,最大长度:32 字节。

AT+MQTTUSERCFG=0,1,"esp01s_id","esp01s","esp01s",0,0,"/mqtt"
2、设置 MQTT 客户端 IDAT+MQTTLONGCLIENTID
设置相对较长的客户端 ID

AT+MQTTLONGCLIENTID=,# 收到OK后,输入长度为length的客户端ID,发送。# 再次收到OK
:当前仅支持 link ID 0。:MQTT 客户端 ID 长度。范围:[1,1024]。

应在设置AT+MQTTUSERCFG后再使用 AT+MQTTLONGCLIENTID

设置 MQTT 登陆用户名AT+MQTTLONGUSERNAME
设置相对较长的用户名

AT+MQTTLONGUSERNAME=,# 收到OK后,输入长度为length的用户名,发送。# 再次收到OK
:当前仅支持 link ID 0。:MQTT 用户名长度。范围:[1,1024]

设置 MQTT 登陆密码AT+MQTTLONGPASSWARD

AT+MQTTLONGPASSWord=,# 收到OK后,输入长度为length的密码,发送。# 再次收到OK
:当前仅支持 link ID 0。:MQTT 密码长度。范围:[1,1024]。

设置 MQTT 连接属性AT+MQTTCONNCFG

AT+MQTTCONNCFG=,,,<"lwt_topic">,<"lwt_msg">,,
:当前仅支持 link ID 0。:MQTT ping 超时时间,单位:秒。范围:[0,7200]。默认值:0,会被强制改为 120 秒。:设置 MQTT 清理会话标志,有关该参数的更多信息请参考 MQTT 3.1.1 协议中的 Clean Session 章节。0: 使能清理会话1: 禁用清理会话:遗嘱 topic,最大长度:128 字节。:遗嘱 message,最大长度:64 字节。:遗嘱 QoS,参数可选 0、1、2,默认值:0。:遗嘱 retain,参数可选 0 或 1,默认值:0。

连接MQTT Broker(TCP服务器)AT+MQTTCONN

AT+MQTTCONN?# 查询ESP32设备已连接的 MQTT broker# 响应:+MQTTCONN:,,<"host">,,<"path">,# 响应:OKAT+MQTTCONN=,<"host">,,# 连接MQTT Broker# 为MQTT服务器的地址,端口:1883
:当前仅支持 link ID 0。:MQTT broker 域名,最大长度:128 字节。:MQTT broker 端口,最大端口:65535。:资源路径,最大长度:32 字节。:0: MQTT 不自动重连。如果 MQTT 建立连接后又断开,则无法再次使用本命令重新建立连接,您需要先发送 AT+MQTTCLEAN=0 命令清理信息,重新配置参数,再建立新的连接。1: MQTT 自动重连,会消耗较多的内存资源。:MQTT 状态:0: MQTT 未初始化;1: 已设置 AT+MQTTUSERCFG;2: 已设置 AT+MQTTCONNCFG;3: 连接已断开;4: 已建立连接;5: 已连接,但未订阅 topic;6: 已连接,已订阅过 topic。:1: MQTT over TCP;2: MQTT over TLS(不校验证书);3: MQTT over TLS(校验 server 证书);4: MQTT over TLS(提供 client 证书);5: MQTT over TLS(校验 server 证书并且提供 client 证书);6: MQTT over WebSocket(基于 TCP);7: MQTT over WebSocket Secure(基于 TLS,不校验证书);8: MQTT over WebSocket Secure(基于 TLS,校验 server 证书);9: MQTT over WebSocket Secure(基于 TLS,提供 client 证书);10: MQTT over WebSocket Secure(基于 TLS,校验 server 证书并且提供 client 证书)。

订阅指定MQTT主题AT+MQTTSUB
可订阅多个主题。

AT+MQTTSUB?# 查询订阅的topiC# 响应:+MQTTSUB=,,<"topic1">,# 响应:OKAT+MQTTSUB=,<"topic">,# 订阅<"topic">主题# 当 AT 接收到已订阅的 topic 的 MQTT 消息# 响应:+MQTTSUBRECV:,<"topic">,,data# 若已订阅过该 topic# 响应:ALREADY SUBSCRIBE
:当前仅支持 link ID 0。:MQTT 状态:0: MQTT 未初始化;1: 已设置 AT+MQTTUSERCFG;2: 已设置 AT+MQTTCONNCFG;3: 连接已断开;4: 已建立连接;5: 已连接,但未订阅 topic;6: 已连接,已订阅过 MQTT topic。<"topic">:订阅的 topic。:订阅的 QoS,一般设置为0(1,2)。

AT+MQTTSUB=0,“ESP8266”,1
8、取消订阅 MQTT TopicAT+MQTTUNSUB
客户端取消订阅指定 topic

AT+MQTTUNSUB=,<"topic"># 若未订阅过该 topic# 响应:NO UNSUBSCRIBE
:当前仅支持 link ID 0。:MQTT topic,最大长度:128 字节。

发布字符串数据AT+MQTTPUB
通过 topic 发布 MQTT 字符串 消息。如果您发布消息的数据量相对较多,已经超过了单条 AT 指令的长度阈值 256 字节,请使用 AT+MQTTPUBRAW 命令。

AT+MQTTPUB=,<"topic">,<"data">,,
:当前仅支持 link ID 0。<"topic">:MQTT topic,最大长度:128 字节。<"data">:MQTT 字符串消息。:发布消息的 QoS,参数可选 0、1、或 2,默认值:0。:发布 retain,设置为0。

本命令不能发送数据 \0,若需要发送该数据,请使用 AT+MQTTPUBRAW 命令。
官方示例:

AT+CWMODE=1AT+CWJAP="ssid","password"AT+MQTTUSERCFG=0,1,"ESP32","espressif","1234567890",0,0,""AT+MQTTCONN=0,"192.168.10.234",1883,0AT+MQTTPUB=0,"ESP8266","msg:temp",0,0// 发送此命令时,请注意特殊字符是否需要转义。

发布长 MQTT 消息AT+MQTTPUBRAW
通过 topic 发布长 MQTT 消息。

AT+MQTTPUBRAW=,<"topic">,,,# 响应:OK# 响应:># 符号 > 表示 AT 准备好接收串口数据,此时您可以输入数据,当数据长度达到参数  的值时,数据传输开始。# 若传输成功# 响应:+MQTTPUB:OK# 若传输失败# 响应:+MQTTPUB:FAIL
:当前仅支持 link ID 0。:MQTT topic,最大长度:128 字节。:MQTT 消息长度,不同 ESP32 设备的最大长度受到可利用内存的限制。:发布消息的 QoS,参数可选 0、1、或 2,默认值:0。:发布 retain。

断开 MQTT 连接AT+MQTTCLEAN
断开 MQTT 连接,释放资源。

AT+MQTTCLEAN=
:当前仅支持 link ID 0。

3.3 ESP-01S连接EMQX服务器

ESP-01S的AT指令:

ATAT+UART=115200,8,1,0,0# 串口波特率设置AT+CWMODE=1# station模式,当做设备来连接wifiAT+CWJAP="MERCURY_****","********"# 连接WIFIAT+CIFSR# 查询IPAT+MQTTUSERCFG=0,1,"ESP8266-01s","esp8266","",0,0,""# 设置自身mqtt信息AT+MQTTCONN=0,"192.168.***.***",1883,0# 连接虚拟机EMQX,验证失败,未找到原因AT+MQTTCONN=0,"192.168.***.***",1883,0# 连接主机EMQX,验证成功AT+MQTTCONN?# 查看连接情况AT+MQTTPUB=0,"ESP8266","msg:temp",0,0# 发布消息AT+MQTTSUB=0,"MQTTFX",0# 订阅消息AT+MQTTSUB=0,"WebSocket",0AT+MQTTCLEAN=0# 断开MQTT连接

ESP-01S发布主题为ESP8266的消息:
在这里插入图片描述
服务器和MQTT.fx客户端订阅ESP8266后:
在这里插入图片描述
在这里插入图片描述
2、ESP-01S订阅MQTTFXWebSocket

AT+MQTTSUB=0,"MQTTFX",0AT+MQTTSUB=0,"WebSocket",0

在这里插入图片描述
(1)MQTT.fx发布主题为MQTTFX的数据:
在这里插入图片描述
ESP-01S接收到主题为MQTTFX的数据:
在这里插入图片描述
(2)WebSocket发送主题为WebSocket的消息:
在这里插入图片描述
ESP-01S接收到主题为WebSocket的数据:
在这里插入图片描述


参考链接:
https://blog.csdn.net/weixin_42934918/article/details/123956161
https://blog.csdn.net/weixin_61908666/article/details/129846039
https://blog.csdn.net/felix_tao/article/details/125882339

来源地址:https://blog.csdn.net/qq_45362336/article/details/130612379

--结束END--

本文标题: ESP-01S烧录及使用,连接本地MQTT服务器

本文链接: https://www.lsjlt.com/news/374588.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作