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

AT32 EMAC MQTT Client

  [复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 Ele_insect 于 2022-6-30 10:31 编辑
( ^2 Z6 g- f( J  x- M
7 }2 H( Z1 E7 g) B: ?2 C随着物联网的发展,各式各样的装置都必须具备连网的能力,单芯片也不例外,为此我们以雅特力的AT32F407/AT32F437系列,演示了一系列的范例,以期用户能基于这些范例,使用雅特力的开发板发展出自己所需要的功能。
4 R1 z9 k- J! x3 Z& d# @
8 G/ w. Y) Z+ S- H& F2 @. mpdf文件可以下载附件阅读5 o) X. @! _1 R4 S/ ^

2 A6 j( R8 v  q! D1 m( L
) X. t4 ]  a2 A# T% ~3 S8 Y! k支持型号:( a4 x* q8 r( J  m
AT32F407xx
9 c0 W9 `- |2 S2 o9 `! p, v0 zAT32F437xx" s3 w; _/ O* g# b! B
4 E( u* @  E9 q" m" o
, e- i' ?9 s8 x7 E4 Z
1        概述: C* d; M. w2 M! z6 _1 w4 E
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的轻量级协议,该协议构建于TCP/IP协议之上,MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。) ]" V; O( n9 H
本使用指南会介绍BSP里,MQTT客户端具体的使用方法。! d& W' Z! f; o
1.1        硬件资源6 K; r  J+ Y/ y" k$ X' T( u
1.        DM9162 以太网模块
+ z; X$ s  g6 L! n1 {1 F0 W) H' _2.        AT-START-F407 V1.1 实验版
/ T2 n. E/ [  m3.        以太网线
7 ^. D# j6 B+ w4.        串口打印工具
6 u% U" b8 _8 E3 K0 J% `1.2        软件资源4 n  B3 N( S' F( D: W: G9 w" Q
mqtt_client, MQTT client源程序,运行MQTT客户端程序,源码位于AT32Fxx_Firmware_Library_v2.x.x\project\at_start_fxx\examples\mqtt_client; [" G; t5 w4 ~0 O2 G' A
注:所有project都是基于keil 5而建立,若用户需要在其他编译环境上使用,请参考
; C: [) d. ]. @; Z6 HAT32xxx_Firmware_Library_V2.x.x\project\at_start_xxx\templates中各种编译环境(例如IAR6/7,keil 4/5)进行简单修改即可。$ s4 {% K2 q. m7 Y
2        AT32 MQTT client程序配置
) R" ]5 }3 G+ {8 @( \1 k2.1        管脚配置# V% L3 x: o  i- ~2 X; K" d$ i
表1. 管脚配置8 g' W- W) H& [

" J# t2 v4 _5 W; X& x2.2        LwIP配置0 A4 `2 B: T# `0 u3 `
硬件资源只提供从PHY到MAC的信号处理,若要进行开发,则需要实作TCP/IP协议栈,在本应用中使用LwIP协议栈,该协议栈主要关注的是怎样减少减少内存的使用和程序代码的大小,这样就可以让LwIP适用于资源有限的小型平台例如嵌入式系统,更详细的内容可以访问官方网站。, O8 }! ~4 _5 W# \) D9 D
由于整个协议栈已经整合到代码中,大部分的内容都无须修改,需要修改的内容主要包括下面两个部分:; Q9 j1 T! E+ F' H
1.        根据自己的网段去设定IP地址及闸口地址,这两个全局变量宣告在netconf.c里面;
$ X8 i7 l' j) v; N2.        在mqtt_client.c中配置MQTT_SERVER_ADDRESS和MQTT_SERVER_PORT,用以选择MQTT服务器地址和端口。
. S# K8 J: O5 r图1. 配置芯片的IP地址" T- k5 ^% ]  p7 x/ R
: @) s2 H; T$ Z; M+ `- o
2.3        MQTT client project设置, ?5 t0 z" V& |, p! j
在初始化LwIP协议栈之后,就可以配置MQTT client的应用了,芯片作为客户端是发出请求的一方,所以必须要配置往哪里发送数据,也就是说要知道服务端的socket。所谓的socket就是IP地址加上端口,在代码中我们宣告了几个宏定义代表服务端的socket, 可以在mqtt_client.h中找到MQTT_SERVER_ADDRESS和MQTT_SERVER_PORT这两个宏定义,用户可以根据网段跟应用修改这两个宏。" C) l$ A% P# Z  F( l0 X
图2. 配置服务端的socket. h' T- F5 A! K7 l  f
6 k; {2 K5 F2 B3 R- U  k
2.4        MQTT server搭建4 k. j$ s# l3 }2 }7 k+ T
MQTT服务器的搭建我们通过EMQX平台来实现,其提供了公共的MQTT云服务和私有部署两种MQTT服务器搭建方式,其中云服务需要设备能够访问互联网,而私有部署则是将服务器部署在本地,无需访问互联网。本应用指南选择私有部署的方式来实现MQTT服务器的搭建,用户如需使用MQTT云服务请自行访问EMQX官方网站了解详细信息,搭建私有部署MQTT服务器的方式如下。. Y' [# W) a! J$ |) b
1.        访问下载链接,下载并解压EMQX。: n, {+ r7 n) r6 ?3 h
图3. 下载EMQX
* G4 ]" c- z5 E& m5 g) b; y
- a5 g/ O& \' h6 ~! [9 o" r- s( q2 v0 L0 B) o  Q( X
2.        启动EMQX$ e  a/ ^; ]2 s0 b3 W
进入解压后的路径emqx\bin,打开CMD命令行,执行emqx start,如下图。1 i: r- v( t  s: ?  l$ p$ T
图4. 启动EMQX6 h1 d  y9 K( `+ @0 U: O1 F
# v/ `8 p; V" A. ?9 F
3.        配置上位机的IP地址、子网掩码及网关,IP地址与网关需要跟芯片设置在同一个网段下。4 l9 f  z$ i# z3 a
图5. 配置上位机的IP地址、子网掩码及网关
3 V) ?4 K& u/ O; P5 R
  u3 T& r4 d, y: x# e; {4.        浏览器登录EMQX控制台+ l+ s5 A5 ]* L1 x% _5 A
