SWA2G422&485JK2G基础篇: STM32+W5500(以太网)实现MQTT通信控制,485/422透传通信

Posted yangfengwu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SWA2G422&485JK2G基础篇: STM32+W5500(以太网)实现MQTT通信控制,485/422透传通信相关的知识,希望对你有一定的参考价值。

 

 

 

说明

这节实现的功能:

  STM32+W5500实现MQTT通信控制,

  通过MQTT调试助手控制开发板两路继电器

  485/422接口输入的数据通过W5500(MQTT) 转发给MQTT调试助手

  MQTT调试助手发送的信息通过W5500(MQTT)转发到485/422接口输出

  细节功能:

  1.DHCP动态获取IP

  2.DNS域名解析

 

功能演示

1.注:根据自己的修改,默认连接我的服务器

技术图片

 

 

hex文件路径

 

技术图片

 

 

 

2,按照下面方式短接通信端口

 电脑串口 连接 STM32串口1  (注:单片机的串口1作为了Debug端口)

 422/485 连接 STM32串口3

 技术图片

 

 

 

 

3.连接网线(网线另一端连接可以上网的路由器或者交换机)

 

 

 

    技术图片

 

 

4.连接485/422通信模块(任选一种即可,下面说明两种接线方式)

  4.1: 485连接方式

 

    技术图片

 

 

  4.2: 422连接方式

   技术图片

 

5,打开串口调试助手,分别监控STM32串口1和485/422的数据

  5.1: 单片机串口1监听配置

    技术图片

 

 

    5.2: 485/422通信口串口配置

  技术图片

 

 

 

 

 

6,打开MQTT调试助手

    技术图片

 

 

  技术图片

 

 

    技术图片

 

 

    技术图片

 

    根据自己的修改,默认连接我的服务器

    技术图片

    

 

测试

1.下载好单片机程序以后看一下串口1打印的信息

复位下,单片机

技术图片

 

 

 

技术图片

 

 

 

 

2.根据设备订阅和发布的主题,设置MQTT调试助手订阅和发布的主题

技术图片

 

 

 

 

 

 

3.调试助手发送信息

技术图片

 

 

 

 

4. 485/422接口上传数据

技术图片

 

 

 

 

5. 控制开发板两路继电器

技术图片

 

协议规定:

上位机同时控制两路继电器协议:  "data":"switch":开关指令;  "bit":"1&2":第一路和第二路

询问两路继电器状态:  {"data":"switch","bit":"1&2","status":"-1"}

控制两路继电器吸合:  {"data":"switch","bit":"1&2","status":"1&1"}

控制两路继电器断开:  {"data":"switch","bit":"1&2","status":"0&0"}

控制第一路吸合,第二路断开:  {"data":"switch","bit":"1&2","status":"1&0"}

控制第一路断开,第二路吸合:  {"data":"switch","bit":"1&2","status":"0&1"}

下位机回复两路继电器状态:

第一路断开,第二路吸合:  {"data":"switch","bit":"1&2","status":"0&1"}

 

    

 

上位机控制一路继电器协议:  "bit":"1":第一路

询问第一路继电器状态:  {"data":"switch","bit":"1","status":"-1"}

询问第二路继电器状态:  {"data":"switch","bit":"2","status":"-1"}

控制第一路继电器吸合:  {"data":"switch","bit":"1","status":"1"}

控制第二路继电器断开:  {"data":"switch","bit":"2","status":"0"}

下位机回复两路继电器状态:

第一路断开  {"data":"switch","bit":"1","status":"0"}

第二路吸合  {"data":"switch","bit":"2","status":"1"}

 

 

6. 测试

控制两路继电器吸合

{"data":"switch","bit":"1&2","status":"1&1"}

技术图片

 

 

 

技术图片

 

 

 

控制两路继电器断开

{"data":"switch","bit":"1&2","status":"0&0"}

技术图片

 

 

 

技术图片

 

 

 

控制第一路吸合,第二路断开

{"data":"switch","bit":"1&2","status":"1&0"}

技术图片

 

 

技术图片

 

 

 

控制第一路断开,第二路吸合

{"data":"switch","bit":"1&2","status":"0&1"}

 技术图片

 

 技术图片

 

 

 

程序说明

1.STM32唯一码作为W5500的MAC地址

MAC地址的字符串形式作为 MQTT的ClientID

技术图片

 

 

 

 

2.网线状态检测,DHCP 和 DNS解析

技术图片

 

 

 

3.连接TCP(MQTT)

技术图片

 

 

 

技术图片

 

 

 

4.订阅主题

技术图片

 

 

 

5.接收处理消息

技术图片

 

 

 

提示

程序中打开了3个串口,为保证程序的执行效率,程序中使用了缓存处理

注:串口1作为日志输出口,为保证全部打印所有的运行日志,发送数据采用的环形队列

技术图片

 

 

 

 

关于缓存管理具体实现请参考:

技术图片

 

 

以上是关于SWA2G422&485JK2G基础篇: STM32+W5500(以太网)实现MQTT通信控制,485/422透传通信的主要内容,如果未能解决你的问题,请参考以下文章

SWA2G422&485JK2G基础篇: STM32+W5500(以太网)实现MQTT通信控制,485/422透传通信

SWA2G422&485JK2G基础篇: 手机APP通过APMACBind方式绑定W5500(以太网)设备,实现MQTT远程通信控制

04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

485和232的电平信号有啥区别?

RS-422与RS-485RS-422与RS-485串行接口标准

工业机器人-- UART和RS-232RS-422RS-485通信接口