[ESP8266]刷MQTT固件以及连接服务器失败的问题解决

摘要:很多小伙伴在初期学习ESP8266 WIFI模块时会遇到很多的问题。其中主要包括:应该给ESP8266模块刷什么固件版本合适、STM32下位机应该怎样编写驱动程序以及大家可能都遇到过的连接服务器失败等问题。由于博主本人在学习使用ESP8266 WIFI模块初期也遇到过类似的问题,现在博主将这些解决经验分享给有需要的小伙伴们。博主给ESP8266 WIFI模块刷的MQTT固件,因此下面也主要给大家介绍一下刷MQTT固件的流程以及解决连接服务器失败的问题。

一、给ESP8266刷鞋MQTT固件

1.1 ESP8266 WIFI模块的选择

博主买的是德飞莱的ESP-12S WIFI模组,如下图。其实买哪个模组不重要,主要的是WIFI模块的型号。刷MQTT固件需要的flash相较于其它的要大一点,因此需要选择稍大一点的型号模组,官方提供的MQTT固件主要也是适配于12S的模块。因此博主也建议使用ESP-12S型号。

虽然博主使用的是德飞莱的WIFI模块,但是不建议购买这个这个模块,因为他刷固件不方便啊,而且淘宝官方店还给没有接线的原理图!!!!当时下这个固件折磨了我好久。所以建议大家购买那种flash大一点,把刷驱动的引脚留出来的模块。

1.2 MQTT固件下载

由于博主使用的WIFI模块是用的安信可科技的32模组,所以可以在安信可官网资料里面下载MQTT固件包。选择固件号:1112的透传固件,下载。大家可以点击下面的连接直接跳转到该网页进行下载:https://docs.ai-thinker.com/%E5%9B%BA%E4%BB%B6%E6%B1%87%E6%80%BB

1.3 辅助工具安装下载 

1.3.1 刷固件工具 :flash_download_tool

现在给ESP8266刷写新固件差不多也基本上用的是这个flash_download_tool工具,其界面如图:

下载连接我就不贴了,网站上搜索一大把,或者也可以下载我上传的资源包,里面包含了所有所需要的工具、MQTT固件,以及STM32成功连接服务器的例程,还有我总结的一些使用注意事项。

 1.3.2 数据生成平台

博主使用的是阿里云物联网开发平台。因此大家如果不会阿里云物联网开发平台的话可以参考这位非常厉害的博主教程:https://blog.csdn.net/u014779536/article/details/106328156

登录阿里云服务器需要正确的连接参数,大家可能接触过不同的服务器连接参数输出工具,有离线网页的,有单独.exe软件的,在这里博主本人非常推荐一款连接参数输出工具:阿里云物联平台配置。他长这样:

 由于过了太久,我也找不到当初的下载连接在哪了,所以我也只能将这个打包放在上传的资源包里了。至于我为什么非常推荐这个配置功能,我后面会讲到。

 1.3 固件烧录方法

①.进入固件烧录软件后,根据ESP8266 flash内容大小选择相应的配置。点击第一行空白处的右侧的‘"...",选择需要烧录的固件,右侧的空白框填写"0x0000"。弄好后,记住在左侧的空白小框中勾选上这一行,勾选中后,这一行显示绿色。

②由于博主的模块没有将烧录引脚引出,所以还得借助杜邦线手动连接才行。

刷固件时需要将RST、IO0两个引脚同时接地,点击 "START",此时显示错误错,松开RST引脚,使其悬空,但是IO0引脚继续接地,然后再次点击 "START"开始烧录便成功了。如下图:

 同时附上ESP8266引脚图:

1.4 MQTT固件测试

大家根据自己生成的信息,使用下列AT指令测试MQTT固件是否刷入成功。以下代码也是ESP 8266 WIFI模块登录云服务器的指令流程。大家在测试登录阿里云服务器时,最好是先将单独的WIFI模块成功接入阿里云服务器后再进行加入STM32单片机的操作。

二、关于ESP8266连接服务器失败的解决

2.1 模块登录服务器失败

相信很多小伙伴都遇到过连接服务器失败的情况,其返回报错信息如下:

+MQTTDISCONNECTED:0 ERROR