服务器启动完成,在浏览器中输入本机IP地址192.168.81.1:18083,进入控制台登录界面,输入用户名admin和密码public,如下图。
3 P0 F( ^& _; e$ e* S* ?图6. 浏览器登录EMQX控制台- ^6 j2 n; g7 p; ?* y( N; I
" A+ h% B+ Z6 h1 W; ~
点击登录进入控制台,至此私有MQTT服务器搭建完成。
3 x4 k, v! e( Q
$ h" s* ~4 M) I* f1 x# ^. M0 [- W2.5        软件流程
7 d- d+ t' j- \  Z% r, a, T1.        在初始化EMAC和LwIP之后,呼叫mqtt_client_init(), 即可开启mqtt client功能;
& E3 P4 I% E  P# E/ ?3 X: n  u2.        在lwip_periodic_handle函数中将会每秒执行一次at32_mqtt_publish函数对预先定义的信息进行发布;1 L6 M+ J8 V$ |8 y' N- E& D7 Z
3.        通过回调函数at32_mqtt_incoming_data_cb则能够将收到的订阅信息在串口USART1上打印。0 l: D0 }( K- Z7 F
图7. 初始化MQTT客户端( G: T( {' |8 r2 z0 y

7 @0 `# N* J0 Q2.6        测试结果3 D% L+ O0 q' K4 ^  o! c
1)        将开发板通过网线连接至路由器或网络接口
0 j6 Y" |6 n/ M* ^6 f- y# v# K& `0 D: B2)        下载程序,并复位开发板
  k  [+ Q: f! n' }# u- g+ I- W7 p3)        打开PC端的MQTT控制台,点击工具->Websocket,并连接9 R5 @, x  m; c+ O! h5 ^3 x0 S' e+ {
图8. EMQX控制台Websocket连接服务器* x1 Y, `/ \) P$ ~
; F7 a1 H6 |9 N' h
4)        填写订阅主题at_pub_topic并点击订阅,填写发布主题at_sub_topic和消息内容并点击发送# p9 ]4 F* [$ `* x
图9. EMQX控制台订阅和发布主题* O( ^7 L9 x3 z' N& }, [# q

, H" ]# b& `5 l5)        在订阅消息列表查看开发板MQTT客户端发布的消息内容,发布消息列表也能看到服务器所发送的内容  z( Z* i9 Z4 b
图10. EMQX控制台查看消息: D; @9 ~8 M: E( v/ g
& m1 t9 _# B) Y9 C4 g) z
6)        通过USART1串口打印查看EMQX服务器发布的消息内容
3 V3 Y0 `# f: {图11.串口打印查看消息
$ s9 I1 I8 Z: \ 7 ]" }. ]4 d  y6 }

, K2 @' V2 f+ Q& f  v4 e
. ~' ^# L' w( ~% w

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-7-18 09:25 , Processed in 0.109375 second(s), 26 queries , Gzip On.

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

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

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