隨著物聯網的迅速發展,越來越多的IO設備需要與云平臺進行通信,以實現遠程監控和控制。本文將基于EsDA開發套件快速實現將IO設備接入MQTT的應用開發,幫助用戶實現智能互聯。
?簡介
在物聯網應用中,接入IO設備是非常重要的一環。而MQTT作為輕量級的一種通信協議,被廣泛應用于物聯網領域。本文將介紹如何使用EPC6450-AWI開發板,以及圖形化設計工具AWFlow Designer將IO設備接入MQTT,實現實時的數據傳輸和遠程控制。
?項目概述
MQTT是通過發布主題來上傳消息,訂閱相關的主題來接收消息。本文將通過對EPC6450-AWI核心板 上的IO設備執行數據采集和數據處理后,將數據以發布MQTT主題消息的形式進行上傳;而MQTTX客戶端以訂閱相關主題來實時監控IO設備相關的數據,MQTTX客戶端還可以以發布主題的形式對核心板進行遠端控制和消息下發。
本文的IO設備主要是button按鍵和ADC數據采集,按鍵主要是模擬按下緊急按鈕后上傳緊急戒備的狀態消息到云端,MQTTX客戶端訂閱緊急狀態的主題就可以實時監控并顯示相關狀態。ADC數據采集是將采集到的數據與設定值對比,若大于設定值則發布數值過高報警的主題,MQTTX客戶端訂閱該主題就可以實時顯示ADC數據采集的狀態。本項目大概的邏輯處理可參考下圖。
?項目準備客戶可閱讀以下相關文章,對MQTT協議和IO設備在EsDA上的使用操作上可以有更多的了解:
- 【EsDA應用】常用IO設備節點詳解
- EsDAMPC-ZC1入門(二)——LED控制
- 基于EsDAMPC-ZC1快速實現——按鍵高級應用
- EsDAMPC-ZC1應用——串口服務器(一)
1. 上位機準備
1.1 下載MQTTX在官網下載并安裝MQTTX,一款開源跨平臺MQTT協議的桌面客戶端。在使用過程中不需要自行部署MQTT服務器,使用以下代理地址和端口號就能進行快速測試,MQTT代理地址:broker.emqx.io,端口號:1883(TCP);8883(SSL)。1.2 快速建立連接打開軟件,點擊左側菜單欄的“+”按鈕。如果頁面為空,也可直接點擊右側的+ New Connection來快速設定新的客戶端連接。
在創建連接的頁面上,需要設置連接服務器的相關信息,用戶只需要填寫Name(連接標識名稱,客戶隨機設定即可),Client ID(客戶端ID號,客戶隨機設定即可),Host(連接的服務器地址,因為不是自建服務器,所以使用公用的broker.emqx.io),Port(服務器對應的端口號1883)參數即可,設置成功后點擊connect按鈕,若網絡無礙則等待連接成功即可。1.3 消息的訂閱與發布
連接成功后,點擊New Subscription按鈕,在彈窗的Topic編輯框中填寫客戶需要訂閱的主題名稱,填寫后點擊Confirm確認,則訂閱成功。若需要發布主題,則在下圖中的發布主題編輯框中填寫用戶的發布主題名稱,內容框中填寫發布主題的內容。MQTTX軟件的更多使用操作,可以查看其官網進行閱讀并學習。
2. 硬件準備
- 在標有絲印為TF Card 的卡槽處,插入SD卡。
- 在標有絲印為DUART的模塊上,將TTL轉USB串口模塊的TX與板子絲印為RXD連接,TTL轉USB串口模塊的RX與板子絲印為TXD相連;并將串口模塊的USB端口接入電腦。
- 在標有絲印為Type-C 的接口處,插上Type-C線,并將Type-C的USB端口插入電腦。
- 在標有絲印為NET0或 NET1的網絡接口處,插上網線頭,另一端的網線頭插在PC的網絡接口處。
3. 網絡搭建
打開串口調試助手檢索并打開TTL轉USB串口模塊的設備端口號后,使用shell命令ip addr,查看網口的ip地址,根據下圖可知,本文使用的網口設備ip地址是192.168.137.251。
因為AWFlow的mqtt節點是客戶端節點,而訪問的mqtt代理地址broker.emqx.io是需要流量的,所以需要通過PC電腦共享網絡給開發板上網。配置PC上的以太網的IP與開發板的IP地址在同一局域網下。將PC上的WLAN配置為共享給以太網。在串口調試助手輸入shell指令ping www.baidu.com,ping成功即開發板聯網成功。
?項目實施本項目業務主要分為三個部分:
- MQTTX客戶端:訂閱核心板設備發布的主題,并發布對核心板控制和下發消息的主題;
- 按鍵模塊:報警按鈕按下則觸發報警狀態,并發布報警的主題;
- ADC采集模塊:adc數據采集,若采集到的數值大于設定值則觸發數值過高報警,并發布adc數值報警的主題。
1. 流圖繪制
添加mqtt_in,fscript,log,adc,mqtt_out,button節點到畫布中并連線如下圖。
2. 節點配置
雙擊mqtt_in節點,配置訂閱的主題以及點擊配置的鉛筆圖標對mqtt_config配置節點進行配置。
在mqtt_config配置節點中,可以只對主機地址,端口以及客戶端id進行配置,如下圖,因為本流圖所有的mqtt_config節點配置值都相同,后面不再贅述。
mqtt_in的消費者節點fscript的內容是對訂閱主題的消息進行處理并輸出,內容如下:
print("receive mqtt topic is "+msg.topic+'\n')rb = rbuffer_create(msg.payload, msg.payloadLength)f = "receive mqtt data is "msg.payload = f + rbuffer_read_string(rb)
雙擊adc節點,選擇目標板對應絲印的ADC通道號。
作為adc的消費者節點,fscript主要目的是對采集到的adc數值進行處理,因為本項目是數值過高報警,所以fscript的內容如下:
if (msg.payload > 2500){ print("adc data is high") msg.payload = "Collect data is high!\n" wbuffer_write_string(wb,msg.payload) output.payload = wbuffer_get_data(wb) output.payloadLength = len("Collect data is high!\n")}
接著雙擊adc排頭的mqtt_out節點,編輯發布的MQTT主題,以及對mqtt_config進行配置。雙擊button節點,選擇目標板對應按鍵絲印的GPIO編號。
雙擊button的消費者節點fscript,本節點的主要內容是對button按鍵輸出的數值進行處理后傳遞給mqtt_out節點,內容如下:
if (msg.payload == 'on' ){ print("button pressed") msg.payload = "Emergency button pressed!\n" wbuffer_write_string(wb,msg.payload) output.payload = wbuffer_get_data(wb) output.payloadLength = len("Emergency button pressed!\n")}else if(msg.payload == 'off') { print("button bounced")}
雙擊button按鍵排頭的mqtt_out節點,對發布主題和mqtt_config進行配置。
3. 下載驗證
基于上位機準備章節搭建好MQTTX客戶端后對ADC_Status和Emergency_status的主題進行訂閱,下載AWFlow流圖到核心板中;進行按鍵按下和彈起等的操作以及adc數據采集的操作后,可以看到MQTTX客戶端能接收到對應主題的消息,實現了對核心板的IO設備進行數據和狀態等的實時監控。
MQTTX客戶端發布zlgtest的主題,可以在核心板上的打印查看發布主題的消息內容如下,也可以根據客戶端發布主題的消息對設備進行控制等操作。根據上述實驗可知,將IO設備接入MQTT后,即可實現對設備的監控和控制等能力,為用戶帶來了更好的使用體驗。
-
IO
+關注
關注
0文章
435瀏覽量
39080 -
設備
+關注
關注
2文章
4473瀏覽量
70540 -
MQTT
+關注
關注
5文章
649瀏覽量
22435
發布評論請先 登錄
相關推薦
評論