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

AT32 EMAC MQTT Client

  [复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 Ele_insect 于 2022-6-30 10:31 编辑
+ z' J/ \& u2 z  h! E7 R. {
! L% t4 k1 P7 M/ n* \随着物联网的发展,各式各样的装置都必须具备连网的能力,单芯片也不例外,为此我们以雅特力的AT32F407/AT32F437系列,演示了一系列的范例,以期用户能基于这些范例,使用雅特力的开发板发展出自己所需要的功能。
* \* J( G/ G- {( _3 N; p1 s( e  T# {% A3 j9 }
pdf文件可以下载附件阅读* I0 `4 o% }+ z3 a6 Q& V* Y6 C8 k

* ~5 n! H2 o' ^5 e; s! B, [
" e  x0 g( u  I, I% k1 |+ }* E支持型号:2 D3 r  [6 J$ j$ }
AT32F407xx+ [- X1 {( O! ?! D! Q& S8 G9 g$ {
AT32F437xx0 _7 Q9 G" z; a9 {) X; B) W7 W

6 P4 ]5 @, B  N3 M
2 y$ m- g4 Z) P& u$ w/ _1        概述& q3 h+ r9 l/ z" M  k4 I
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的轻量级协议,该协议构建于TCP/IP协议之上,MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。: J' ^7 c" P( Q7 C8 k
本使用指南会介绍BSP里,MQTT客户端具体的使用方法。
; b- M' i. h( [5 V1.1        硬件资源
) `! u$ F# Z8 ~7 z* M# K6 @; q1.        DM9162 以太网模块$ F/ F  T9 H  g( [9 ?: ]+ q
2.        AT-START-F407 V1.1 实验版/ K1 c. f; Z0 b* k
3.        以太网线$ P3 ^( M* C* n/ ?3 {* ]. v, J* Q
4.        串口打印工具
7 I9 Y8 a6 ?( n! z3 K! B1.2        软件资源9 e7 }/ Z/ F6 j+ p! |+ |, t
mqtt_client, MQTT client源程序,运行MQTT客户端程序,源码位于AT32Fxx_Firmware_Library_v2.x.x\project\at_start_fxx\examples\mqtt_client
3 I1 R1 j# b$ v7 a注:所有project都是基于keil 5而建立,若用户需要在其他编译环境上使用,请参考
& c' R+ r4 |& E3 R% J4 I& g3 yAT32xxx_Firmware_Library_V2.x.x\project\at_start_xxx\templates中各种编译环境(例如IAR6/7,keil 4/5)进行简单修改即可。4 H5 f0 f7 m% F0 R: e+ ~
2        AT32 MQTT client程序配置; j. |6 E& B( }! ?' M5 X
2.1        管脚配置
# i$ z- N. U/ M% {1 C表1. 管脚配置* A$ C3 g" A+ X% S

- m% z" N; D* k+ g6 ^2.2        LwIP配置6 ^" i1 a. e3 x/ h" `
硬件资源只提供从PHY到MAC的信号处理,若要进行开发,则需要实作TCP/IP协议栈,在本应用中使用LwIP协议栈,该协议栈主要关注的是怎样减少减少内存的使用和程序代码的大小,这样就可以让LwIP适用于资源有限的小型平台例如嵌入式系统,更详细的内容可以访问官方网站。" \" d2 c" ]8 e
由于整个协议栈已经整合到代码中,大部分的内容都无须修改,需要修改的内容主要包括下面两个部分:1 R0 @4 {8 H) E6 @6 ^) S9 L1 o9 Y
1.        根据自己的网段去设定IP地址及闸口地址,这两个全局变量宣告在netconf.c里面;
# F; M' v; F. n8 B" g6 {- f2.        在mqtt_client.c中配置MQTT_SERVER_ADDRESS和MQTT_SERVER_PORT,用以选择MQTT服务器地址和端口。
% L& E1 F& H- ?7 i5 u图1. 配置芯片的IP地址  A% X# m; Q3 h

& I8 u* x; y* E9 g2.3        MQTT client project设置- K4 X! c! M5 f6 R* N# i; z# Y! b  x
在初始化LwIP协议栈之后,就可以配置MQTT client的应用了,芯片作为客户端是发出请求的一方,所以必须要配置往哪里发送数据,也就是说要知道服务端的socket。所谓的socket就是IP地址加上端口,在代码中我们宣告了几个宏定义代表服务端的socket, 可以在mqtt_client.h中找到MQTT_SERVER_ADDRESS和MQTT_SERVER_PORT这两个宏定义,用户可以根据网段跟应用修改这两个宏。
5 s% d) E- Z. F8 [7 D图2. 配置服务端的socket- H) z- @/ W" b9 C' M# X
, U* d6 L( I7 N7 s4 d: v! i0 \
2.4        MQTT server搭建
7 m. z" W" ^" O- |MQTT服务器的搭建我们通过EMQX平台来实现,其提供了公共的MQTT云服务和私有部署两种MQTT服务器搭建方式,其中云服务需要设备能够访问互联网,而私有部署则是将服务器部署在本地,无需访问互联网。本应用指南选择私有部署的方式来实现MQTT服务器的搭建,用户如需使用MQTT云服务请自行访问EMQX官方网站了解详细信息,搭建私有部署MQTT服务器的方式如下。
/ z3 W0 R3 @' [3 U! y, L& s1.        访问下载链接,下载并解压EMQX。( L9 N. L6 ~: v" A% g: j
图3. 下载EMQX
/ W) g, _) f7 `( _1 u 8 ^4 ]3 [  `$ r8 a  d6 l
* c2 Y: `. m' Y; P9 S
2.        启动EMQX
7 h- H, Q- v. {9 o进入解压后的路径emqx\bin,打开CMD命令行,执行emqx start,如下图。
8 u4 l: l; T/ {/ L% i* O图4. 启动EMQX4 J. q, h9 g) q, K

! L8 g& A: M# e4 G- T' @+ p/ z4 d! O3.        配置上位机的IP地址、子网掩码及网关,IP地址与网关需要跟芯片设置在同一个网段下。" i7 s" t7 i: [& j* Z, j" ~0 C
图5. 配置上位机的IP地址、子网掩码及网关+ ^$ Y* A* w6 U8 Y8 M
) I  T" O6 s& ^4 d3 U! m6 i" z- G  L
4.        浏览器登录EMQX控制台
* e7 r- ~' u' u: @2 \: u: T  b服务器启动完成,在浏览器中输入本机IP地址192.168.81.1:18083,进入控制台登录界面,输入用户名admin和密码public,如下图。
5 J# H. w0 @7 }7 Z图6. 浏览器登录EMQX控制台
) ~& e* x' y# P) g. e
0 d) \1 x- H1 {. k9 L% [点击登录进入控制台,至此私有MQTT服务器搭建完成。$ c" L. y+ ^8 H: _, J" F! c

5 H  Q$ J) z+ a/ d" D  x) ]0 F4 k* |2.5        软件流程
' F3 w4 y& _4 x3 s: j1.        在初始化EMAC和LwIP之后,呼叫mqtt_client_init(), 即可开启mqtt client功能;" ]$ a( \0 E. e6 t6 {
2.        在lwip_periodic_handle函数中将会每秒执行一次at32_mqtt_publish函数对预先定义的信息进行发布;
1 ~1 F5 y$ {" k, b1 g& y  i3.        通过回调函数at32_mqtt_incoming_data_cb则能够将收到的订阅信息在串口USART1上打印。
. N. v- `/ {, Q% Y9 s' \+ L. b图7. 初始化MQTT客户端1 s3 y( {9 X$ m, ]7 A& ]- P
* [- |! \6 T% v' _# S
2.6        测试结果
" H4 F8 ]6 y6 O1)        将开发板通过网线连接至路由器或网络接口
- ]3 n: h5 z. C2)        下载程序,并复位开发板
, S4 p" d) E$ C1 U3)        打开PC端的MQTT控制台,点击工具->Websocket,并连接
) _4 n+ y; r* a图8. EMQX控制台Websocket连接服务器- x! V- N  Q+ e! `& g" c  l
2 ~% d  n: r# }- V0 x
4)        填写订阅主题at_pub_topic并点击订阅,填写发布主题at_sub_topic和消息内容并点击发送
- b! u6 \. w1 z2 b图9. EMQX控制台订阅和发布主题
# I3 d' l6 w2 o; `% m) u: F2 z
: [- N7 b* R; j  h# e! Q5 Z% m5)        在订阅消息列表查看开发板MQTT客户端发布的消息内容,发布消息列表也能看到服务器所发送的内容, N. b  p, j0 h+ h) @
图10. EMQX控制台查看消息. a0 {! |) K  `) Y/ _; }2 Q

8 _7 E* p3 S. Y& z- F6)        通过USART1串口打印查看EMQX服务器发布的消息内容
: ]( Q: B* D* J* y) T图11.串口打印查看消息
- S, O1 v" u& r2 S
- u$ n4 w% K- ~' W
% L  K  x! a2 H2 N& \6 Y; N  T* u2 T) f! _

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-12 22:04 , Processed in 0.093750 second(s), 26 queries , Gzip On.

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

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

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