打印
[应用相关]

AT32 EMAC MQTT Client

[复制链接]
2881|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 林堪堪 于 2022-6-16 20:05 编辑

前言
随着物联网的发展,各式各样的装置都必须具备连网的能力,单芯片也不例外,为此我们以雅特力的AT32F407/AT32F437系列,演示了一系列的范例,以期用户能基于这些范例,使用雅特力的开发板发展出自己所需要的功能。

pdf文件可以下载附件阅读

支持型号:
AT32F407xx
AT32F437xx


1        概述
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的轻量级协议,该协议构建于TCP/IP协议之上,MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
本使用指南会介绍BSP里,MQTT客户端具体的使用方法。
1.1        硬件资源
1.        DM9162 以太网模块
2.        AT-START-F407 V1.1 实验版
3.        以太网线
4.        串口打印工具
1.2        软件资源
        mqtt_client, MQTT client源程序,运行MQTT客户端程序,源码位于AT32Fxx_Firmware_Library_V2.x.x\project\at_start_fxx\examples\mqtt_client
注:所有project都是基于keil 5而建立,若用户需要在其他编译环境上使用,请参考
AT32xxx_Firmware_Library_V2.x.x\project\at_start_xxx\templates中各种编译环境(例如IAR6/7,keil 4/5)进行简单修改即可。
2        AT32 MQTT client程序配置
2.1        管脚配置
表1. 管脚配置

2.2        LwIP配置
硬件资源只提供从PHY到MAC的信号处理,若要进行开发,则需要实作TCP/IP协议栈,在本应用中使用LwIP协议栈,该协议栈主要关注的是怎样减少减少内存的使用和程序代码的大小,这样就可以让LwIP适用于资源有限的小型平台例如嵌入式系统,更详细的内容可以访问官方网站。
由于整个协议栈已经整合到代码中,大部分的内容都无须修改,需要修改的内容主要包括下面两个部分:
1.        根据自己的网段去设定IP地址及闸口地址,这两个全局变量宣告在netconf.c里面;
2.        在mqtt_client.c中配置MQTT_SERVER_ADDRESS和MQTT_SERVER_PORT,用以选择MQTT服务器地址和端口。
图1. 配置芯片的IP地址


2.3        MQTT client project设置
在初始化LwIP协议栈之后,就可以配置MQTT client的应用了,芯片作为客户端是发出请求的一方,所以必须要配置往哪里发送数据,也就是说要知道服务端的socket。所谓的socket就是IP地址加上端口,在代码中我们宣告了几个宏定义代表服务端的socket, 可以在mqtt_client.h中找到MQTT_SERVER_ADDRESS和MQTT_SERVER_PORT这两个宏定义,用户可以根据网段跟应用修改这两个宏。
图2. 配置服务端的socket


2.4        MQTT server搭建
MQTT服务器的搭建我们通过EMQX平台来实现,其提供了公共的MQTT云服务和私有部署两种MQTT服务器搭建方式,其中云服务需要设备能够访问互联网,而私有部署则是将服务器部署在本地,无需访问互联网。本应用指南选择私有部署的方式来实现MQTT服务器的搭建,用户如需使用MQTT云服务请自行访问EMQX官方网站了解详细信息,搭建私有部署MQTT服务器的方式如下。
1.        访问下载链接,下载并解压EMQX。
图3. 下载EMQX



2.        启动EMQX
进入解压后的路径emqx\bin,打开CMD命令行,执行emqx start,如下图。
图4. 启动EMQX
  

3.        配置上位机的IP地址、子网掩码及网关,IP地址与网关需要跟芯片设置在同一个网段下。
图5. 配置上位机的IP地址、子网掩码及网关
  

4.        浏览器登录EMQX控制台
服务器启动完成,在浏览器中输入本机IP地址192.168.81.1:18083,进入控制台登录界面,输入用户名admin和密码public,如下图。
图6. 浏览器登录EMQX控制台
  

点击登录进入控制台,至此私有MQTT服务器搭建完成。

