加入星計劃,您可以享受以下權益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • ??項目概述
    • ?項目準備
    • ? 項目實施
  • 推薦器件
  • 相關推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

【EsDA應用】IO設備接入MQTT

2023/10/05
2832
閱讀需 12 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

隨著物聯(lián)網(wǎng)的迅速發(fā)展,越來越多的IO設備需要與云平臺進行通信,以實現(xiàn)遠程監(jiān)控和控制。本文將基于EsDA開發(fā)套件快速實現(xiàn)將IO設備接入MQTT的應用開發(fā),幫助用戶實現(xiàn)智能互聯(lián)。

簡介

在物聯(lián)網(wǎng)應用中,接入IO設備是非常重要的一環(huán)。而MQTT作為輕量級的一種通信協(xié)議,被廣泛應用于物聯(lián)網(wǎng)領域。本文將介紹如何使用EPC6450-AWI開發(fā)板,以及圖形化設計工具AWFlow Designer將IO設備接入MQTT,實現(xiàn)實時的數(shù)據(jù)傳輸遠程控制。

??項目概述

MQTT是通過發(fā)布主題來上傳消息,訂閱相關的主題來接收消息。本文將通過對EPC6450-AWI核心板 上的IO設備執(zhí)行數(shù)據(jù)采集和數(shù)據(jù)處理后,將數(shù)據(jù)以發(fā)布MQTT主題消息的形式進行上傳;而MQTTX客戶端以訂閱相關主題來實時監(jiān)控IO設備相關的數(shù)據(jù),MQTTX客戶端還可以以發(fā)布主題的形式對核心板進行遠端控制和消息下發(fā)。

本文的IO設備主要是button按鍵和ADC數(shù)據(jù)采集,按鍵主要是模擬按下緊急按鈕后上傳緊急戒備的狀態(tài)消息到云端,MQTTX客戶端訂閱緊急狀態(tài)的主題就可以實時監(jiān)控并顯示相關狀態(tài)。ADC數(shù)據(jù)采集是將采集到的數(shù)據(jù)與設定值對比,若大于設定值則發(fā)布數(shù)值過高報警的主題,MQTTX客戶端訂閱該主題就可以實時顯示ADC數(shù)據(jù)采集的狀態(tài)。本項目大概的邏輯處理可參考下圖。

?項目準備

客戶可閱讀以下相關文章,對MQTT協(xié)議和IO設備在EsDA上的使用操作上可以有更多的了解:

    【EsDA?應用】常用IO設備節(jié)點詳解EsDA?MPC-ZC1入門(二)——?LED控制基于?EsDA?MPC-ZC1?快速實現(xiàn)——按鍵高級應用EsDA?MPC-ZC1應用——串口服務器(一)

1. 上位機準備

1.1 下載MQTTX

在官網(wǎng)下載并安裝MQTTX,一款開源跨平臺MQTT協(xié)議的桌面客戶端。在使用過程中不需要自行部署MQTT服務器,使用以下代理地址和端口號就能進行快速測試,MQTT代理地址:broker.emqx.io,端口號:1883(TCP);8883(SSL)。

1.2 快速建立連接

打開軟件,點擊左側菜單欄的?“+”?按鈕。如果頁面為空,也可直接點擊右側的?+ New Connection來快速設定新的客戶端連接。

在創(chuàng)建連接的頁面上,需要設置連接服務器的相關信息,用戶只需要填寫Name(連接標識名稱,客戶隨機設定即可),Client ID(客戶端ID號,客戶隨機設定即可),Host(連接的服務器地址,因為不是自建服務器,所以使用公用的broker.emqx.io),Port(服務器對應的端口號1883)參數(shù)即可,設置成功后點擊connect按鈕,若網(wǎng)絡無礙則等待連接成功即可。

1.3 消息的訂閱與發(fā)布

連接成功后,點擊New Subscription按鈕,在彈窗的Topic編輯框中填寫客戶需要訂閱的主題名稱,填寫后點擊Confirm確認,則訂閱成功。

若需要發(fā)布主題,則在下圖中的發(fā)布主題編輯框中填寫用戶的發(fā)布主題名稱,內(nèi)容框中填寫發(fā)布主題的內(nèi)容。

MQTTX軟件的更多使用操作,可以查看其官網(wǎng)進行閱讀并學習。

2. 硬件準備

    在標有絲印為TF Card 的卡槽處,插入SD卡。在標有絲印為DUART的模塊上,將TTL轉USB串口模塊的TX與板子絲印為RXD連接,TTL轉USB串口模塊的RX與板子絲印為TXD相連;并將串口模塊的USB端口接入電腦。在標有絲印為Type-C 的接口處,插上Type-C線,并將Type-C的USB端口插入電腦。在標有絲印為NET0?或 NET1的網(wǎng)絡接口處,插上網(wǎng)線頭,另一端的網(wǎng)線頭插在PC的網(wǎng)絡接口處。

3. 網(wǎng)絡搭建

