amoBBS 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
查看: 1468|回复: 10

step by step,基于ASM9260T实现的MQTT物联网终端

[复制链接]
发表于 2019-6-11 10:57:59 | 显示全部楼层 |阅读模式
本帖最后由 alpscale 于 2019-6-11 11:01 编辑

1.   概述
        MQTT是近年来开始流行的一种轻量级的通讯协议,非常适合物联网各个节点与服务器通讯的应用。如果你的节点有100个,200个,你可以自己搭建服务器,自己写私有的通讯协议,但是如果你的节点有10000个,20000个,甚至更多,此时MQTT就是一种非常好的选择。 MQTT在终端节点端( Client )及 服务器端(Server) 都有非常成熟的案例,可以助你快速搭建你的物联网平台。
MQTT主要通过 发布(pub)和订阅(sub)来实现服务器与节点的通讯,具体大家可以自己上网搜索。这里主要讲述 ASM9260t在linux平台下,如果快速使用MQTT的库。

2.  交叉编译Paho的MQTT库
        很多第三方团队为MQTT通讯协议开发了库,其中Paho的库比较流行,paho.mqtt.embedded-c-master.zip是Paho专为嵌入式准备的库。
        在linux解压该库,可以看见该库包含如下文件。


        其中MQTTClient是基于C++的client端,MQTTClient-C是基于C的client端,MQTTPacket包含了后续编译时一些必不可少的c文件和h头文件。

        为了能够正确交叉编译该库,使其能被ASM9260T使用,我们先来改一下makefile文件。首先修正prefix,重定义安装目录。


          然后在OSTYPE,linux下,重新指定交叉编译器路径。


           设置完成后,还需要在 被安装的目录下,创建一个lib文件夹,否则等下编译会报错。


        配置好Makefile文件以后,在paho.mqtt文件夹下进行编译,输入make,编译成功以后,再输入makeinstall,如果没有遇到错误,会在安装文件夹下的lib文件夹中生成如下lib文件。

        要想在ASM9260t硬件平台上使用这3个库,需要将这3个文件复制到根文件系统的/lib目录。

3.  交叉编译应用程序
        范例应用程序可以参考MQTTPacket目录下的pub0sub1.c,其包含了一个完整connect连接服务器,及收(sub)/发(pub)操作。
        我们可以在硬盘上找个方便的位置建立一个新的文件夹,把pub0sub1.c复制过去进行修改,并自己编写一个Makefile文件。
        在程序中,我们需要注意以下一些地方,首先是mqtt服务器的地址及端口号,其次要给每个mqtt节点设定独立的clientID(不能重复),接着配置登录服务器所需的账号和密码。


        接着我们配置应用程序的Makefile文件,其中CFLAGS是编译mqtt应用程序所需的头文件,LDFLAGS是编译mqtt应用程序的lib文件,这2个路径都必须设置正确。
        另外可能还需要用到transport.c, MQTTConnectClient.c等文件,也需要在Makefile文件里提前设置好路径。
        设置完毕后,在此文件夹进行编译,编译成功生成的pub0sub1复制到ASM9260T开发硬件根文件系统的相关文件夹,然后运行即可。


4. 测试
        目前有很多第三方的测试工具可以用来测试MQTT通讯的完整性,这里推荐mqttfx-1.6.0-windows.exe,大家可以上网下载最新版本。
        安装完成后打开软件,在设置界面,一般情况下配置一下登录的服务器地址和端口号,并配置一下用户名及密码即可。


        配置好软件以后,点击Connect进行连接。在Publish页面下配置好目标地址,并在下面的文本框里输入想要发送的数据,然后点击Publish即可发送。


        在Subscribe页面下输入想要监控的目标节点,点击Subscribe。后续所有该节点上发的数据都可以被监控到。


5.  总结
        内置32MBytes SDRAM的ASM9260T非常适合做低成本linux节点下的MQTT终端。其LQFP特性利于生产和加工,其具有很强的抗干扰能力以使相关终端应用在各种工业场合。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2019-6-11 11:04:02 | 显示全部楼层
支持
试着在ARM上裸机实现MQTT
发表于 2019-9-11 19:44:22 | 显示全部楼层
有在裸机上实现MQTT的例子么?
发表于 2019-9-11 21:22:49 来自手机 | 显示全部楼层
感谢楼主分享
发表于 2019-9-11 22:09:19 来自手机 | 显示全部楼层
最近搞bga搞得想吐啊。
发表于 2019-9-12 13:14:38 | 显示全部楼层
测试怎么办
发表于 2019-9-12 13:51:30 来自手机 | 显示全部楼层
zxq6 发表于 2019-9-11 22:09
最近搞bga搞得想吐啊。

bga有啥吐的?
发表于 2019-9-12 15:59:43 | 显示全部楼层

没有掌握到焊接要领,经常吹爆芯片。
而且,芯片吹下来后,还要植球。麻烦死了。
 楼主| 发表于 2019-9-13 06:31:53 | 显示全部楼层
liuyingqing139 发表于 2019-9-11 19:44
有在裸机上实现MQTT的例子么?

暂时没有裸机的。
发表于 2019-9-13 11:29:09 | 显示全部楼层
alpscale 发表于 2019-9-13 06:31
暂时没有裸机的。

裸机搞MQTT不难啊,有socket接口就行;keil自带的TCPnet,或者lwip都行。
发表于 2019-9-13 12:00:50 | 显示全部楼层
裸机不难,如楼上
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|阿莫电子论坛(原ourAVR/ourDEV) ( 公安备案:44190002001997(交互式论坛) 工信部备案:粤ICP备09047143号 )

GMT+8, 2020-2-18 18:25

阿莫电子论坛, 原"中国电子开发网"

© 2004-2018 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表