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

AT32 EMAC MQTT Client

  [复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 Ele_insect 于 2022-6-30 10:31 编辑
( `* V, U2 m& x
# u' o( x' Z- p" {; s随着物联网的发展,各式各样的装置都必须具备连网的能力,单芯片也不例外,为此我们以雅特力的AT32F407/AT32F437系列,演示了一系列的范例,以期用户能基于这些范例,使用雅特力的开发板发展出自己所需要的功能。$ k6 H1 ?. P. \5 {/ q* e0 r9 t

" i/ n/ R5 ~+ L* f) C2 T. ]pdf文件可以下载附件阅读
5 r0 J* S* `7 y
* R& H% d) H; J0 G  i9 X$ d) N6 L" X& R( v( J% z- J5 P
支持型号:5 w6 y/ ]6 R0 J8 _3 t, g! S# i6 m
AT32F407xx0 X% ], w) l2 b) G5 P- |& H
AT32F437xx( f# v. N$ C7 X2 L! T* Q; E; Q( f
& W, D( g* e, q# C

! h5 q5 f5 u. s+ Y, r1        概述
+ T5 F1 h' N; K, U1 `6 gMQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的轻量级协议,该协议构建于TCP/IP协议之上,MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。. j' g8 o. c  v
本使用指南会介绍BSP里,MQTT客户端具体的使用方法。9 e, ?' G0 H, h+ L
1.1        硬件资源% x/ e( S3 g) @* Z& m
1.        DM9162 以太网模块
3 @- ~2 T8 C9 ~8 N' K5 T& T2.        AT-START-F407 V1.1 实验版, c7 l/ R; b0 c* R! t
3.        以太网线5 D6 |9 i3 F1 g4 r
4.        串口打印工具4 K1 Q% I' m/ k0 w/ q. @
1.2        软件资源
* Y. D' o  k$ }, Hmqtt_client, MQTT client源程序,运行MQTT客户端程序,源码位于AT32Fxx_Firmware_Library_v2.x.x\project\at_start_fxx\examples\mqtt_client- e1 ~# D; k/ @- H* L# Q' b
注:所有project都是基于keil 5而建立,若用户需要在其他编译环境上使用,请参考
# H' R" Z3 I9 G; j  X; pAT32xxx_Firmware_Library_V2.x.x\project\at_start_xxx\templates中各种编译环境(例如IAR6/7,keil 4/5)进行简单修改即可。
' ^5 G8 M" x8 I4 Q' i  D! X! A2        AT32 MQTT client程序配置" a9 d4 S+ J1 C! }% Q
2.1        管脚配置. M  h4 M2 h6 z$ @
表1. 管脚配置8 X& e" y" S8 C
2 r8 }+ Z* Z! s! g
2.2        LwIP配置7 X# p$ z2 m  V/ O, e/ V
硬件资源只提供从PHY到MAC的信号处理,若要进行开发,则需要实作TCP/IP协议栈,在本应用中使用LwIP协议栈,该协议栈主要关注的是怎样减少减少内存的使用和程序代码的大小,这样就可以让LwIP适用于资源有限的小型平台例如嵌入式系统,更详细的内容可以访问官方网站。
/ V! I: }. X9 |7 b  S/ _: K由于整个协议栈已经整合到代码中,大部分的内容都无须修改,需要修改的内容主要包括下面两个部分:
/ P  z; u. q: ~: p2 t, W1.        根据自己的网段去设定IP地址及闸口地址,这两个全局变量宣告在netconf.c里面;
  e% F* F  a" u: ?  E2.        在mqtt_client.c中配置MQTT_SERVER_ADDRESS和MQTT_SERVER_PORT,用以选择MQTT服务器地址和端口。9 [( _  K; x  l3 x9 J) m* z
