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

AT32 EMAC MQTT Client

  [复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 Ele_insect 于 2022-6-30 10:31 编辑
9 X* _! X: A9 Z5 }$ k( u# }9 M- O" ^! r! v# A- V
随着物联网的发展,各式各样的装置都必须具备连网的能力,单芯片也不例外,为此我们以雅特力的AT32F407/AT32F437系列,演示了一系列的范例,以期用户能基于这些范例,使用雅特力的开发板发展出自己所需要的功能。
( ~0 f0 K) x0 c/ h# T
; ?- G$ C  e+ G) T  hpdf文件可以下载附件阅读- G' c. b) ~( E$ t' j' }% N
! A9 K" }0 ^6 f6 `
! O* S& B5 O( ?# N. ?; Z2 M
支持型号:  v+ J$ h/ _1 [$ L2 _1 z3 ]8 m: G
AT32F407xx+ h% x. o4 ?# x% u/ ]8 x
AT32F437xx
) U# [6 |$ C" a1 }8 w9 w$ r0 p' I6 \/ O
3 H* [6 B- f) `
1        概述8 N! \# g) u8 A' f
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的轻量级协议,该协议构建于TCP/IP协议之上,MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
& ~0 `% v% |- g' B" w本使用指南会介绍BSP里,MQTT客户端具体的使用方法。
2 Z% H" H9 @7 D) Y' F, @  V1.1        硬件资源
9 G5 f* T4 R4 S2 m( U  R: t1.        DM9162 以太网模块3 H1 w& m/ ^# r+ P6 X4 ~2 B
2.        AT-START-F407 V1.1 实验版2 Y; ~3 ^0 L$ b+ M: J% u1 i
3.        以太网线5 W1 Q& M. _8 }& S- b
4.        串口打印工具+ z5 v, H$ B1 H: @
1.2        软件资源
9 G+ d- j, n! M! w, y& c+ Z2 hmqtt_client, MQTT client源程序,运行MQTT客户端程序,源码位于AT32Fxx_Firmware_Library_v2.x.x\project\at_start_fxx\examples\mqtt_client  E1 N+ s  g# K+ Y) h! y) {
注:所有project都是基于keil 5而建立,若用户需要在其他编译环境上使用,请参考! Z9 M" Q7 {: s' G6 \- A
AT32xxx_Firmware_Library_V2.x.x\project\at_start_xxx\templates中各种编译环境(例如IAR6/7,keil 4/5)进行简单修改即可。5 t% u$ O. O" u0 [+ @& c
2        AT32 MQTT client程序配置
1 k. {( b8 i* B' |( b2.1        管脚配置
9 e' ~4 H3 x0 d4 o  O& J, }+ q表1. 管脚配置9 }6 e, h1 c+ K3 H& E

. Q1 W: ^' t: C$ ~* t  _; _2.2        LwIP配置
. g0 @8 w( d: J硬件资源只提供从PHY到MAC的信号处理,若要进行开发,则需要实作TCP/IP协议栈,在本应用中使用LwIP协议栈,该协议栈主要关注的是怎样减少减少内存的使用和程序代码的大小,这样就可以让LwIP适用于资源有限的小型平台例如嵌入式系统,更详细的内容可以访问官方网站。
# G( x8 s& E! U1 ^* X由于整个协议栈已经整合到代码中,大部分的内容都无须修改,需要修改的内容主要包括下面两个部分:: J) U5 Y7 U9 p. L5 h4 t
1.        根据自己的网段去设定IP地址及闸口地址,这两个全局变量宣告在netconf.c里面;
, c( x' `0 w1 J5 J  k4 Y! W9 J8 \; @2.        在mqtt_client.c中配置MQTT_SERVER_ADDRESS和MQTT_SERVER_PORT,用以选择MQTT服务器地址和端口。8 J; M, e4 Z$ `. m
图1. 配置芯片的IP地址2 @3 l8 M) S/ F' G  ]. _2 f' z
  t) ~) [% t( z, n3 x# p0 }" c. ~
2.3        MQTT client project设置3 g3 J; U* c! W3 v% a
在初始化LwIP协议栈之后,就可以配置MQTT client的应用了,芯片作为客户端是发出请求的一方,所以必须要配置往哪里发送数据,也就是说要知道服务端的socket。所谓的socket就是IP地址加上端口,在代码中我们宣告了几个宏定义代表服务端的socket, 可以在mqtt_client.h中找到MQTT_SERVER_ADDRESS和MQTT_SERVER_PORT这两个宏定义,用户可以根据网段跟应用修改这两个宏。
! L' o& G: ^2 d# {7 E7 ^图2. 配置服务端的socket3 y/ M0 z! n+ U# e: O5 Q* b, u

& v/ L* ?1 _5 K# M0 p9 |# t0 N6 f2.4        MQTT server搭建
, @; X3 Y9 O  EMQTT服务器的搭建我们通过EMQX平台来实现,其提供了公共的MQTT云服务和私有部署两种MQTT服务器搭建方式,其中云服务需要设备能够访问互联网,而私有部署则是将服务器部署在本地,无需访问互联网。本应用指南选择私有部署的方式来实现MQTT服务器的搭建,用户如需使用MQTT云服务请自行访问EMQX官方网站了解详细信息,搭建私有部署MQTT服务器的方式如下。2 I3 f* X5 T4 M; h( x& D  a1 x5 T
1.        访问下载链接,下载并解压EMQX。3 F' z  t: k2 H* I  o" L' ]  J
图3. 下载EMQX
7 [5 g+ J9 \* H" O+ q, `. v8 [ ; d0 \. \% r9 l' p
' h2 l; M0 W" h
2.        启动EMQX
; t7 g. W0 a& y进入解压后的路径emqx\bin,打开CMD命令行,执行emqx start,如下图。
* S8 l, C! o% b; S6 d图4. 启动EMQX
8 ^  F" K8 q. R+ _5 L. Z 1 E/ l! q9 o$ y* [" O! P
3.        配置上位机的IP地址、子网掩码及网关,IP地址与网关需要跟芯片设置在同一个网段下。
( Y3 w8 F" @9 U" S图5. 配置上位机的IP地址、子网掩码及网关+ ^& X5 Z* J. Z( j5 ?

# h7 ~3 J7 z& ?; \, f5 ~7 S4.        浏览器登录EMQX控制台
( o1 ~! l' Q$ B服务器启动完成,在浏览器中输入本机IP地址192.168.81.1:18083,进入控制台登录界面,输入用户名admin和密码public,如下图。' d! z  T  r9 Y! d' d+ n# ^
图6. 浏览器登录EMQX控制台4 x; i! w  b4 k( b

  E$ Q- s% c) q$ ~9 l, G点击登录进入控制台,至此私有MQTT服务器搭建完成。2 P8 l' _& v: h- m

: F1 u6 B  S" o9 G2.5        软件流程
( L; l/ f$ j8 i# K9 _6 z1.        在初始化EMAC和LwIP之后,呼叫mqtt_client_init(), 即可开启mqtt client功能;
( c; I. l0 H  d$ e9 c2.        在lwip_periodic_handle函数中将会每秒执行一次at32_mqtt_publish函数对预先定义的信息进行发布;
8 z3 v% u4 E0 ?% L- f! h3.        通过回调函数at32_mqtt_incoming_data_cb则能够将收到的订阅信息在串口USART1上打印。7 m/ R' g- c$ M% A4 S' j
图7. 初始化MQTT客户端
& I8 d! t2 N4 t  Q; Q% t- C: T6 E : j* [1 t$ X) v7 h4 z6 e4 u
2.6        测试结果
: }+ o1 q7 o: k8 v1 |! M! P1)        将开发板通过网线连接至路由器或网络接口
1 t3 ?& l( B; L2)        下载程序,并复位开发板
$ J6 b( O8 p# f4 c3 p3)        打开PC端的MQTT控制台,点击工具->Websocket,并连接/ a5 O) Z# O7 c+ I& H3 {
图8. EMQX控制台Websocket连接服务器
4 Y, `! x& O6 v# e# ]/ b. D/ S! m9 W
1 K" c$ @6 H- a- h' W4)        填写订阅主题at_pub_topic并点击订阅,填写发布主题at_sub_topic和消息内容并点击发送! l5 A) S8 u8 H0 h' [3 M/ T6 k  o
图9. EMQX控制台订阅和发布主题
( ]: D9 D( _( o; A8 [/ X7 { 5 X" j3 D2 {' y  _
5)        在订阅消息列表查看开发板MQTT客户端发布的消息内容,发布消息列表也能看到服务器所发送的内容) o0 `+ E+ Q; T4 b8 s/ C
图10. EMQX控制台查看消息
, S, r: U0 K; f. E7 e3 z : l, G. }/ x( a4 J
6)        通过USART1串口打印查看EMQX服务器发布的消息内容
: {, m/ e" t! M& L) F" p0 W图11.串口打印查看消息
: I4 A$ N7 e  H# ^) w$ E' d 2 W* X* v- s) f3 ?8 Y
) i: u, o  `, z. C. a4 E+ _

+ S: L' |: }* E8 `' ?& P

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-12 06:31 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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