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

AT32 EMAC MQTT Client

  [复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 Ele_insect 于 2022-6-30 10:31 编辑
  P9 e$ m5 h$ x5 O
: I1 I! Q. T  L) J7 t随着物联网的发展,各式各样的装置都必须具备连网的能力,单芯片也不例外,为此我们以雅特力的AT32F407/AT32F437系列,演示了一系列的范例,以期用户能基于这些范例,使用雅特力的开发板发展出自己所需要的功能。
4 b8 ]3 q1 J# \
0 W$ d; |4 J# `' {/ wpdf文件可以下载附件阅读: _2 h6 U4 z9 N) W; M1 m
. Q* H5 C( R& `- C

4 P! f/ o$ [, f/ S% }支持型号:5 Y' T# i# @0 G6 A4 e' s! M: }
AT32F407xx
; I) F! U# q/ Z2 ~6 _# }8 e2 iAT32F437xx+ Z( m$ a+ A5 i/ Y
2 x3 [! l, N2 ?" |1 k; M- Y9 R

$ {. s! R# b- W$ R, \8 |5 ]! A) h1        概述
! K, J4 R4 n8 T- T! a! EMQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的轻量级协议,该协议构建于TCP/IP协议之上,MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。1 N6 h& P6 `- K( X# ~- N
本使用指南会介绍BSP里,MQTT客户端具体的使用方法。+ J. G9 N1 h8 F
1.1        硬件资源& X' D/ M) k5 L& Q7 C( ^& E
1.        DM9162 以太网模块
- ?0 K8 t1 K6 l2.        AT-START-F407 V1.1 实验版
* Z: G& |5 g. J  u9 T7 q3.        以太网线" A4 ~$ h7 `' j1 t7 U' |% K
4.        串口打印工具
8 k5 H2 v5 b5 G7 n. |1.2        软件资源
7 ~( E+ u0 u1 P6 C. Q" Emqtt_client, MQTT client源程序,运行MQTT客户端程序,源码位于AT32Fxx_Firmware_Library_v2.x.x\project\at_start_fxx\examples\mqtt_client5 W8 }7 Q: @  m$ j
注:所有project都是基于keil 5而建立,若用户需要在其他编译环境上使用,请参考1 X' X/ O1 X) D' \8 f8 N& @
AT32xxx_Firmware_Library_V2.x.x\project\at_start_xxx\templates中各种编译环境(例如IAR6/7,keil 4/5)进行简单修改即可。
9 x' d' f9 Q+ A" w/ E+ F: a& Z2        AT32 MQTT client程序配置
/ w- T' y- d% D, u+ \; @2.1        管脚配置
6 r0 N& j* X6 R& ]9 {" j. c表1. 管脚配置
0 k& s" h1 `( [9 _2 Q* v7 H0 \$ D & M$ {2 _8 B/ C! D1 @
2.2        LwIP配置: C# m0 a9 E$ t7 V8 G( w1 T
硬件资源只提供从PHY到MAC的信号处理,若要进行开发,则需要实作TCP/IP协议栈,在本应用中使用LwIP协议栈,该协议栈主要关注的是怎样减少减少内存的使用和程序代码的大小,这样就可以让LwIP适用于资源有限的小型平台例如嵌入式系统,更详细的内容可以访问官方网站。9 d+ ]" R- g% t( g' j2 ]7 {- M
由于整个协议栈已经整合到代码中,大部分的内容都无须修改,需要修改的内容主要包括下面两个部分:
3 ^( J5 i- M- a" j1.        根据自己的网段去设定IP地址及闸口地址,这两个全局变量宣告在netconf.c里面;
& `; F- Z4 M+ V6 R2.        在mqtt_client.c中配置MQTT_SERVER_ADDRESS和MQTT_SERVER_PORT,用以选择MQTT服务器地址和端口。2 `8 L# j" Q# f7 b% a
图1. 配置芯片的IP地址
# y9 ^/ E" S* E- x$ S( j
* w' K8 i* T5 @2 ~8 G" D2.3        MQTT client project设置
- A4 X0 O7 R. b7 G" p4 m9 b* S在初始化LwIP协议栈之后,就可以配置MQTT client的应用了,芯片作为客户端是发出请求的一方,所以必须要配置往哪里发送数据,也就是说要知道服务端的socket。所谓的socket就是IP地址加上端口,在代码中我们宣告了几个宏定义代表服务端的socket, 可以在mqtt_client.h中找到MQTT_SERVER_ADDRESS和MQTT_SERVER_PORT这两个宏定义,用户可以根据网段跟应用修改这两个宏。4 z' v8 o. v, J2 N8 h
图2. 配置服务端的socket
2 t1 N* Q0 \9 ^& C$ v5 e( u6 b6 ~
  Y5 S  Z) g3 \- R' d2 z* {' D+ O2.4        MQTT server搭建
4 ^) w6 o; ^3 _MQTT服务器的搭建我们通过EMQX平台来实现,其提供了公共的MQTT云服务和私有部署两种MQTT服务器搭建方式,其中云服务需要设备能够访问互联网,而私有部署则是将服务器部署在本地,无需访问互联网。本应用指南选择私有部署的方式来实现MQTT服务器的搭建,用户如需使用MQTT云服务请自行访问EMQX官方网站了解详细信息,搭建私有部署MQTT服务器的方式如下。8 I( z$ R/ ]; C
1.        访问下载链接,下载并解压EMQX。6 x. a( F: q2 O9 {( m4 J
图3. 下载EMQX7 \$ m6 _% i- V3 }2 m' y2 k

& S5 }6 ~7 m$ B$ u' f; j  I9 ^( a$ _/ @" V' \: e/ _' N
2.        启动EMQX3 |6 t' c) J2 O7 E; G5 l' i
进入解压后的路径emqx\bin,打开CMD命令行,执行emqx start,如下图。4 p2 G. [6 u8 |% \6 w4 i) I6 {
图4. 启动EMQX
% ?: V% ]( ]! F1 D9 B8 E ! J: A& L( T/ S9 c  p- Z( r& s) ?
3.        配置上位机的IP地址、子网掩码及网关,IP地址与网关需要跟芯片设置在同一个网段下。/ J. O$ [4 I9 H' n7 d+ R/ u
图5. 配置上位机的IP地址、子网掩码及网关% i) }# {" g7 N. D. M/ ?

0 A) B! f- ]6 x2 Z4.        浏览器登录EMQX控制台) w% S, t) W0 K& R, L
服务器启动完成,在浏览器中输入本机IP地址192.168.81.1:18083,进入控制台登录界面,输入用户名admin和密码public,如下图。
5 j+ W1 R" U1 p2 @) R" f6 `6 j9 l图6. 浏览器登录EMQX控制台6 `  b1 n& C1 p" p