2.5        软件流程
1.        在初始化EMAC和LwIP之后,呼叫mqtt_client_init(), 即可开启mqtt client功能;
2.        在lwip_periodic_handle函数中将会每秒执行一次at32_mqtt_publish函数对预先定义的信息进行发布;
3.        通过回调函数at32_mqtt_incoming_data_cb则能够将收到的订阅信息在串口USART1上打印。
图7. 初始化MQTT客户端


2.6        测试结果
1)        将开发板通过网线连接至路由器或网络接口
2)        下载程序,并复位开发板
3)        打开PC端的MQTT控制台,点击工具->Websocket,并连接
图8. EMQX控制台Websocket连接服务器

4)        填写订阅主题at_pub_topic并点击订阅,填写发布主题at_sub_topic和消息内容并点击发送
图9. EMQX控制台订阅和发布主题

5)        在订阅消息列表查看开发板MQTT客户端发布的消息内容,发布消息列表也能看到服务器所发送的内容
图10. EMQX控制台查看消息

6)        通过USART1串口打印查看EMQX服务器发布的消息内容
图11.串口打印查看消息




AN0058_AT32_ethernet_mqtt_client_ZH_V2.0.0.pdf

793.61 KB

使用特权

评论回复
沙发
soodesyt| | 2022-6-20 15:28 | 只看该作者
AT32可以使用rtt驱动的。   

使用特权

评论回复
板凳
pl202| | 2022-6-20 15:37 | 只看该作者
这个怎么使用wifi通信呢?

使用特权

评论回复
地板
wangdezhi| | 2022-6-20 16:01 | 只看该作者
物联网是所有芯片的趋势?  

使用特权

评论回复
5
janewood| | 2022-6-20 16:27 | 只看该作者
这个功耗怎么样?

使用特权

评论回复
评论
林堪堪 2022-6-21 19:13 回复TA
功耗不会单独去测emac 
6
pl202| | 2022-6-20 17:01 | 只看该作者
MQTT可以的   

使用特权

评论回复
7
qq280572| | 2022-11-18 20:41 | 只看该作者
DHCP 下无法连接MQTT服务器的问题解决了吗?

使用特权

评论回复
8
jkl21| | 2022-12-3 12:43 | 只看该作者
为什么不使用Socket直接连接呢

使用特权

评论回复
9
biechedan| | 2022-12-3 12:52 | 只看该作者
AT32 的代码工程文件在哪里下载?

使用特权

评论回复
10
modesty3jonah| | 2022-12-3 14:30 | 只看该作者
MQTT通信的最大延迟是多少?              

使用特权

评论回复
11
chenjun89| | 2022-12-3 18:01 | 只看该作者
物联网应用常用MQTt协议

使用特权

评论回复
12
林堪堪|  楼主 | 2023-1-3 18:12 | 只看该作者
biechedan 发表于 2022-12-3 12:52
AT32 的代码工程文件在哪里下载?

https://www.arterytek.com/cn/product/AT32WB415.jsp

这是AT32WB415的官网网址,往下翻有bsp

使用特权

评论回复
13
Bowclad| | 2023-2-7 19:16 | 只看该作者
常用MQTt协议

使用特权

评论回复
14
tabmone| | 2023-3-2 11:01 | 只看该作者
MQTT在AT32设备上的移植吗?

使用特权

评论回复
15
maqianqu| | 2023-3-2 11:12 | 只看该作者
MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。

使用特权

评论回复
16
ccook11| | 2023-3-2 11:52 | 只看该作者
在哪里下载MQTT资源包              

使用特权

评论回复
17
ArterySW| | 2023-3-2 15:31 | 只看该作者
雅特力官网有EMAC网口的应用专栏,可通过如下链接访问
https://www.arterytek.com/cn/applications/index.jsp?index=2

使用特权

评论回复
18
uytyu| | 2023-3-2 16:02 | 只看该作者
连接mqtt,实现简单的智能家居控制?

使用特权

评论回复
19
yeates333| | 2023-3-2 16:13 | 只看该作者
谁有将mqtt移植好到AT32 开发板的示例工程

使用特权

评论回复
20
hilahope| | 2023-3-2 16:58 | 只看该作者
MQTT包容不稳定的网络               

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

69

主题

119

帖子

5

粉丝