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

AT32 EMAC MQTT Client

  [复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 Ele_insect 于 2022-6-30 10:31 编辑 2 B8 w, _2 h. `, O) F

. g) a' u9 a; _9 r3 b4 B随着物联网的发展,各式各样的装置都必须具备连网的能力,单芯片也不例外,为此我们以雅特力的AT32F407/AT32F437系列,演示了一系列的范例,以期用户能基于这些范例,使用雅特力的开发板发展出自己所需要的功能。
2 M" b6 u5 R- s0 [) s8 f
& I. l9 e+ l6 Y( N' I) lpdf文件可以下载附件阅读: ?6 T. U" @- Y( i3 K4 D
, S: R) L7 i0 U: I5 L
; t  }6 h7 F7 y2 t& i# Q
支持型号:+ M, l1 N! }4 c- S' _
AT32F407xx
: L. m. \6 f4 |3 L4 ?+ GAT32F437xx$ F) z: L5 _$ `6 E
6 d* U, H0 e9 x2 B! e

! ?* g* v0 {% }1        概述9 \* v7 s) O4 k  S6 K
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的轻量级协议,该协议构建于TCP/IP协议之上,MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
: q  Q7 Z, N6 c5 @9 M# u本使用指南会介绍BSP里,MQTT客户端具体的使用方法。
% Z$ [$ Z( {0 O: {1.1        硬件资源: p' X: I8 T' ~' B5 `+ A1 N
1.        DM9162 以太网模块" b7 b, X& |; J6 D$ I
2.        AT-START-F407 V1.1 实验版
; T) _4 m- k% t) X% F, Z" i3.        以太网线5 h1 r: P7 B( w) b. D
4.        串口打印工具; D2 o- {# X6 ^( d4 {, R1 n0 o
1.2        软件资源/ L# m9 u- v1 }, K+ n
mqtt_client, MQTT client源程序,运行MQTT客户端程序,源码位于AT32Fxx_Firmware_Library_v2.x.x\project\at_start_fxx\examples\mqtt_client" f: K4 c( F: [: ~
注:所有project都是基于keil 5而建立,若用户需要在其他编译环境上使用,请参考
# g- u% m2 Z- Y4 F# |( g' J' dAT32xxx_Firmware_Library_V2.x.x\project\at_start_xxx\templates中各种编译环境(例如IAR6/7,keil 4/5)进行简单修改即可。+ m# M4 `( [5 o
2        AT32 MQTT client程序配置
5 i& ?& F* `& D) c2.1        管脚配置
5 ~" ?7 I" g9 h3 f表1. 管脚配置
& {# A6 P& F+ L6 U$ R0 ~/ b+ S 0 n1 ]: V0 r3 C* h5 v' m
2.2        LwIP配置# `. Q# Z/ O: @2 r+ ^/ Q" n
硬件资源只提供从PHY到MAC的信号处理,若要进行开发,则需要实作TCP/IP协议栈,在本应用中使用LwIP协议栈,该协议栈主要关注的是怎样减少减少内存的使用和程序代码的大小,这样就可以让LwIP适用于资源有限的小型平台例如嵌入式系统,更详细的内容可以访问官方网站。) U9 E! ^1 g* N* u6 Y# W
由于整个协议栈已经整合到代码中,大部分的内容都无须修改,需要修改的内容主要包括下面两个部分:
- p" {' g* D  w  J$ }/ b1.        根据自己的网段去设定IP地址及闸口地址,这两个全局变量宣告在netconf.c里面;: d+ u. g2 k# C7 Q8 h
2.        在mqtt_client.c中配置MQTT_SERVER_ADDRESS和MQTT_SERVER_PORT,用以选择MQTT服务器地址和端口。
6 m. Y3 Y+ K+ U% a+ u图1. 配置芯片的IP地址, j) k' u! F% P% ]' w- f. w

) r6 W7 o5 ^6 s/ b2 ^5 C2.3        MQTT client project设置
2 T5 F! A+ m" _! d在初始化LwIP协议栈之后,就可以配置MQTT client的应用了,芯片作为客户端是发出请求的一方,所以必须要配置往哪里发送数据,也就是说要知道服务端的socket。所谓的socket就是IP地址加上端口,在代码中我们宣告了几个宏定义代表服务端的socket, 可以在mqtt_client.h中找到MQTT_SERVER_ADDRESS和MQTT_SERVER_PORT这两个宏定义,用户可以根据网段跟应用修改这两个宏。
3 _: v( {5 X- a# Q. H图2. 配置服务端的socket. N+ x6 ^( ^; k! ]8 m

  S' K" A- D! d$ _2.4        MQTT server搭建
$ e% ?1 W! s0 f" X1 ~/ `MQTT服务器的搭建我们通过EMQX平台来实现,其提供了公共的MQTT云服务和私有部署两种MQTT服务器搭建方式,其中云服务需要设备能够访问互联网,而私有部署则是将服务器部署在本地,无需访问互联网。本应用指南选择私有部署的方式来实现MQTT服务器的搭建,用户如需使用MQTT云服务请自行访问EMQX官方网站了解详细信息,搭建私有部署MQTT服务器的方式如下。1 ~9 x( Y9 k; U; w- a" J% [
1.        访问下载链接,下载并解压EMQX。
7 s( T4 v+ g8 ]4 U图3. 下载EMQX5 X. C  Q. [) j
* k+ I5 `2 d0 s8 ^7 _) N
& s5 d6 y/ c5 h7 A0 x& F# I* n- v3 E
2.        启动EMQX( I6 G6 S  P; j7 @: W% L! U) x/ b
进入解压后的路径emqx\bin,打开CMD命令行,执行emqx start,如下图。
3 r+ P9 M! S9 s2 N. k' f5 \图4. 启动EMQX: H( X8 q" w4 Z& B

; C& r& t+ E& U* @% ^, p3.        配置上位机的IP地址、子网掩码及网关,IP地址与网关需要跟芯片设置在同一个网段下。
- m. x! a! `: \: j! }+ Z图5. 配置上位机的IP地址、子网掩码及网关" g8 _' j0 T# W/ ?, ?, b0 x

! t5 b2 A1 c. U) n2 u* l( }4 q+ i4.        浏览器登录EMQX控制台
: P% D' k1 K8 @* H. L服务器启动完成,在浏览器中输入本机IP地址192.168.81.1:18083,进入控制台登录界面,输入用户名admin和密码public,如下图。
& H8 }% I$ z4 U0 c0 F! [7 r图6. 浏览器登录EMQX控制台3 C: r- A/ K3 j& v# s
2 u: N) ]' |4 r2 d, o
点击登录进入控制台,至此私有MQTT服务器搭建完成。2 k1 J2 V; O4 b, E
' k/ B( k: j" E/ I" z$ E% ]/ y8 o
2.5        软件流程
5 o# M  A! o: S' M: Z7 M9 E1.        在初始化EMAC和LwIP之后,呼叫mqtt_client_init(), 即可开启mqtt client功能;
' {2 N1 D8 c9 @2.        在lwip_periodic_handle函数中将会每秒执行一次at32_mqtt_publish函数对预先定义的信息进行发布;( W: Y3 L9 Q  i( s. U5 V
3.        通过回调函数at32_mqtt_incoming_data_cb则能够将收到的订阅信息在串口USART1上打印。
. j, f+ ^' {' l2 P" Q+ w& X图7. 初始化MQTT客户端; m# A; A, m. ?9 ^  B% O

