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

AT32 EMAC MQTT Client

  [复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 Ele_insect 于 2022-6-30 10:31 编辑 $ \; R6 [+ k5 e, y2 B4 o, u
6 I3 }9 x& M: x) V
随着物联网的发展,各式各样的装置都必须具备连网的能力,单芯片也不例外,为此我们以雅特力的AT32F407/AT32F437系列,演示了一系列的范例,以期用户能基于这些范例,使用雅特力的开发板发展出自己所需要的功能。. S. _; p/ E7 I1 q  W

! M) ~7 M! Y# z' k$ f& v+ @pdf文件可以下载附件阅读( _( H, U- o2 L$ p

$ i6 m1 M8 n$ @$ C$ G1 p- G! L
8 }* B9 b1 x7 Y8 n% |3 I支持型号:1 _8 F* [$ S" Y7 h* ~
AT32F407xx
# {- h2 `- O% e: O- q% n' AAT32F437xx: g8 L5 C: K  l
0 X* m, H! `! D% X; |

, f; C, _( \( \6 b% s' Q) K3 P" x1        概述
5 G! ^6 t+ D6 }9 a$ s# ~: MMQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的轻量级协议,该协议构建于TCP/IP协议之上,MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。6 m, Q$ l8 v" X2 U2 H( T
本使用指南会介绍BSP里,MQTT客户端具体的使用方法。" s, d3 _* ~% N4 P
1.1        硬件资源
/ Q( d+ z" p9 P" S9 ~$ [) a1.        DM9162 以太网模块4 ?- }, p# n! D. Q
2.        AT-START-F407 V1.1 实验版
7 f' W# ]- z! ~; j8 e) c3 D3.        以太网线  m* r) R8 m; ^7 W9 A" @
4.        串口打印工具4 `( Y/ C) R: S8 c+ n' Z
1.2        软件资源# H3 @  Z# e3 n% S+ B& F4 F
mqtt_client, MQTT client源程序,运行MQTT客户端程序,源码位于AT32Fxx_Firmware_Library_v2.x.x\project\at_start_fxx\examples\mqtt_client( z6 }: Y8 ?% L6 A
注:所有project都是基于keil 5而建立,若用户需要在其他编译环境上使用,请参考: E& E$ |" F" S# k5 f% p( J
AT32xxx_Firmware_Library_V2.x.x\project\at_start_xxx\templates中各种编译环境(例如IAR6/7,keil 4/5)进行简单修改即可。. Z9 \: T: @8 |8 G; G+ O1 _
2        AT32 MQTT client程序配置
3 [; z$ g* p9 u2 a2.1        管脚配置
; R, a' j% M/ y) r5 [表1. 管脚配置8 {) r8 l& \! R( h  i6 o; P

% b, {/ [" V9 }- A3 d# v- S- A  ^2.2        LwIP配置
" r' g; R* ], k硬件资源只提供从PHY到MAC的信号处理,若要进行开发,则需要实作TCP/IP协议栈,在本应用中使用LwIP协议栈,该协议栈主要关注的是怎样减少减少内存的使用和程序代码的大小,这样就可以让LwIP适用于资源有限的小型平台例如嵌入式系统,更详细的内容可以访问官方网站。
7 q, G" U9 O# l; C$ Y由于整个协议栈已经整合到代码中,大部分的内容都无须修改,需要修改的内容主要包括下面两个部分:
+ J6 @4 P" A* n1.        根据自己的网段去设定IP地址及闸口地址,这两个全局变量宣告在netconf.c里面;* s8 k; }4 g7 c( E: U5 ]
2.        在mqtt_client.c中配置MQTT_SERVER_ADDRESS和MQTT_SERVER_PORT,用以选择MQTT服务器地址和端口。* b6 |, m" N7 R+ N
图1. 配置芯片的IP地址8 Y- l% Z( |! ^; h7 K/ _
6 U3 M" T: Y7 c# t8 C; N
2.3        MQTT client project设置
* b+ ~3 d9 Y6 `3 R+ g# W+ @6 z在初始化LwIP协议栈之后,就可以配置MQTT client的应用了,芯片作为客户端是发出请求的一方,所以必须要配置往哪里发送数据,也就是说要知道服务端的socket。所谓的socket就是IP地址加上端口,在代码中我们宣告了几个宏定义代表服务端的socket, 可以在mqtt_client.h中找到MQTT_SERVER_ADDRESS和MQTT_SERVER_PORT这两个宏定义,用户可以根据网段跟应用修改这两个宏。
$ R) S  ?, x( T5 V" R图2. 配置服务端的socket: L7 s0 M$ I, d3 t
* y# G% l5 z; W1 N6 K6 _
2.4        MQTT server搭建$ j/ B3 Y0 h8 N9 n
MQTT服务器的搭建我们通过EMQX平台来实现,其提供了公共的MQTT云服务和私有部署两种MQTT服务器搭建方式,其中云服务需要设备能够访问互联网,而私有部署则是将服务器部署在本地,无需访问互联网。本应用指南选择私有部署的方式来实现MQTT服务器的搭建,用户如需使用MQTT云服务请自行访问EMQX官方网站了解详细信息,搭建私有部署MQTT服务器的方式如下。
! Q4 k7 D( h  i% o, e/ u1.        访问下载链接,下载并解压EMQX。
8 D1 q) D! E4 m) t) L: |图3. 下载EMQX
4 }0 f4 k: `, J7 X* {  v5 E: w ! k  |$ a/ t: t2 E1 r, [" F
% L5 ]5 L/ A/ ~1 r
2.        启动EMQX
, L# @( Q. ?0 S1 h进入解压后的路径emqx\bin,打开CMD命令行,执行emqx start,如下图。
7 A% B& x- k8 Y, X+ b图4. 启动EMQX/ O( X1 {) ~1 d

3 l; m5 r0 m# e) x3.        配置上位机的IP地址、子网掩码及网关,IP地址与网关需要跟芯片设置在同一个网段下。
( c5 F5 [& |' c( R) m0 b" v9 J图5. 配置上位机的IP地址、子网掩码及网关
5 e3 ?& y) n: ?4 k( K4 s0 e / m+ y+ a  A" D/ k4 D# c* x9 s
4.        浏览器登录EMQX控制台
4 _% n. b; n# ]5 p) x服务器启动完成,在浏览器中输入本机IP地址192.168.81.1:18083,进入控制台登录界面,输入用户名admin和密码public,如下图。( B4 V/ |6 g8 E' R- Y
图6. 浏览器登录EMQX控制台
: o/ t  b1 u' `% ^ 6 d3 a  H8 C- e& U; `& [
点击登录进入控制台,至此私有MQTT服务器搭建完成。" c5 v9 k2 A& P; D+ Z" z- A) k

7 j* H5 g5 y- Q+ W2.5        软件流程* z, T6 J+ Y3 [
1.        在初始化EMAC和LwIP之后,呼叫mqtt_client_init(), 即可开启mqtt client功能;' o$ O6 J7 u/ O* e$ f
2.        在lwip_periodic_handle函数中将会每秒执行一次at32_mqtt_publish函数对预先定义的信息进行发布;# f9 n; M* b2 }! K! _1 B% q
3.        通过回调函数at32_mqtt_incoming_data_cb则能够将收到的订阅信息在串口USART1上打印。
  R+ Y7 |, @! }! L1 f图7. 初始化MQTT客户端
- B$ ]2 I( U2 @3 e: _
' m2 q' U8 M1 Y+ n2.6        测试结果6 G# O3 x8 N/ T, v# u
1)        将开发板通过网线连接至路由器或网络接口' Y- Y! g3 O% D9 F0 r
2)        下载程序,并复位开发板
- E3 D; N7 t$ q( x: Y3)        打开PC端的MQTT控制台,点击工具->Websocket,并连接
8 F" q) |2 V9 `图8. EMQX控制台Websocket连接服务器
7 L: m$ y6 c0 l! l& D$ \/ X+ u1 e 7 d6 _3 X+ f5 Z  {9 |0 g
4)        填写订阅主题at_pub_topic并点击订阅,填写发布主题at_sub_topic和消息内容并点击发送
2 G, P' H7 c- \- v图9. EMQX控制台订阅和发布主题
( H5 t0 Y" f4 s1 y$ d 6 H6 H! C4 H8 K) ]1 f) u. \
5)        在订阅消息列表查看开发板MQTT客户端发布的消息内容,发布消息列表也能看到服务器所发送的内容0 O+ C7 U1 W; \5 ]3 V
图10. EMQX控制台查看消息
+ ~6 u9 j8 I1 b- B" N5 u
( k0 }6 i9 a1 c4 x  X' H8 n6)        通过USART1串口打印查看EMQX服务器发布的消息内容
8 U* T! d, v: {' W图11.串口打印查看消息
7 S! I: {% t; Z8 a4 {* L 7 h* @- A4 L% Q& N

- D2 ]7 x; W1 ]# }
6 M9 F# ]" @" e! v9 i3 U% D. A4 ?

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-10-8 23:05 , Processed in 0.156250 second(s), 26 queries , Gzip On.

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

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

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