說明
這節實現的功能:
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作為日志輸出口,為保證全部打印所有的運行日志,發送數據采用的環形隊列