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

AT32 EMAC MQTT Client

  [复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 Ele_insect 于 2022-6-30 10:31 编辑 # e' r6 d, }" y5 F: x+ N6 q

/ H6 l5 c- f$ b1 D2 O- B& `随着物联网的发展,各式各样的装置都必须具备连网的能力,单芯片也不例外,为此我们以雅特力的AT32F407/AT32F437系列,演示了一系列的范例,以期用户能基于这些范例,使用雅特力的开发板发展出自己所需要的功能。
, }/ `9 q) Y2 G" {1 f1 G8 `  w
# U) [( A, `  ?* Y1 ^. [- lpdf文件可以下载附件阅读' p7 u; D6 G9 p# ]3 p
) s: _0 o) t% }1 y

" P6 l% ?9 P. ~: k  r3 {3 Q1 _' z支持型号:% ?& k5 T1 g2 k6 b
AT32F407xx4 Z( W0 Z. v. _; [
AT32F437xx1 [# L/ p$ ~8 o) g

1 K5 z1 k; U' @5 x. T/ i- {# h
1 v9 d) `( @& C& ]1        概述0 W3 E  Y- }  P  ?, }9 {" E7 P3 i
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的轻量级协议,该协议构建于TCP/IP协议之上,MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
3 h0 }: p3 `4 a/ Q5 u: ^7 j本使用指南会介绍BSP里,MQTT客户端具体的使用方法。, b  u8 j9 T7 u" Z  l9 Y. c
1.1        硬件资源
1 f  z. v5 x' F  \" S, X1.        DM9162 以太网模块9 D0 \3 K, t8 D$ j7 C2 M5 S
2.        AT-START-F407 V1.1 实验版
6 m0 A3 B' G" ]2 x3 b7 P3.        以太网线, m- v+ b% n7 j) i
4.        串口打印工具1 G" W$ ^/ ^8 u0 n
1.2        软件资源
8 q- S1 d+ b( p6 ymqtt_client, MQTT client源程序,运行MQTT客户端程序,源码位于AT32Fxx_Firmware_Library_v2.x.x\project\at_start_fxx\examples\mqtt_client7 ^* o) q% e6 Z1 h; j* E
注:所有project都是基于keil 5而建立,若用户需要在其他编译环境上使用,请参考: D0 y: P( l* L1 f& b
AT32xxx_Firmware_Library_V2.x.x\project\at_start_xxx\templates中各种编译环境(例如IAR6/7,keil 4/5)进行简单修改即可。' Q  n7 G2 n3 D
2        AT32 MQTT client程序配置% v& y5 K9 V0 `7 C% ~
2.1        管脚配置  V! N2 Q% X( N
表1. 管脚配置& i+ i- c; n* }) y
+ q( e" M4 w! q( k+ k% R- \! p
2.2        LwIP配置" C8 x1 u: k0 G
硬件资源只提供从PHY到MAC的信号处理,若要进行开发,则需要实作TCP/IP协议栈,在本应用中使用LwIP协议栈,该协议栈主要关注的是怎样减少减少内存的使用和程序代码的大小,这样就可以让LwIP适用于资源有限的小型平台例如嵌入式系统,更详细的内容可以访问官方网站。
  c3 s, X5 h2 E4 G9 k1 a+ p& o0 @由于整个协议栈已经整合到代码中,大部分的内容都无须修改,需要修改的内容主要包括下面两个部分:5 B# t  Y; D5 c
1.        根据自己的网段去设定IP地址及闸口地址,这两个全局变量宣告在netconf.c里面;
6 `  T4 T* C: j. |2 E2.        在mqtt_client.c中配置MQTT_SERVER_ADDRESS和MQTT_SERVER_PORT,用以选择MQTT服务器地址和端口。
4 I0 B  {: K# |* u- m图1. 配置芯片的IP地址, J, G8 _7 I" b

; H% i  o- X$ ?4 c% t2 O& A2.3        MQTT client project设置! A( e3 N4 S# x5 \3 U
在初始化LwIP协议栈之后,就可以配置MQTT client的应用了,芯片作为客户端是发出请求的一方,所以必须要配置往哪里发送数据,也就是说要知道服务端的socket。所谓的socket就是IP地址加上端口,在代码中我们宣告了几个宏定义代表服务端的socket, 可以在mqtt_client.h中找到MQTT_SERVER_ADDRESS和MQTT_SERVER_PORT这两个宏定义,用户可以根据网段跟应用修改这两个宏。
3 A/ ]. p3 j5 a+ ]) C/ x! g图2. 配置服务端的socket
6 H9 u. J& |7 H# f" x 4 v- c; {" V: _9 j7 f+ o
2.4        MQTT server搭建6 k' X! Y5 Y# I" n7 @. r- z  c7 U
MQTT服务器的搭建我们通过EMQX平台来实现,其提供了公共的MQTT云服务和私有部署两种MQTT服务器搭建方式,其中云服务需要设备能够访问互联网,而私有部署则是将服务器部署在本地,无需访问互联网。本应用指南选择私有部署的方式来实现MQTT服务器的搭建,用户如需使用MQTT云服务请自行访问EMQX官方网站了解详细信息,搭建私有部署MQTT服务器的方式如下。
7 x9 u# j5 m7 O& [! n1.        访问下载链接,下载并解压EMQX。
; \- D3 ~/ {4 n: F' V# `图3. 下载EMQX
  k9 z& e$ s3 u' ]5 Y: Y$ u' L. |% B$ m5 H2 k 1 E7 ^; g* f" Y! h, h
( F  `6 E9 X$ ~( q% R, c3 t
2.        启动EMQX
1 g$ D/ P$ z9 |% O进入解压后的路径emqx\bin,打开CMD命令行,执行emqx start,如下图。2 ^( B: E6 S# B+ E  t
图4. 启动EMQX8 j( [* i  [3 Z* ?' G. A0 {" Y5 b4 w
) g. c# |0 y6 _, }" F( S
3.        配置上位机的IP地址、子网掩码及网关,IP地址与网关需要跟芯片设置在同一个网段下。
+ B( ~" @" y! [; W+ f/ D图5. 配置上位机的IP地址、子网掩码及网关* k9 ]& D( ?) _; X& N! Y* G& n6 ]
8 F' y$ d0 H0 o( L6 D% n1 j4 V* [1 \- N, N
4.        浏览器登录EMQX控制台& c+ C5 {: e( R" g2 f* }4 v$ `( m
服务器启动完成,在浏览器中输入本机IP地址192.168.81.1:18083,进入控制台登录界面,输入用户名admin和密码public,如下图。
, @# q. C+ ^: I7 R* y; y图6. 浏览器登录EMQX控制台
  u6 F6 u& F" j* k0 H9 l 3 p7 N1 x/ h) Z/ y2 x" G2 i
点击登录进入控制台,至此私有MQTT服务器搭建完成。
8 F: |% L/ P# y. g' U! r  i  I% [( h- c  f
2.5        软件流程
: `" u6 S+ }& T6 P1.        在初始化EMAC和LwIP之后,呼叫mqtt_client_init(), 即可开启mqtt client功能;- Q4 Y. e0 n" k
2.        在lwip_periodic_handle函数中将会每秒执行一次at32_mqtt_publish函数对预先定义的信息进行发布;0 p& b& _2 u; p% d9 r
3.        通过回调函数at32_mqtt_incoming_data_cb则能够将收到的订阅信息在串口USART1上打印。, t' I; r3 T- o! y4 D/ P  k
图7. 初始化MQTT客户端$ j' E) N9 z" }' Q

% B/ \/ p5 p. d7 n/ n2.6        测试结果' H- j: A3 n$ |4 U/ a
1)        将开发板通过网线连接至路由器或网络接口' z8 J6 B  ?2 I; ~
2)        下载程序,并复位开发板& X0 K/ E4 F+ \" r: n
3)        打开PC端的MQTT控制台,点击工具->Websocket,并连接
" f5 _/ J( k( g9 v图8. EMQX控制台Websocket连接服务器" x+ z& o% o  K4 E" i! v1 g

$ I; v: K& S5 k  v) F$ k) g4)        填写订阅主题at_pub_topic并点击订阅,填写发布主题at_sub_topic和消息内容并点击发送
; i7 M! K6 e5 F  D' l3 ~图9. EMQX控制台订阅和发布主题
8 e/ D9 D, J' [ ; Q' J! K9 M. r0 z4 c  p: m! F  c
5)        在订阅消息列表查看开发板MQTT客户端发布的消息内容,发布消息列表也能看到服务器所发送的内容4 y% R# ?* P& o$ C; _7 a
图10. EMQX控制台查看消息+ A1 n# u4 C5 r4 }

0 e  d0 l9 C: F6 Z) i6)        通过USART1串口打印查看EMQX服务器发布的消息内容
$ h  W, g& T9 d! R1 l4 g5 p5 q  q图11.串口打印查看消息
  f5 Q+ X9 v! a% U. @8 o+ ?- ^ 8 B" b* G$ M0 \+ O

) J; z' C! Q4 d# x7 T1 [0 {( P9 `  b# Q" c, V0 E/ Q

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-14 08:37 , Processed in 0.093750 second(s), 26 queries , Gzip On.

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

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

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