MCU端增加paho_mqtt协议,通过EC20模组将数据传输到阿里云(详细)

大家好,前几天跟大家分享了一篇关于EC20模组连接阿里云的博客,连接如下,这个片博文将的是MCU端发发送AT_MQTT指令给EC20模组,paho_mqtt协议在模组这端,将数据传输到阿里云,这样做的缺点是灵活性不够好,为了更方便的修改一些参数,我们现在讲paho_mqtt协议移植到MCU端。

https://blog.csdn.net/weixin_40593838/article/details/108481485

这里我们主要是用RT-RTREAD的一些组件来完成移植,第一次用可能有些手生,多练习就可以了,接下来进行详细说明。

首先我们从RT-THREAD官网下载ENV工具和RT-RTread源码,链接如下:https://www.rt-thread.org/page/download.html

RT-THread源码,建议下载最新版本的源码包

MCU端增加paho_mqtt协议,通过EC20模组将数据传输到阿里云(详细)_第1张图片

ENV工具

MCU端增加paho_mqtt协议,通过EC20模组将数据传输到阿里云(详细)_第2张图片

将下载下来的文件放到英文路径文件夹中。

 

源码包中提供了非常丰富的DEMO资料,我们可以根据自己手里的开发板选择合适的DEMO,我下载的源码包版本是rt-rtread-v4.0.2版本,在bsp文件夹下有很多的DEMO资料包,截图如下

 

MCU端增加paho_mqtt协议,通过EC20模组将数据传输到阿里云(详细)_第3张图片

在这个stm32文件夹里有很多关于正点原子的开发板配套的资料,其实不管是什么开发板,最后我们选择好对应的MCU型号,配置好连接的GPIO管脚就能实现我们想要的功能。

因为我手里用的是一块STM32F407VG型号 MCU的开发板,所以呢我在STM32文件夹中选择了如下工程

MCU端增加paho_mqtt协议,通过EC20模组将数据传输到阿里云(详细)_第4张图片

在这里我们将使用到ENV工具,对ENV工具进行一个简单的配置,进入ENV目录,可以运行本目录下的env.exe,如果打开失败可以尝试使用env.bat。ENV目录下有一张Add_Env_To_Right_click_Menu.png(天津Env至右键菜单的.png)的图片,如下

添加 Env 控制台到右键菜单

根据图片上的步骤操作,就可以在任意文件夹下通过右键菜单来启动Env控制台了。效果如下:

通过右键菜单来启动 Env 控制台

到这里配置Env就成功了,接下来对我们的bsp文件进行配置。如果还有不清楚的可以入rt-thread官网的文档中心查看详细的操作流程,文档中心链接:https://www.rt-thread.org/document/site/programming-manual/env/env/

进入到工程里,在空白的区域按下鼠标右键,选择ConEmu Here来打卡ENV工具

MCU端增加paho_mqtt协议,通过EC20模组将数据传输到阿里云(详细)_第5张图片

打开的Env控制台如下图:

MCU端增加paho_mqtt协议,通过EC20模组将数据传输到阿里云(详细)_第6张图片

通过控制台我们来下载一些组件,包括paho_mqtt、at_devict、at_socket等,操作如下

在控制台输入menuconfig回车

MCU端增加paho_mqtt协议,通过EC20模组将数据传输到阿里云(详细)_第7张图片

进入到menuconfig图形化配置控制台

MCU端增加paho_mqtt协议,通过EC20模组将数据传输到阿里云(详细)_第8张图片

首先在这里我们选择我们需要的组件,通过键盘上的方向键选择到RT-Thread online packages,按下回车键,进入到其子菜单,选择Iot - internet of things ,再次进入到其子菜单,通过方向键移动到paho_mqtt选项上,按下空格键选中,选中后会显示*号,如下图

MCU端增加paho_mqtt协议,通过EC20模组将数据传输到阿里云(详细)_第9张图片

选中后进入其子菜单,对其进行一些配置,选择 MQTT example 和MQTT test这两个选项,操作完成后按下esc键返回上一菜单,找到at_device对其进行配置

MCU端增加paho_mqtt协议,通过EC20模组将数据传输到阿里云(详细)_第10张图片

选中了AT_DEVICE如下图,安回车键进入到其子菜单

MCU端增加paho_mqtt协议,通过EC20模组将数据传输到阿里云(详细)_第11张图片

在这里我们要配置两个选项,在AT socket中选择我们使用的EC20模组,其实我还使用了合宙的Air720模组,这里主要讲述与EC20模组的配置方法,在AT client device name 这里选择uart2,大家要根据自己的时间情况选择对应的串口,这个串口是MCU与EC20模组通讯使用的串口,接下来我们在配置一些其他的参数

