找回密码
 注册
关于网站域名变更的通知
查看: 132|回复: 4
打印 上一主题 下一主题

AT32 EMAC MQTT Client

  [复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-6-30 10:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
本帖最后由 Ele_insect 于 2022-6-30 10:31 编辑   h7 N* V1 w6 T- C; r0 g4 ^
1 v$ {1 U% ~0 U8 |; r" j& Q2 A% x
随着物联网的发展,各式各样的装置都必须具备连网的能力,单芯片也不例外,为此我们以雅特力的AT32F407/AT32F437系列,演示了一系列的范例,以期用户能基于这些范例,使用雅特力的开发板发展出自己所需要的功能。6 o* Y0 _- E. C4 y
& w6 M: \; h$ I$ i, D5 g
pdf文件可以下载附件阅读8 r; D  Z% e5 A( f- N( E9 i

9 |# E1 z- {3 t$ X$ D" N
/ L: L" u6 y! y支持型号:4 p+ y) @! h& B2 }/ g/ ^
AT32F407xx2 a+ o) }$ @0 ^$ K- V0 N! u
AT32F437xx
. Z5 Y4 j; }" ~
* U/ }2 ?6 [' S+ Y8 L# b. u4 u- I0 I; h8 m. p
1        概述6 |! ^4 a( Z$ d- W
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的轻量级协议,该协议构建于TCP/IP协议之上,MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
- f7 E3 l/ j- Z本使用指南会介绍BSP里,MQTT客户端具体的使用方法。1 A$ v( v- R2 c% L# s8 r: ]
1.1        硬件资源' v( e7 {8 }9 D% a: d% V% g
1.        DM9162 以太网模块4 u$ l' {3 ~* r8 x9 j
2.        AT-START-F407 V1.1 实验版, B1 H4 z8 C9 s6 ]; O
3.        以太网线
8 i# X- d5 u; n3 ~- {$ [: ~, ?4.        串口打印工具& @' u" J4 ?, k5 R# r% X( n- U0 P
1.2        软件资源* Z# l: F/ f" f$ l  E
mqtt_client, MQTT client源程序,运行MQTT客户端程序,源码位于AT32Fxx_Firmware_Library_v2.x.x\project\at_start_fxx\examples\mqtt_client
  M, _* e  \0 ~$ _0 q注:所有project都是基于keil 5而建立,若用户需要在其他编译环境上使用,请参考! i; T2 p4 }6 h/ k
AT32xxx_Firmware_Library_V2.x.x\project\at_start_xxx\templates中各种编译环境(例如IAR6/7,keil 4/5)进行简单修改即可。
' t( l/ D- L: j# J$ `4 \2        AT32 MQTT client程序配置" q* Y) Q7 Q& N
2.1        管脚配置- I  x0 G4 d- h0 T) j8 h3 P
表1. 管脚配置
8 K, M3 A' D3 x6 F
) A# u5 Y* B6 ]- b& `! ^2.2        LwIP配置  E. E- o0 n! C( k" ^+ G
硬件资源只提供从PHY到MAC的信号处理,若要进行开发,则需要实作TCP/IP协议栈,在本应用中使用LwIP协议栈,该协议栈主要关注的是怎样减少减少内存的使用和程序代码的大小,这样就可以让LwIP适用于资源有限的小型平台例如嵌入式系统,更详细的内容可以访问官方网站。
; o: L7 i( [- f! m7 n由于整个协议栈已经整合到代码中,大部分的内容都无须修改,需要修改的内容主要包括下面两个部分:" E$ i  W/ j9 r1 G+ V
1.        根据自己的网段去设定IP地址及闸口地址,这两个全局变量宣告在netconf.c里面;
0 I4 V5 ~% ^& ~1 w2.        在mqtt_client.c中配置MQTT_SERVER_ADDRESS和MQTT_SERVER_PORT,用以选择MQTT服务器地址和端口。7 v, _0 y/ f; F) P0 x  Q9 h- w
图1. 配置芯片的IP地址4 M: S0 g. R* h# O4 x
" o2 y& m7 e! t6 P0 G! y
2.3        MQTT client project设置1 {5 l, b- u2 E" v; B0 _
在初始化LwIP协议栈之后,就可以配置MQTT client的应用了,芯片作为客户端是发出请求的一方,所以必须要配置往哪里发送数据,也就是说要知道服务端的socket。所谓的socket就是IP地址加上端口,在代码中我们宣告了几个宏定义代表服务端的socket, 可以在mqtt_client.h中找到MQTT_SERVER_ADDRESS和MQTT_SERVER_PORT这两个宏定义,用户可以根据网段跟应用修改这两个宏。
$ w" _% p9 {# f( ^; A# b图2. 配置服务端的socket
- T; Q: [0 j0 j( u! \* N % H: F5 }( {) l2 V: B7 K
2.4        MQTT server搭建. p9 k" Z0 B1 q4 T" n: Q' |3 K' g% A
MQTT服务器的搭建我们通过EMQX平台来实现,其提供了公共的MQTT云服务和私有部署两种MQTT服务器搭建方式,其中云服务需要设备能够访问互联网,而私有部署则是将服务器部署在本地,无需访问互联网。本应用指南选择私有部署的方式来实现MQTT服务器的搭建,用户如需使用MQTT云服务请自行访问EMQX官方网站了解详细信息,搭建私有部署MQTT服务器的方式如下。
+ k' d: e) E4 ^: D1.        访问下载链接,下载并解压EMQX。8 B8 \  s# d# V' q/ j
图3. 下载EMQX0 R7 B# ~: |" U: c- H$ O2 F$ J7 k0 R
& G( X6 j& _5 e" u# {* c* }" r
" D# u, D* r; N1 y6 O
2.        启动EMQX- C% z+ F: N) H3 W" C3 Z% R& a5 O
进入解压后的路径emqx\bin,打开CMD命令行,执行emqx start,如下图。- t+ k% J$ G; t% W
图4. 启动EMQX
' ^6 x! U  K" B5 w1 \! u1 L
8 b7 `; \5 c+ A/ A3.        配置上位机的IP地址、子网掩码及网关,IP地址与网关需要跟芯片设置在同一个网段下。
4 J- G; k- [9 E图5. 配置上位机的IP地址、子网掩码及网关3 j' S$ U4 ]9 W4 o+ }" i4 J$ b

8 H4 Y7 F- ~5 u/ `1 {, T4 c: P8 y4.        浏览器登录EMQX控制台
% M" F( x  E( E4 w" L$ y8 q服务器启动完成,在浏览器中输入本机IP地址192.168.81.1:18083,进入控制台登录界面,输入用户名admin和密码public,如下图。
8 @8 W8 A- M0 s. S4 i( \0 I图6. 浏览器登录EMQX控制台! J8 t& F  L1 C/ R  w

- d* `1 H1 A0 t) ]( d点击登录进入控制台,至此私有MQTT服务器搭建完成。$ F  \. b$ k" X

& k! `% g9 e) W7 D+ ], |2.5        软件流程
$ Z3 x7 S" w. a3 z; h1.        在初始化EMAC和LwIP之后,呼叫mqtt_client_init(), 即可开启mqtt client功能;! C- A& i" E3 i. w
2.        在lwip_periodic_handle函数中将会每秒执行一次at32_mqtt_publish函数对预先定义的信息进行发布;
0 E3 B1 A& E4 a2 k3.        通过回调函数at32_mqtt_incoming_data_cb则能够将收到的订阅信息在串口USART1上打印。
+ Z0 g! p- y$ z& K* t8 S图7. 初始化MQTT客户端
- o1 X, ]0 z1 b. G1 [& d! J ( v' p, G" Z% ]: [' [$ A
2.6        测试结果: s' ?& ]# Q+ j0 g% B1 S
1)        将开发板通过网线连接至路由器或网络接口
$ U9 \  x  g5 e3 G) m1 u9 N+ g2)        下载程序,并复位开发板6 j8 a0 b5 h1 P8 {. c
3)        打开PC端的MQTT控制台,点击工具->Websocket,并连接8 q( w$ G0 r; \! L& R1 R
图8. EMQX控制台Websocket连接服务器
% t0 I: b- v2 w$ B3 @3 ~$ x
; D5 E$ \/ `4 Y6 Y; r4)        填写订阅主题at_pub_topic并点击订阅,填写发布主题at_sub_topic和消息内容并点击发送
! n2 n, F8 E) Q8 f6 Z6 K9 a# N图9. EMQX控制台订阅和发布主题$ d3 a( I: C- x& D2 y
; U6 `' Y0 s8 v# B! x1 Y
5)        在订阅消息列表查看开发板MQTT客户端发布的消息内容,发布消息列表也能看到服务器所发送的内容( {2 T  w+ `8 s% T) j2 L" z
图10. EMQX控制台查看消息  H# m; N: y: Z

) N" a. u1 N: a, H0 V, B6)        通过USART1串口打印查看EMQX服务器发布的消息内容
2 `( e- g$ \# d8 z% p9 D图11.串口打印查看消息
1 t' D8 [, x3 O# ?/ p5 V 9 j+ S* ?& p/ }1 V% s: ?: J7 z  s

& L) P* M3 d1 S; Z6 n: y7 Z$ P! k/ `+ l

AN0058_AT32_ethernet_mqtt_client_ZH_V2.0.0.pdf

793.61 KB, 下载次数: 0, 下载积分: 威望 -5

该用户从未签到

2#
发表于 2022-6-30 11:22 | 只看该作者
谢谢楼主,下载学习

该用户从未签到

3#
发表于 2022-6-30 13:11 | 只看该作者
强大,借鉴学习一下

该用户从未签到

4#
发表于 2022-6-30 13:24 | 只看该作者
Thanks♪(・ω・)ノ楼主,下载学习

该用户从未签到

5#
发表于 2022-7-3 08:57 | 只看该作者
谢谢楼主,下载学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-19 16:40 , Processed in 0.093750 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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