arduino d1连接阿里云遇到mqtt connect err怎么办
摘要:采用arduino d1模块连接阿里云物联网平台非常方便,但是有一些同学在做实验的时候,经常遇到mqtt connect err问题,连接不上物联网平台,本文就介绍2种解决方法。

目录
1.问题分析
2.解决方法
2.1更换wifi
2.2 修改PubSubClient.h文件
3.运行效果
1.问题分析
很多同学都是通过这个文章来入门阿里云物联网平台的,我将能够正常使用的源代码全部放在了文章中,也一步步将基本知识和操作详细描述了。
从arduino板开始做到阿里云app控制--WeMos D1或ESP8266连接阿里云文章合集及源代码
参考这个文章合集的同学,一步步照做了,激动地等待连接物联网平台成功的那一刻,可是却看到连接错误。

这个错误出现在mqtt客户端与阿里云物联网平台加密连接的语句上,也就是说,esp8266自己作为一个mqtt客户端(这种客户端可以是安卓APP、硬件,也可以是单纯的网络应用,比如fx),这个客户端按照mqtt的协议,将设备的三元组信息加密,然后通过网络连接到阿里云物联网平台。

上图中的语句调用了PubSubClient的函数,如果成功,则返回0,也就是MQTT_CONNECTED,
如果没有连接成功,则返回错误代码,如下图所示。常见的返回错误有MQTT_CONNECT_BAD_CLIENT_ID和MQTT_DISCONNECTED。

2.解决方法
2.1更换wifi
因为现在的wifi设备有2.4G和5G两种,有一些是兼容两种的。这里要知道5G和我们常说的5G手机的那种5G不是一回事。
5G手机说的是第五代移动网络,指的是蜂窝移动通信技术,指的是第5代。
wifi中的5G说的是采用了5G Hz频段传输wifi信号,指的是频段。
第四代802.11n,可运行于2.4GHz或5GHz,20和40MHz带宽下最快72和150Mbit/s。
esp8266支持哪个频段呢?根据乐鑫esp8266规格书

第1页 1.1 Wi-Fi主要特性描述中提到,只支持2.4GHz的频段。

说到这里您明白了吧,如果您家里或者宿舍的wifi是最新款的,那么极有可能被默认设置为5G,而不是2.4G和5G兼容模式,那么可能导致您的设备连接不上,或者连接不稳定。
解决办法就是更换wifi,或者用手机开热点进行调试。
2.2 修改PubSubClient.h文件
这个文件从哪里找?按照arduino官方的说法,不同的操作系统,位置不同。例如我的win7 x64,是在“C:\Users\Administrator\sketchbook\libraries\PubSubClient\src”目录下

,而有的win7 x64,是在“我的文档/Arduino/libraries/PubSubClient/src”目录下。

无论是在哪个目录下,要修改的内容都是相同的。找到PubSubClient.h头文件,然后编辑。找到MQTT_MAX_PACKET_SIZE,将256修改为1024,再找到MQTT_KEEPALIVE,将15修改为60。

烧录就行了。
3.运行效果
打开arduino自带的串口监视器(用其他串口调试终端也可以),D1自动初始化,然后开始找wifi,连接wifi成功之后,MQTT就连接上了。

可以登陆阿里云物联网平台观察设备在线情况。

第二种解决方法,其实在合集文章中已经提到过。无论大家从哪个地方看到这个解决方法,都是可以搞定mqtt connect err问题的。
使用arduino D1 wifi模块(WeMos D1)连接阿里云物联网平台并成功实现APP点亮板载LED(八)---对d1模块编程

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