MCU端增加paho_mqtt协议,通过EC20模组将数据传输到阿里云(详细)_第12张图片

返回到这个菜单中,可以选择下自己使用的MCU型号,配置下系统时钟,还要使能uart1  和  uart2, uart1使用用来打印log信息的以及使用msh命令的时候会用到,uart2是我们前面与EC20模组通讯要用的串口,这里要使能下才能用到,接下来进入到RT-Thread Components的子菜单里进行相关的配置

MCU端增加paho_mqtt协议,通过EC20模组将数据传输到阿里云(详细)_第13张图片

进入菜单后选择network,在进入到其子菜单

MCU端增加paho_mqtt协议,通过EC20模组将数据传输到阿里云(详细)_第14张图片

在这里选择AT commands,进入其子菜单

MCU端增加paho_mqtt协议,通过EC20模组将数据传输到阿里云(详细)_第15张图片

在这里我们使能 debug log outpu,使能AT commands server,在Server device name中选择uart2,这个串口同样是与EC20模组通讯的串口,The maximum lenght of AT Commonds bufferk这里的buff大小可以选择的大一些,根据自己设备发送数据量的大小来定,这个菜单的配置就OK了,在看下其他的配置。

MCU端增加paho_mqtt协议,通过EC20模组将数据传输到阿里云(详细)_第16张图片

返回到这里,选中RT-Thread kernel并进入到其子菜单

MCU端增加paho_mqtt协议,通过EC20模组将数据传输到阿里云(详细)_第17张图片

在这里有个系统滴答时钟要配置下,这里配置的是100,意思是1000/100 = 10ms,如果用到rt_thread_delay()函数的话,其时基就是10ms,然后进入到kernel Device object选项

MCU端增加paho_mqtt协议,通过EC20模组将数据传输到阿里云(详细)_第18张图片

在这里主要配置下打印log的串口,根据自己的实际情况选择,好到这里就都配置完了,安esc退出到最后选择YES保存所有配置,等待Env下载我们选择的组件。

MCU端增加paho_mqtt协议,通过EC20模组将数据传输到阿里云(详细)_第19张图片

下载完组建后使用Env工具编译下工程,输入命令scons --target=mdk5 ,我用的是keil5,如果大家用的是keil4 的话编译命令就是scons --target=mdk4 ,编译完成后用keil打开工程,对工程上的一些信息进行修改

用keil打开工程后在左侧paho_mqtt文件夹中有一个mqtt_test文件,在这个文件中做如下修改:

如下图,这里是连接阿里云重要的三元组信息,包括productkey   设备名  转换后的密码,关于这样一块的信息可以查看如下文档连接:https://help.aliyun.com/document_detail/140507.html?spm=a2c4g.11186623.6.571.55977b7bCFSwul,这个连接讲述的是使用MQTT.fx软件测试与阿里云链接,我们实际也是使用的这些信息,用这个软件测试通过后,把这些信息拷贝到keil这里使用

MCU端增加paho_mqtt协议,通过EC20模组将数据传输到阿里云(详细)_第20张图片

入下图所示,这个函数是用来接收云平台发来的消息的回调函数,我们可以在这个函数里处理云平台的消息

MCU端增加paho_mqtt协议,通过EC20模组将数据传输到阿里云(详细)_第21张图片

如下图,这里是连接云平台 掉线 上线的回调函数,可以在这些回调函数里实现一些通知类的处理

MCU端增加paho_mqtt协议,通过EC20模组将数据传输到阿里云(详细)_第22张图片

在如下图的现在中处理设备向云端发送的消息

如下图,使用此函数发送具体的消息内容,发送成功返回0

然后在主函数中调用如下函数即可或者在XSHELL控制台输入命令启动也可以

比如在控制台启动mqtt_test_start,我们可以输入命令 mqtt_test 回车,然后输入mqtt_test start即可,这样程序就跑起来的

 

到这里程序跑起来了,就可以将我们的地数据传输到阿里云了,其实这里面还有很多概念性的东西没有讲到,这里主要涉及到梁大块内容的知识点,一个是阿里云平台,另一个是rt-thread,我在这里给大家把这两个平台的的文档中心链接分享出来,如果有哪里不清楚的,多看文档,里面说的很详细,必能解决的大家的问题。

阿里云:https://help.aliyun.com/product/30520.html?spm=a2c4g.11186623.6.540.122c7908Xl1Lky

RT-Thread:https://www.rt-thread.org/document/site/

祝大家学习愉快!

 

 

 

 

 

你可能感兴趣的:(嵌入式,物联网,嵌入式,物联网)