官方给出MQTT使用手册中给出了这样相关的内容:

 其大致意思是说:

一般情况下,AT MQTT命令会在10秒内响应,但AT+MQTTCONN命令除外。例如,如果路由器无法访问internet,则AT+MQTTPUB命令会在10秒内响应。但是AT+MQTTCONN命令可能需要更多的时间,因为在不良的网络环境中需要重传数据包。.如果AT+MQTTCONN基于TLS连接,每个包的超时为10秒,则根据握手包计数,总超时将长得多。

当MQTT连接结束时,将提示消息+MQTTDISCONNECTEd:<LinkID>。

当MQTT连接建立时,它将提示消息+MQTTCONNECTED:<LinkID>“<scheme><”主机“>,端口,<”路径“>,<reconnect>

简单的说就是,使用AT+MQTTCONN命令时,断开连接或者主动连接失败都会返回+MQTTDISCONNECTEd:<LinkID> 错误内容。

关键来了:

连接服务器时之所以会报错的原因就是出在利用 物联平台配置工具生成的PASSWORD不正确

其正确的做法是:

①在建立好阿里云物联网平台的物理模型后,将设备的三元组复制到物联平台配置工具中

②Cilentld 随便填,5位;TimeStamp不要填!!!,不然生成密码有误!!!

③再将生成的密码等参数重新进行MQTT AT测试。然后你就会发现,此时WIFI模块可以正常连接云服务器了;

由于博主的WIFI模块被拿去做项目了,所以现在暂时不能给大家展示完整的成功连接流程。待过一段时间,我会再来完善这篇文章,将完整的成功连接流程补上。

若使用了这个方法还是没有连接失败,给予各位一下几点建议:

1.仔细检查填入参数配置平台的数据是否正确以及进行MQTT连接时,输入的指令内容是否正确。

2.尝试使用博主使用的参数配置平台。

3.本博主使用的该参数配置平台连接阿里云服务器,没有测试过腾讯云等其它服务器,所以使用其它云服务器的不一定适用哦。

4.坚持不懈,再次百度😊

如果本篇文章对各位小伙伴有帮助的话,可以给博主给个关注和点赞哦!

 最后附上本人总结的ESP8266资源包,里面包含了MQTT固件、刷固件工具、阿里云物联平台配置工具、WiFi模块配合STM32F103C8T6单片机成功连接服务器上传事件的例程以及OLED 0.96显示的例程。如下:

ESP8266连接阿里云服务器开发过程中所有需要用到的软件及开发成功开发例程。-C文档类资源-CSDN下载

  • 34
    点赞
  • 172
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 36
    评论
`use std::error::Error;` 是 Rust 中用于导入 `std::error` 模块中的 `Error` trait 的语句。这个 trait 是用于处理错误的标准库 trait,它提供了一些方法来操作和处理错误。 `Error` trait 是一个被用于对象的特性,它提供了一些方法,比如 `description()` 和 `cause()` 方法,用于获取关于错误的描述信息和错误的原因。这些方法可以被自定义的错误类型实现,以便在处理错误时提供更多的信息。 在 Rust 中,当函数可能返回一个错误时,通常会使用 `Result` 类型来表示可能的返回值。而在处理这些错误时,可以使用 `Error` trait 的方法来获取更多有关错误的信息,并进行适当的处理。 以下是一个例子,演示了如何使用 `Error` trait 来处理错误: ```rust use std::error::Error; fn main() { if let Err(e) = run() { println!("Error: {}", e.description()); if let Some(cause) = e.cause() { println!("Cause: {}", cause); } } } fn run() -> Result<(), Box<dyn Error>> { // ... // 在这里可能会发生错误 // ... Err(Box::<dyn Error>::from("An error occurred")) } ``` 上述代码中,`run()` 函数可能会返回一个错误,所以它的返回类型是 `Result<(), Box<dyn Error>>`。在 `main()` 函数中,我们通过模式匹配处理可能的错误,并使用 `Error` trait 的方法来获取错误的描述信息和原因。 需要注意的是,在 Rust 2018 版本之后,`Error` trait 已经被弃用,建议使用 `std::error::Error` trait 来替代。
评论 36
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我Bu秃头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值