AT32 EMAC MQTT Client

AN0058

应用笔记

AT32 EMAC MQTT Client

前言

随着物联网的发展,各式各样的装置都必须具备连网的能力,单芯片也不例外,为此我们以雅特力的AT32F407/AT32F437系列,演示了一系列的范例,以期用户能基于这些范例,使用雅特力的开发板发展出自己所需要的功能。

支持型号列表:

支持型号

具备EMAC的型号

目录

1                   概述... 5

1.1        硬件资源... 5

1.2        软件资源... 5

2                   AT32 MQTT client程序配置.. 6

2.1        管脚配置... 6

2.2        LwIP配置... 6

2.3        MQTT client project设置... 6

2.4        MQTT server搭建... 7

2.5        软件流程... 9

2.6        测试结果... 9

3                   版本历史.. 12

表目录

表1. 管脚配置... 6

表2. 文档版本历史... 12

图目录

图1. 配置芯片的IP地址... 6

图2. 配置服务端的socket 6

图3. 下载EMQX. 7

图4. 启动EMQX. 7

图5. 配置上位机的IP地址、子网掩码及网关... 8

图6. 浏览器登录EMQX控制台... 8

图7. 初始化MQTT客户端... 9

图8. EMQX控制台Websocket连接服务器... 10

图9. EMQX控制台订阅和发布主题... 10

图10. EMQX控制台查看消息... 11

图11.串口打印查看消息... 11

  1. 概述

MQTTMessage Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的轻量级协议,该协议构建于TCP/IP协议之上,MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

本使用指南会介绍BSP里,MQTT客户端具体的使用方法。

    1. 硬件资源
  1. DM9162 以太网模块
  2. AT-START-F407 V1.1 实验版
  3. 以太网线
  4. 串口打印工具
    1. 软件资源
  1. mqtt_client, MQTT client源程序,运行MQTT客户端程序,源码位于AT32Fxx_Firmware_Library_V2.x.x\project\at_start_fxx\examples\mqtt_client

注:所有project都是基于keil 5而建立,若用户需要在其他编译环境上使用,请参考

AT32xxx_Firmware_Library_V2.x.x\project\at_start_xxx\templates中各种编译环境(例如IAR6/7,keil 4/5)进行简单修改即可。

  1. AT3 MQTT client程序配置
    1. 管脚配置

1. 管脚配置

EMAC信号

管脚

EMAC_MDC

PC1

EMAC_MDIO

PA2

EMAC_RMII_REF_CLK

PA1

EMAC_RMII_CRS_DV

PD8

EMAC_RMII_RXD0

PD9

EMAC_RMII_RXD1

PD10

EMAC_RMII_TX_EN

PB11

EMAC_RMII_TXD0

PB12

EMAC_RMII_TXD1

PB13

    1. LwIP配置

硬件资源只提供从PHY到MAC的信号处理,若要进行开发,则需要实作TCP/IP协议栈,在本应用中使用LwIP协议栈,该协议栈主要关注的是怎样减少减少内存的使用和程序代码的大小,这样就可以让LwIP适用于资源有限的小型平台例如嵌入式系统,更详细的内容可以访问官方网站

由于整个协议栈已经整合到代码中,大部分的内容都无须修改,需要修改的内容主要包括下面两个部分:

  1. 根据自己的网段去设定IP地址及闸口地址,这两个全局变量宣告在netconf.c里面;
  2. mqtt_client.c中配置MQTT_SERVER_ADDRESSMQTT_SERVER_PORT,用以选择MQTT服务器地址和端口。

1. 配置芯片的IP地址

    1. MQTT client project设置

在初始化LwIP协议栈之后,就可以配置MQTT client的应用了,芯片作为客户端是发出请求的一方,所以必须要配置往哪里发送数据,也就是说要知道服务端的socket。所谓的socket就是IP地址加上端口,在代码中我们宣告了几个宏定义代表服务端的socket, 可以在mqtt_client.h中找到MQTT_SERVER_ADDRESSMQTT_SERVER_PORT这两个宏定义,用户可以根据网段跟应用修改这两个宏。

2. 配置服务端的socket

    1. MQTT server搭建

MQTT服务器的搭建我们通过EMQX平台来实现,其提供了公共的MQTT云服务和私有部署两种MQTT服务器搭建方式,其中云服务需要设备能够访问互联网,而私有部署则是将服务器部署在本地,无需访问互联网。本应用指南选择私有部署的方式来实现MQTT服务器的搭建,用户如需使用MQTT云服务请自行访问EMQX官方网站了解详细信息,搭建私有部署MQTT服务器的方式如下。

  1. 访问下载链接,下载并解压EMQX。

3. 下载EMQX

  1. 启动EMQX

进入解压后的路径emqx\bin,打开CMD命令行,执行emqx start,如下图。

4. 启动EMQX

  1. 配置上位机的IP地址、子网掩码及网关,IP地址与网关需要跟芯片设置在同一个网段下。

5. 配置上位机的IP地址、子网掩码及网关

  1. 浏览器登录EMQX控制台

服务器启动完成,在浏览器中输入本机IP地址192.168.81.1:18083,进入控制台登录界面,输入用户名admin和密码public,如下图。

6. 浏览器登录EMQX控制台

点击登录进入控制台,至此私有MQTT服务器搭建完成。

    1. 软件流程
  1. 在初始化EMAC和LwIP之后,呼叫mqtt_client_init(), 即可开启mqtt client功能;
  2. 在lwip_periodic_handle函数中将会每秒执行一次at32_mqtt_publish函数对预先定义的信息进行发布;
  3. 通过回调函数at32_mqtt_incoming_data_cb则能够将收到的订阅信息在串口USART1上打印。

7. 初始化MQTT客户端

    1. 测试结果
  1. 将开发板通过网线连接至路由器或网络接口
  2. 下载程序,并复位开发板
  3. 打开PC端的MQTT控制台,点击工具->Websocket,并连接

8. EMQX控制台Websocket连接服务器

  1. 填写订阅主题at_pub_topic并点击订阅,填写发布主题at_sub_topic和消息内容并点击发送

9. EMQX控制台订阅和发布主题

  1. 在订阅消息列表查看开发板MQTT客户端发布的消息内容,发布消息列表也能看到服务器所发送的内容

10. EMQX控制台查看消息

  1. 通过USART1串口打印查看EMQX服务器发布的消息内容

11.串口打印查看消息

  1. 版本历史

2. 文档版本历史

日期

版本

变更

2022.04.13

2.0.0

最初版本

2023.06.19

2.0.1

文档格式修订

  • 14
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值