标签:开发板 日志 接收 mic 服务器 获取ip name 关于 idt
这节实现的功能:
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透传通信
标签:开发板 日志 接收 mic 服务器 获取ip name 关于 idt
原文地址:https://www.cnblogs.com/yangfengwu/p/12940821.html