( v3 Z: ?2 `: E2 M) a% z1 e点击登录进入控制台,至此私有MQTT服务器搭建完成。4 h6 I) M5 ^4 E, x
( V  p! }+ l% i! v) @7 a* ^! P6 b
2.5        软件流程- N$ |$ T" i, h
1.        在初始化EMAC和LwIP之后,呼叫mqtt_client_init(), 即可开启mqtt client功能;& A- c) N6 x( F
2.        在lwip_periodic_handle函数中将会每秒执行一次at32_mqtt_publish函数对预先定义的信息进行发布;
  W! F4 _: J2 Q$ ~- a/ H& h" P3.        通过回调函数at32_mqtt_incoming_data_cb则能够将收到的订阅信息在串口USART1上打印。7 [7 P5 i$ y/ c4 X
图7. 初始化MQTT客户端5 D. j  A3 K* ?4 G. `6 l/ X& N5 K" D

+ a0 E' d: L& T1 `, s8 r# w2 P2.6        测试结果
1 G* V5 U8 ]* ?5 J5 H# H1)        将开发板通过网线连接至路由器或网络接口2 P) X( @; \# i, q( ~
2)        下载程序,并复位开发板1 G- d) [/ W" o; g  d4 _" Q
3)        打开PC端的MQTT控制台,点击工具->Websocket,并连接5 j9 y4 X0 n0 |; N( j
图8. EMQX控制台Websocket连接服务器
3 ?. |: [$ L  @7 |
, B4 ]8 R. d" T$ v0 l- y4)        填写订阅主题at_pub_topic并点击订阅,填写发布主题at_sub_topic和消息内容并点击发送
  w% c2 \6 \* [图9. EMQX控制台订阅和发布主题# S% \# j) `  W/ Z: ?, L2 {

- C) ?0 M7 X* }7 T5)        在订阅消息列表查看开发板MQTT客户端发布的消息内容,发布消息列表也能看到服务器所发送的内容
7 a( Q# z: H3 [( B. t图10. EMQX控制台查看消息
7 o+ k7 @# E: O6 a5 L, { * Z1 ?- V5 e; u3 l
6)        通过USART1串口打印查看EMQX服务器发布的消息内容0 o, l9 g* I0 i% \6 n  }
图11.串口打印查看消息8 E' W4 ]% s( G/ N& ^

( u! F- R" L! H  o9 H  X: b* S
: S5 [) p& h, V" I- e: V2 j& g. @2 f( Z0 F! g2 n0 f/ G! m

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-16 05:43 , Processed in 0.078125 second(s), 26 queries , Gzip On.

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

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

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