打開串口調試助手檢索并打開TTL轉USB串口模塊的設備端口號后,使用shell命令ip addr,查看網(wǎng)口的ip地址,根據(jù)下圖可知,本文使用的網(wǎng)口設備ip地址是192.168.137.251。

因為AWFlow的mqtt節(jié)點是客戶端節(jié)點,而訪問的mqtt代理地址broker.emqx.io是需要流量的,所以需要通過PC電腦共享網(wǎng)絡給開發(fā)板上網(wǎng)。配置PC上的以太網(wǎng)的IP與開發(fā)板的IP地址在同一局域網(wǎng)下。

將PC上的WLAN配置為共享給以太網(wǎng)。

在串口調試助手輸入shell指令ping www.baidu.com,ping成功即開發(fā)板聯(lián)網(wǎng)成功。

? 項目實施

本項目業(yè)務主要分為三個部分:

    MQTTX客戶端:訂閱核心板設備發(fā)布的主題,并發(fā)布對核心板控制和下發(fā)消息的主題;按鍵模塊:報警按鈕按下則觸發(fā)報警狀態(tài),并發(fā)布報警的主題;ADC采集模塊:adc數(shù)據(jù)采集,若采集到的數(shù)值大于設定值則觸發(fā)數(shù)值過高報警,并發(fā)布adc數(shù)值報警的主題。

1. 流圖繪制

添加mqtt_in,fscript,log,adc,mqtt_out,button節(jié)點到畫布中并連線如下圖。

2. 節(jié)點配置

雙擊mqtt_in節(jié)點,配置訂閱的主題以及點擊配置的鉛筆圖標對mqtt_config配置節(jié)點進行配置。

在mqtt_config配置節(jié)點中,可以只對主機地址,端口以及客戶端id進行配置,如下圖,因為本流圖所有的mqtt_config節(jié)點配置值都相同,后面不再贅述。

mqtt_in的消費者節(jié)點fscript的內(nèi)容是對訂閱主題的消息進行處理并輸出,內(nèi)容如下:

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節(jié)點?,選擇目標板對應絲印的ADC通道號。

作為adc的消費者節(jié)點,fscript主要目的是對采集到的adc數(shù)值進行處理,因為本項目是數(shù)值過高報警,所以fscript的內(nèi)容如下:

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節(jié)點,編輯發(fā)布的MQTT主題,以及對mqtt_config進行配置。

雙擊button節(jié)點,選擇目標板對應按鍵絲印的GPIO編號。

雙擊button的消費者節(jié)點fscript,本節(jié)點的主要內(nèi)容是對button按鍵輸出的數(shù)值進行處理后傳遞給mqtt_out節(jié)點,內(nèi)容如下:

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節(jié)點,對發(fā)布主題和mqtt_config進行配置。

3. 下載驗證

基于上位機準備章節(jié)搭建好MQTTX客戶端后對ADC_Status和Emergency_status的主題進行訂閱,下載AWFlow流圖到核心板中;進行按鍵按下和彈起等的操作以及adc數(shù)據(jù)采集的操作后,可以看到MQTTX客戶端能接收到對應主題的消息,實現(xiàn)了對核心板的IO設備進行數(shù)據(jù)和狀態(tài)等的實時監(jiān)控。

MQTTX客戶端發(fā)布zlgtest的主題,可以在核心板上的打印查看發(fā)布主題的消息內(nèi)容如下,也可以根據(jù)客戶端發(fā)布主題的消息對設備進行控制等操作。

根據(jù)上述實驗可知,將IO設備接入MQTT后,即可實現(xiàn)對設備的監(jiān)控和控制等能力,為用戶帶來了更好的使用體驗。

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風險等級 參考價格 更多信息
TJA1042T/3,112 1 NXP Semiconductors TJA1042 - High-speed CAN transceiver with Standby mode SOIC 8-Pin
$1.65 查看
KSZ8721BLI-TR 1 Microchip Technology Inc DATACOM, ETHERNET TRANSCEIVER, PQFP48
$3.1 查看
LAN9303I-ABZJ 1 SMSC Ethernet Transceiver, 8 X 8 MM, ROHS COMPLIANT, QFN-56
$8.26 查看
致遠電子

致遠電子

廣州致遠電子股份有限公司成立于2001年,注冊資金5000萬元,國家級高新技術認證企業(yè),廣州市高端工控測量儀器工程技術研究開發(fā)中心,Intel ECA全球合作伙伴和微軟嵌入式系統(tǒng)金牌合作伙伴。

廣州致遠電子股份有限公司成立于2001年,注冊資金5000萬元,國家級高新技術認證企業(yè),廣州市高端工控測量儀器工程技術研究開發(fā)中心,Intel ECA全球合作伙伴和微軟嵌入式系統(tǒng)金牌合作伙伴。收起

查看更多

相關推薦

電子產(chǎn)業(yè)圖譜

ZLG官方賬號,一個匯聚500名工程師的研發(fā)測試分享平臺,為您提供電子世界領先的產(chǎn)品技術與行業(yè)解決方案.