本文以實現(xiàn)串口MQTT服務(wù)器為項目目標,展開講解,介紹如何通過EsDA工具和MPC-ZC1平臺,進行應(yīng)用開發(fā),逐步完成項目需求。
簡介
串口端主要為 RS-232、485、422 等接口,網(wǎng)絡(luò)端通常為 TCP、UDP、MQTT、HTTP 等協(xié)議服務(wù)器。
本文以實現(xiàn)串口MQTT服務(wù)器為項目目標,展開講解,介紹如何通過 EsDA 工具和 MPC-ZC1 平臺,進行應(yīng)用開發(fā),逐步完成項目需求。
??前期準備
一、項目需求
項目開發(fā)前,先對項目需求進行梳理和拆解,主要有以下幾點:
* 本文僅以 LED 作為擴展業(yè)務(wù),可根據(jù)實際需求進行擴展。二、業(yè)務(wù)框圖
根據(jù)項目需求,大致將系統(tǒng)劃分為以下幾大模塊:
1. 串口通信
-
實現(xiàn)串口的數(shù)據(jù)收發(fā)功能;
-
實現(xiàn)串口基本參數(shù)配置功能(波特率、奇偶校驗位、數(shù)據(jù)位)。
- 實現(xiàn)MQTT客戶端功能;
- 配置目標服務(wù)器地址、端口;
- 發(fā)布和訂閱指定主題。
3. 數(shù)據(jù)解析
- 解析數(shù)據(jù)流中的控制命令
4. 數(shù)據(jù)分發(fā)
- 將解析出來的數(shù)據(jù)分發(fā)到其他模塊
業(yè)務(wù)開發(fā)
一、串口通信
實現(xiàn)串口通信模塊,需要使用到串口相關(guān)的 AWFlow 節(jié)點,包括 serial_ex、serial_in_ex、serial_out_ex 3個節(jié)點。1. 節(jié)點介紹1.1 serial_ex串口配置節(jié)點,屬于隱式節(jié)點,不會被顯示在畫布中,需要配套對應(yīng)的功能節(jié)點一起使用。1.1.1 屬性
- 名稱(name):節(jié)點名稱,用于索引查找本節(jié)點;
- 顯示名稱(displayName):用于畫布上顯示的名稱;
- 端口(port):用于索引串口設(shè)備;
- 波特率(baudrate):串口波特率參數(shù);
- 字節(jié)大小(bytesize):數(shù)據(jù)位參數(shù);
- 奇偶校驗(parity):串口奇偶校驗位參數(shù);
- 停止位(stopbits):串口停止位參數(shù);
- 流控(flowcontrol):串口流控模式配置;
- 幀超時(frame_timeout):收到數(shù)據(jù)后的總體等待時間;
- 幀長度(frame_length):期望收據(jù)的數(shù)據(jù)長度;
- 碼間超時(intersymbol_timeout):字節(jié)間的最大超時時間。
其中幀超時、幀長度、碼間超時可用于分包應(yīng)用,3個參數(shù)可同時使用,任意一個條件滿足都會觸發(fā)分包。
* 配置節(jié)點(config類型)只存在節(jié)點屬性,不具備輸入輸出功能。1.2 serial_in_ex
串口接收節(jié)點,負責(zé)讀取指定串口接收到的數(shù)據(jù)。1.2.1 屬性![7e4da314-238d-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/38/wKgZomTnGh-ACjuSAAApMoYcI_U455.png)
-
名稱(name):節(jié)點名稱,用于索引查找本節(jié)點;
-
顯示名稱(displayName):用于畫布上顯示的名稱;
- 配置節(jié)點名稱(config):綁定一個串口配置節(jié)點;
-
payload:讀取到串口接收的數(shù)據(jù),字符串(可按二進制提取);
-
payloadLength:數(shù)據(jù)長度,uint32_t 類型;
-
payloadType: payload 的數(shù)據(jù)類型,用于后續(xù)節(jié)點數(shù)據(jù)處理;
-
istream:數(shù)據(jù)流對象,保存著串口接收的原始數(shù)據(jù)流;
1.3 serial_out_ex
串口發(fā)送節(jié)點,將上級節(jié)點輸出的數(shù)據(jù)發(fā)送至串口發(fā)送接口。
1.3.1 屬性
-
名稱(name):節(jié)點名稱,用于索引查找本節(jié)點;
-
顯示名稱(displayName):用于畫布上顯示的名稱;
-
配置節(jié)點名稱(config):綁定一個串口配置節(jié)點。
1.3.2 輸入
-
payload:負載數(shù)據(jù),字符串類型(也可按二進制轉(zhuǎn)換);
-
payloadLength:負載數(shù)據(jù)長度,uint32_t類型;
-
payloadType:指示payload的數(shù)據(jù)類型;
-
istream:數(shù)據(jù)流對象。
*支持輸入 payload 和 istream 數(shù)據(jù),優(yōu)先使用 istream。
1.3.3 輸出* sink類型節(jié)點通常不具備數(shù)據(jù)輸出。
2. 回發(fā)驗證
我們通過一個串口數(shù)據(jù)回發(fā)功能來驗證串口通信模塊。
2.1添加節(jié)點
添加 serial_in_ex 和 serial_out_ex 節(jié)點到畫布上。![7e63f31c-238d-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/38/wKgZomTnGh-AfCDoAAD8pKQCvAw926.png)
2.2配置節(jié)點
雙擊 serial_in_ex 節(jié)點,打開屬性面板。![7e6f6ca6-238d-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/38/wKgZomTnGh-ALCPZAABspna0K2U659.png)
選擇“添加新的 serial_ex 節(jié)點”,點擊編輯配置,進入配置節(jié)點屬性面板。
![7e77007e-238d-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/38/wKgZomTnGiCAPI9OAABMtXG8qjA598.png)
-
串口設(shè)備:Uart1;
-
波特率:115200;
-
字節(jié)大小:8bits;
-
奇偶校驗:None
-
停止位:1bits;
-
流控:None;
-
幀超時:100;
-
幀長度:0;
-
碼間超時:0。
點擊添加,完成配置。
可以看到已經(jīng)創(chuàng)建了一個新的配置節(jié)點,名為 serial_ex,繼續(xù)點擊完成,結(jié)束接收節(jié)點的配置。
同樣的,雙擊 serial_out_ex 節(jié)點,打開屬性面板,直接選擇剛剛創(chuàng)建的配置節(jié)點。
點擊完成,保存配置。
2.3繪制流圖
將serial_in_ex與serial_out_ex節(jié)點進行連接。
![7e9b0c6c-238d-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/38/wKgZomTnGiCAY4joAAAnTLprJNI716.png)
2.4下載驗證
確保硬件正確連接。
選擇流圖下載接口。
![7ecc589e-238d-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/38/wKgZomTnGiCANkBGAABJKU5ITzI783.png)
![7ee1b374-238d-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/38/wKgZomTnGiCAO4LPAAALPyvBMp0761.png)
完成流圖下載,通過串口工具進行數(shù)據(jù)回發(fā)測試。
二、MQTT通信
實現(xiàn) MQTT 通信模塊,需要使用到相關(guān)的AWFlow節(jié)點,包括mqtt_config、mqtt_in、mqtt_out3個節(jié)點。
1. 節(jié)點介紹
1.1 mqtt_config
MQTT 配置節(jié)點,屬于隱式節(jié)點,不會被顯示在畫布中,需要配套對應(yīng)的功能節(jié)點一起使用。
1.1.1 屬性
-
名稱(name):節(jié)點名稱,用于索引查找本節(jié)點;
-
顯示名稱(displayName:用于畫布上顯示的名稱;
-
主機地址(host):目標服務(wù)器域名(IP地址);
-
端口(port):目標服務(wù)器網(wǎng)絡(luò)端口;
-
重連間隔(retry-interval):MQTT后臺服務(wù)重連時間間隔,單位毫秒;
-
客戶端ID(client-id):MQTT客戶端ID;
-
用戶名(user-name):MQTT客戶端用戶名;
-
密碼(password):MQTT客戶端密碼;
-
保活包發(fā)送間隔(keep-alive-interval):保活數(shù)據(jù)包發(fā)送周期,單位秒;
-
清除會話(clean-session):使能自動清除歷史會話;
-
上線主題服務(wù)質(zhì)量等級(online-topic-qos):上線QoS服務(wù)質(zhì)量;
-
上線主題(online-topic-topic):上線主題;
-
上線主題數(shù)據(jù)(online-topic-data):上線主題數(shù)據(jù);
-
遺囑主題服務(wù)質(zhì)量等級(last-will-qos):遺囑QoS服務(wù)質(zhì)量;
-
遺囑主題(last-will-topic):遺囑主題;
-
遺囑主題數(shù)據(jù)(last-will-data):遺囑主題數(shù)據(jù);
-
使能SSL(enable-ssl):使能SSL加密功能;
-
根證書路徑(root-ca-ssl):根證書文件全路徑;
-
客戶端證書路徑(client-certificate-path):客戶端證書文件全路徑;
-
客戶端密鑰路徑(client-private-key-path):客戶端密鑰文件全路徑。
MQTT 配置屬性項比較多,但好在節(jié)點中已經(jīng)內(nèi)置了常用的默認配置,用戶僅需根據(jù)應(yīng)用修改所需屬性項即可。
* 配置節(jié)點(config類型)只存在節(jié)點屬性,不具備輸入輸出功能。
1.2 mqtt_in
MQTT 訂閱節(jié)點,提供訂閱指定主題的功能。
1.2.1 屬性
- 名稱(name):節(jié)點名稱,用于索引查找本節(jié)點;
- 顯示名稱(displayName):用于畫布上顯示的名稱;
- 主題(topic):配置需要訂閱的主題;
- 消息質(zhì)量(qos):QoS主題服務(wù)質(zhì)量等級;
- 配置(config):綁定一個MQTT配置節(jié)點。
pump類型節(jié)點通常不具備數(shù)據(jù)輸入。
1.2.3 輸出- topic:主題標識,字符串類型;
- payload:負載數(shù)據(jù),指針(pointer)類型;
- payloadLength:負載數(shù)據(jù)長度,uint32_t類型。
1.3 mqtt_out
MQTT 發(fā)布節(jié)點,向服務(wù)器發(fā)布指定主題數(shù)據(jù)。
1.3.1 屬性
-
名稱(name):節(jié)點名稱,用于索引查找本節(jié)點;
-
顯示名稱(displayName):用于畫布上顯示的名稱;
-
消息質(zhì)量(qos):QoS主題服務(wù)質(zhì)量等級;
-
主題(topic):發(fā)布的主題;
-
配置(config):綁定一個MQTT配置節(jié)點。
1.3.2 輸入
- topic:發(fā)布主題名稱;
- payload:負載數(shù)據(jù);
- payloadLength:負載數(shù)據(jù)長度,uint32_t類型;
1.3.3 輸出
* sink類型節(jié)點通常不具備數(shù)據(jù)輸出。2. 回發(fā)驗證我們通過一個MQTT數(shù)據(jù)回發(fā)功能來驗證MQTT通信模塊。2.1 添加節(jié)點添加 mqtt_in 和 mqtt_out 節(jié)點到畫布上。![7f19c16a-238d-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/38/wKgZomTnGiGAA80SAADr079VzZI438.png)
2.2 配置節(jié)點
雙擊 mqtt_in_ex 節(jié)點,打開屬性面板。![7f27e59c-238d-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/38/wKgZomTnGiGAHcBZAABx-8b1kZ8947.png)
選擇“添加新的 mqtt 節(jié)點”,點擊編輯配置,進入配置節(jié)點屬性面板。
![7f3434dc-238d-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/38/wKgZomTnGiGAbcOtAAECIKFfwaw667.png)
該節(jié)點已經(jīng)內(nèi)置好大部分常用的配置信息,此處,我們僅修改3個必須的屬性項:
-
主機地址:broker.emqx.io;
-
端口號:1883;
-
重連間隔:1000。
點擊添加,完成配置。
可以看到已經(jīng)創(chuàng)建了一個新的配置節(jié)點,名為 mqtt,同時我們配置一個訂閱主題 EsDA-MQTT-Down ,繼續(xù)點擊完成,結(jié)束接收節(jié)點的配置。
同樣的,雙擊mqtt_out節(jié)點,打開屬性面板,直接選擇剛剛創(chuàng)建的配置節(jié)點,同時配置一個發(fā)布主題EsDA-MQTT-Up 。
點擊完成,保存配置。
2.3 繪制流圖
將 mqtt_in 與 mqtt_out 節(jié)點進行連接。
2.4 下載驗證
確保硬件正確連接,需要4G天線,以及一張可正常聯(lián)網(wǎng)的SIM卡。
選擇流圖下載接口。
![7ecc589e-238d-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/38/wKgZomTnGiCANkBGAABJKU5ITzI783.png)
點擊下載。
完成流圖下載后,可通過MQTT客戶端工具進行數(shù)據(jù)回發(fā)測試。
此處我們選擇MQTTX,下載鏈接
https://www.emqx.com/zh/downloads/MQTTX/1.8.2/MQTTX-Setup-1.8.2-x64.exe
下載結(jié)束并完成MQTTX客戶端的安裝,啟動MQTTX客戶端軟件。
點擊新建連接,創(chuàng)建MQTT連接,如下進行配置。
點擊連接,完成客戶端配置,進入連接后,添加訂閱主題。
訂閱MPC-ZC1發(fā)布的主題EsDA-MQTT-Up 。
最后發(fā)布MPC-ZC1訂閱的主題EsDA-MQTT-Down 。
輸入發(fā)布的內(nèi)容EsDA MQTT Test Message!,點擊發(fā)布主題,隨后可以收到 MPC-ZC1 回發(fā)同樣的內(nèi)容。
前面我們已經(jīng)完成串口通信、MQTT通信功能,并進行數(shù)據(jù)回發(fā)測試,接下來我們要完成本項目的核心功能,串口與MQTT服務(wù)器之間的數(shù)據(jù)透明傳輸。
從前面兩次數(shù)據(jù)回發(fā)的流圖中,我們很容易想象到如下圖所示的方式進行流圖變換。
![80033598-238d-11ed-ba43-dac502259ad0.png](https://file1.elecfans.com//web2/M00/96/38/wKgZomTnGiOAKftYAABCV7SRW2Y619.png)
下載流圖,進行透傳測試,效果如下圖。
![802c3c36-238d-11ed-ba43-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/96/38/wKgZomTnGiOAS5eUAAK7jMQyl5w086.jpg)
![803a69aa-238d-11ed-ba43-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/96/38/wKgZomTnGiOAJhZBAAJEKhMB_bw179.jpg)
-
ESDA
+關(guān)注
關(guān)注
0文章
28瀏覽量
7539 -
MPC
+關(guān)注
關(guān)注
2文章
36瀏覽量
21268 -
串口服務(wù)器
+關(guān)注
關(guān)注
1文章
165瀏覽量
17419
原文標題:EsDA MPC-ZC1 應(yīng)用——串口服務(wù)器(一)
文章出處:【微信號:ZLG_zhiyuan,微信公眾號:ZLG致遠電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
MPC-ZC1工控單板如何快速搭建出產(chǎn)線車間的智能風(fēng)機控制系統(tǒng)
EsDA MPC-ZC1入門之軟件安裝
基于MPC-ZC1工控單板的物聯(lián)網(wǎng)監(jiān)測控制系統(tǒng)設(shè)計
【EsDA應(yīng)用】如何讓自動化領(lǐng)域的串口設(shè)備具備聯(lián)網(wǎng)能力?
【EsDA應(yīng)用】串口轉(zhuǎn)UDP服務(wù)器
【EsDA應(yīng)用】藍牙服務(wù)端節(jié)點詳解
![【<b class='flag-5'>EsDA</b>應(yīng)用】藍牙<b class='flag-5'>服務(wù)</b>端節(jié)點詳解](https://file1.elecfans.com/web2/M00/8E/61/wKgaomTE2IuAF2OZAAABH5UOQQI846.jpg)
【EsDA應(yīng)用】串口服務(wù)器——TCP Server
![【<b class='flag-5'>EsDA</b>應(yīng)用】<b class='flag-5'>串口服務(wù)器</b>——TCP Server](https://file1.elecfans.com/web2/M00/8E/5D/wKgZomTE2-uAaOiGAAABH5UOQQI609.jpg)
【Z站推薦】EsDA MPC-ZC1 應(yīng)用——串口服務(wù)器(二)
![【Z站推薦】<b class='flag-5'>EsDA</b> <b class='flag-5'>MPC-ZC1</b> 應(yīng)用——<b class='flag-5'>串口服務(wù)器</b>(二)](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
【Z站推薦】EsDA MPC-ZC1 應(yīng)用——IoT 監(jiān)測控制系統(tǒng)(一)
![【Z站推薦】<b class='flag-5'>EsDA</b> <b class='flag-5'>MPC-ZC1</b> 應(yīng)用——IoT 監(jiān)測控制系統(tǒng)(一)](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
【Z站推薦】EsDA MPC-ZC1 應(yīng)用——IoT 監(jiān)測控制系統(tǒng)(三)
![【Z站推薦】<b class='flag-5'>EsDA</b> <b class='flag-5'>MPC-ZC1</b> 應(yīng)用——IoT 監(jiān)測控制系統(tǒng)(三)](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
【EsDA應(yīng)用】如何讓自動化領(lǐng)域的串口設(shè)備具備聯(lián)網(wǎng)能力?
![【<b class='flag-5'>EsDA</b>應(yīng)用】如何讓自動化領(lǐng)域的<b class='flag-5'>串口</b>設(shè)備具備聯(lián)網(wǎng)能力?](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
【EsDA應(yīng)用】串口轉(zhuǎn)UDP服務(wù)器
![【<b class='flag-5'>EsDA</b>應(yīng)用】<b class='flag-5'>串口</b>轉(zhuǎn)UDP<b class='flag-5'>服務(wù)器</b>](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
【EsDA應(yīng)用】串口服務(wù)器——UDP Server
![【<b class='flag-5'>EsDA</b>應(yīng)用】<b class='flag-5'>串口服務(wù)器</b>——UDP Server](https://file1.elecfans.com/web2/M00/8E/5D/wKgZomTE4COAAfbqAAABH5UOQQI729.jpg)
基于EsDA MPC-ZC1 快速實現(xiàn)I2C 監(jiān)控報警
![基于<b class='flag-5'>EsDA</b> <b class='flag-5'>MPC-ZC1</b> 快速<b class='flag-5'>實現(xiàn)</b>I2C 監(jiān)控報警](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
評論