; `% O# B3 W% U$ Y1 g2.6        测试结果, {/ p1 M# N, t
1)        将开发板通过网线连接至路由器或网络接口
: n) N2 J& V7 t0 b6 l3 h% Y+ [% H2)        下载程序,并复位开发板) f1 K; s" Z3 {
3)        打开PC端的MQTT控制台,点击工具->Websocket,并连接# A$ `+ N2 [" B+ m
图8. EMQX控制台Websocket连接服务器
7 f6 o, F6 |( }4 H/ q
& I% S& }" S1 b5 q  N2 F4)        填写订阅主题at_pub_topic并点击订阅,填写发布主题at_sub_topic和消息内容并点击发送
& t! w( j) _8 x% {" I% L图9. EMQX控制台订阅和发布主题; @/ A) k- E6 k/ p# Q* d5 r

: }6 z: |, D# ?( }/ u, s5)        在订阅消息列表查看开发板MQTT客户端发布的消息内容,发布消息列表也能看到服务器所发送的内容3 \+ u6 n- q  K2 R" v/ \
图10. EMQX控制台查看消息
& x5 s# }2 x: {5 _1 V2 ^6 h ) x1 w: B( k( p- y+ C
6)        通过USART1串口打印查看EMQX服务器发布的消息内容
+ C/ z# m+ O) B7 M图11.串口打印查看消息& Q- Z2 d* c8 I0 z; _( D

0 S, S9 o. B3 T7 S5 |( j7 u! `, |6 Y3 n

# r) t, b5 r& [* E7 R

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-10 22:29 , Processed in 0.093750 second(s), 26 queries , Gzip On.

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

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

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