摘要:很多小伙伴在初期学习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下载