图1. 配置芯片的IP地址
% v: c( x2 Q& m3 l
  z! L2 L- [6 ^* x& R& H; z2.3        MQTT client project设置$ a! G8 Y5 Y, |& S& n3 ?) b
在初始化LwIP协议栈之后,就可以配置MQTT client的应用了,芯片作为客户端是发出请求的一方,所以必须要配置往哪里发送数据,也就是说要知道服务端的socket。所谓的socket就是IP地址加上端口,在代码中我们宣告了几个宏定义代表服务端的socket, 可以在mqtt_client.h中找到MQTT_SERVER_ADDRESS和MQTT_SERVER_PORT这两个宏定义,用户可以根据网段跟应用修改这两个宏。% \) x6 \6 w. z# Y
图2. 配置服务端的socket
4 ?& k; e# U7 ~, ~- t) `: q8 B
7 L5 I" j, C0 [2.4        MQTT server搭建
, }5 a0 K& l; X! KMQTT服务器的搭建我们通过EMQX平台来实现,其提供了公共的MQTT云服务和私有部署两种MQTT服务器搭建方式,其中云服务需要设备能够访问互联网,而私有部署则是将服务器部署在本地,无需访问互联网。本应用指南选择私有部署的方式来实现MQTT服务器的搭建,用户如需使用MQTT云服务请自行访问EMQX官方网站了解详细信息,搭建私有部署MQTT服务器的方式如下。3 x+ C4 m7 N/ w: B+ h' m
1.        访问下载链接,下载并解压EMQX。/ T% o, O- T  i# f/ R! y
图3. 下载EMQX
, S7 g8 I/ F' S6 n( U 3 s& j" V7 z8 U# s8 T" v0 I
5 D0 o( ~* }" W( r
2.        启动EMQX+ W4 Q% r4 N. S" B& {7 Y7 `7 U
进入解压后的路径emqx\bin,打开CMD命令行,执行emqx start,如下图。1 s$ g$ x0 J$ R+ I
图4. 启动EMQX
  O* i! d- U" X7 Z% f( J  p
1 N7 r  L* N9 x; _3.        配置上位机的IP地址、子网掩码及网关,IP地址与网关需要跟芯片设置在同一个网段下。
; s: j* T9 m: Q* {; I: F, f图5. 配置上位机的IP地址、子网掩码及网关
7 B) u; k% N0 {8 g2 |' ]" A
! o: N: Y+ Y  }7 l* ]6 {4.        浏览器登录EMQX控制台
1 n, }8 ?  c1 d# ~& y& Y& O  K服务器启动完成,在浏览器中输入本机IP地址192.168.81.1:18083,进入控制台登录界面,输入用户名admin和密码public,如下图。
7 A) q6 e  T9 i图6. 浏览器登录EMQX控制台
  b9 A) M4 V' m. o% H- n5 i
: h6 {  S- `# O点击登录进入控制台,至此私有MQTT服务器搭建完成。
3 b' L/ ]9 @7 M& W1 @! v/ v  e! t4 N8 d; S8 M
2.5        软件流程! K; M! |) u$ y4 G) G
1.        在初始化EMAC和LwIP之后,呼叫mqtt_client_init(), 即可开启mqtt client功能;
6 R6 E" j5 u0 A2 C2.        在lwip_periodic_handle函数中将会每秒执行一次at32_mqtt_publish函数对预先定义的信息进行发布;
2 R+ D( _/ B0 U: o# x! s* z3.        通过回调函数at32_mqtt_incoming_data_cb则能够将收到的订阅信息在串口USART1上打印。" u9 x$ j' e! G
图7. 初始化MQTT客户端
1 g% T7 R7 K- d( v
! J5 z- h4 m5 K7 L; ]7 y: U2 i7 O2.6        测试结果& `* F# r7 ?! e: k
1)        将开发板通过网线连接至路由器或网络接口
5 b7 M# Q) ?! v! X6 d* P2)        下载程序,并复位开发板9 u* p% b" |! w* A; Q  i) p
3)        打开PC端的MQTT控制台,点击工具->Websocket,并连接* x! w! c& a: T9 ?  O7 a3 S7 G; s" L- V% `
图8. EMQX控制台Websocket连接服务器
, ^- n! Q5 k" g0 D) L! I 7 D! Y* M, }- T
4)        填写订阅主题at_pub_topic并点击订阅,填写发布主题at_sub_topic和消息内容并点击发送# C( w# z* |1 |: w5 a
图9. EMQX控制台订阅和发布主题
( }, a5 \& C) Z; T, Z6 K" u- b
3 \) w* R: b6 @7 U+ p5 ]( |5)        在订阅消息列表查看开发板MQTT客户端发布的消息内容,发布消息列表也能看到服务器所发送的内容
; k+ {$ w4 G0 F% `( k% V* u  n图10. EMQX控制台查看消息& u( R( J( w0 b. d
- W* I3 i: y5 |
6)        通过USART1串口打印查看EMQX服务器发布的消息内容1 i  u* C& s1 w2 @8 p& X3 z
图11.串口打印查看消息2 U( Q. \0 p3 c3 C% b6 h0 j

5 m# U; C3 O+ ]0 i& C! E2 Q) B3 F1 }+ q( z

$ e! d8 ~) _& [4 w* F. 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-8-24 09:29 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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