本文將基于 MPC-ZC1 工控單板,通過 EsDA 設(shè)計(jì)工具,分享如何搭建出一個(gè)常用的物聯(lián)網(wǎng)監(jiān)測控制系統(tǒng)。 簡介在大多數(shù)嵌入式物聯(lián)網(wǎng)應(yīng)用場景中,溫度、濕度、電壓、電流等基本數(shù)據(jù)的采集是必不可少的。且需將數(shù)據(jù)上報(bào)至物聯(lián)網(wǎng)平臺(tái),并支持云端遠(yuǎn)程控制。對(duì)于安全性、實(shí)時(shí)性要求較高的場合,還需要支持本地?cái)?shù)據(jù)處理和及時(shí)響應(yīng)。本文將基于MPC-ZC1工控單板,通過EsDA設(shè)計(jì)工具,搭建出一個(gè)常用的物聯(lián)網(wǎng)監(jiān)測控制系統(tǒng)。
前期準(zhǔn)備
可通過 EsDA MPC-ZC1 系列文章,掌握 EsDA 開發(fā)流程:
- EsDAMPC-ZC1入門(一)——軟件安裝
- EsDAMPC-ZC1入門(二)——LED控制
- EsDAMPC-ZC1應(yīng)用——串口服務(wù)器(一)
- EsDAMPC-ZC1應(yīng)用——串口服務(wù)器(二)
一、項(xiàng)目需求
項(xiàng)目開發(fā)前,先對(duì)項(xiàng)目需求進(jìn)行梳理和拆解,主要有以下幾點(diǎn):
采集溫濕度數(shù)據(jù);
溫度異常報(bào)警;
數(shù)據(jù)上報(bào)云端物聯(lián)網(wǎng)平臺(tái);
控制風(fēng)機(jī)降溫;
接收云端控制命令。
二、業(yè)務(wù)框圖
根據(jù)項(xiàng)目需求,大致將系統(tǒng)劃分為以下幾大模塊:
1. 溫濕度采集
- 采集環(huán)境溫濕度;
- 可配置周期性采集。
2. 異常警報(bào)
可配置警報(bào)溫度閾值;
輸出高溫異常警報(bào)提示;
輸出低溫異常警報(bào)提示。
3. 云端監(jiān)控
接入物聯(lián)網(wǎng)平臺(tái);
上報(bào)數(shù)據(jù)至云平臺(tái);
接收云平臺(tái)控制命令;
- 組態(tài)設(shè)計(jì)。
4. 風(fēng)機(jī)降溫
- 可配置降溫溫度閾值;
- 控制風(fēng)機(jī)開關(guān)。
業(yè)務(wù)開發(fā)
一、溫濕度采集
本項(xiàng)目選用通用的 RS485 接口溫濕度變送器來實(shí)現(xiàn)溫濕度采集,該設(shè)備使用 Modbus RTU 通信協(xié)議。AWFlow 集成了通用的 RS485 溫濕度變送器節(jié)點(diǎn),包括 modbus_master_rtu 、th_transmitter_in 2個(gè)節(jié)點(diǎn)。
1. 節(jié)點(diǎn)介紹
1.1 modbus_master_rtuModbus RTU 主機(jī)(客戶端)配置節(jié)點(diǎn),屬于隱式節(jié)點(diǎn),不會(huì)被顯示在畫布中,需要配套對(duì)應(yīng)的功能節(jié)點(diǎn)一起使用。該節(jié)點(diǎn)提供了Modbus RTU 主機(jī)通信服務(wù)。1.1.1 屬性
名稱(name):節(jié)點(diǎn)名稱,用于索引查找本節(jié)點(diǎn);
顯示名稱(displayName):用于畫布上顯示的名稱;
端口(port):用于索引串口設(shè)備;
波特率(baudrate):串口波特率參數(shù);
數(shù)據(jù)位(bytesize):數(shù)據(jù)位參數(shù);
校驗(yàn)位(parity):串口奇偶校驗(yàn)位參數(shù);
停止位(stopbits):串口停止位參數(shù);
響應(yīng)超時(shí)(respond_timeout):通信應(yīng)答超時(shí)時(shí)間。
* 配置節(jié)點(diǎn)(config類型)只存在節(jié)點(diǎn)屬性,不具備輸入輸出功能。
1.2 th_transmitter_in
通用 Modbus RTU 溫濕度變送器節(jié)點(diǎn),負(fù)責(zé)讀取指定從機(jī)設(shè)備溫濕度數(shù)據(jù)。1.2.1 屬性
名稱(name):節(jié)點(diǎn)名稱,用于索引查找本節(jié)點(diǎn);
顯示名稱(displayName):用于畫布上顯示的名稱;
modbus配置參數(shù)(modbus):綁定一個(gè)Modbus RTU配置節(jié)點(diǎn);
從機(jī)ID(slave_id):從機(jī)(服務(wù)端)地址;
溫度寄存器地址(temp_addr):溫度數(shù)據(jù)所在的寄存器地址;
濕度寄存器地址(humidity_addr):濕度數(shù)據(jù)所在的寄存器地址;
輸出周期(period):輪詢讀取寄存器數(shù)據(jù)的周期。
1.2.2 輸入
* pump類型節(jié)點(diǎn)通常不具備數(shù)據(jù)輸入。
1.2.3 輸出
- slaveID:從機(jī)(服務(wù)端)地址,通常用于后級(jí)節(jié)點(diǎn)區(qū)別設(shè)備;
- temperature:溫度數(shù)據(jù),float 類型;
- humidity:濕度數(shù)據(jù),float 類型。
1.3 to_json
由于 th_transmitter_in 節(jié)點(diǎn)是以 temperature 和 humidity 屬性輸出數(shù)據(jù),不能直接使用 log 節(jié)點(diǎn)輸出到調(diào)試窗口,所以我們通過 to_json 將屬性轉(zhuǎn)換成 json 數(shù)據(jù)進(jìn)行輸出。1.3.1 屬性
名稱(name):節(jié)點(diǎn)名稱,用于索引查找本節(jié)點(diǎn);
顯示名稱(displayName):用于畫布上顯示的名稱;
模板(template):可指定字符進(jìn)行替換操作。
1.3.2 輸入
msg:用于轉(zhuǎn)換的對(duì)象
1.3.3 輸出
payload:轉(zhuǎn)換后的 json 字符串?dāng)?shù)據(jù);
payloadType:數(shù)據(jù)類型,json;
payloadLength:數(shù)據(jù)長度。
2.采集測試
我們將溫濕度數(shù)據(jù)采集并打印到調(diào)試窗口,驗(yàn)證數(shù)據(jù)的正確性。
2.1 添加節(jié)點(diǎn)
添加 th_transmitter_in、to_json、log 節(jié)點(diǎn)到畫布上。
2.2 配置節(jié)點(diǎn)
雙擊 th_transmitter_in 節(jié)點(diǎn),打開屬性面板。
選擇“添加新的 modbus_master_rtu 節(jié)點(diǎn)”,點(diǎn)擊編輯配置,進(jìn)入配置節(jié)點(diǎn)屬性面板。
端口:Uart1
波特率:9600
數(shù)據(jù)位:8bits
校驗(yàn)位:None
停止位:1bits
響應(yīng)時(shí)間:0
完成串口參數(shù)配置,回到 th_transmitter_in 配置界面。
從機(jī)ID:1
溫度寄存器地址:0
濕度寄存器地址:1
輸出周期:1000
可以看到已經(jīng)創(chuàng)建了一個(gè)新的配置節(jié)點(diǎn),名為 modbus_master_rtu。同時(shí)配置傳感器從機(jī)地址和寄存器地址,點(diǎn)擊完成,完成節(jié)點(diǎn)配置。
* 傳感器從機(jī)ID、寄存器地址可根據(jù)實(shí)際產(chǎn)品手冊(cè)進(jìn)行配置。
2.3 繪制流圖
連接 th_transmitter_in、to_json、log 節(jié)點(diǎn)。
2.4 下載驗(yàn)證
確保硬件正確連接。
選擇流圖下載接口,并點(diǎn)擊運(yùn)行按鈕。
完成流圖下載,通過調(diào)試窗口可以看到讀回的傳感器數(shù)據(jù)。
二、異常警報(bào)
這里以實(shí)現(xiàn)對(duì)高溫、低溫2個(gè)閾值的監(jiān)測,作為異常警報(bào)條件,以一個(gè)紅色LED作為警報(bào)提示。此處,需要用到 fscript、led 2個(gè)節(jié)點(diǎn)來實(shí)現(xiàn)異常警報(bào)業(yè)務(wù)。
* fscript、led 節(jié)點(diǎn)使用可參考以往教程。
1. 添加節(jié)點(diǎn)添加 fscript、led 節(jié)點(diǎn)到畫布上。
2. 配置節(jié)點(diǎn)
雙擊 fscript 節(jié)點(diǎn),打開屬性面板,這里需要配置 Initialize、Function 2個(gè)階段的腳本。
/* 初始化高溫預(yù)警環(huán)境變量*/
global.high_temp = 30
/* 初始化低溫預(yù)警環(huán)境變量*/
global.low_temp = 15
在腳本加載階段,初始化了2個(gè)變量,分別為 high_temp 和 low_temp,用于保存高溫預(yù)警和低溫預(yù)警的溫度判定值。
此處使用 global 對(duì)象的屬性來做為變量,相當(dāng)于全局的環(huán)境變量。后續(xù)可以通過其他腳本來訪問和修改此2個(gè)變量,為后續(xù)可以動(dòng)態(tài)修改這2個(gè)參數(shù)做準(zhǔn)備。
/* 當(dāng)溫度大于高溫閾值 或 低于低溫閾值,則屬于異常 */
if (msg.temperature >= global.high_temp ||
msg.temperature <= global.low_temp) {
/* 點(diǎn)亮警報(bào)信號(hào) */
output.payload = 1
} else {
/* 熄滅報(bào)警信號(hào) */
output.payload = 0
}
腳本運(yùn)行階段,通過判斷輸入的溫度值 msg.temperature 是否超過預(yù)警值邊界,如超過,則向后級(jí)節(jié)點(diǎn)輸出有效預(yù)警信號(hào),否則輸出無效信號(hào)。
led 節(jié)點(diǎn)配置為紅色LED。
3.繪制流圖
連接 th_transmitter_in、fscript、led節(jié)點(diǎn)。
4. 下載驗(yàn)證
選擇流圖下載接口,并點(diǎn)擊運(yùn)行按鈕。
完成流圖下載,通過外部暖風(fēng)機(jī)加熱周圍空氣,可以看到溫度值逐漸上升。
當(dāng)超過高溫預(yù)警值(30℃)時(shí),紅色LED被點(diǎn)亮。
三、云端監(jiān)控
云端監(jiān)控業(yè)務(wù),需要實(shí)現(xiàn)設(shè)備接入、上報(bào)數(shù)據(jù)、遠(yuǎn)程控制 3部分功能。
本項(xiàng)目,選擇同為 EsDA 組成部分的 ZWS(ZLG物聯(lián)網(wǎng)平臺(tái))作為云服務(wù)平臺(tái)。
* 可通過ZLG物聯(lián)網(wǎng)平臺(tái)教程深入學(xué)習(xí) ZWS 的應(yīng)用:
https://www.zlgcloud.com/index.html#/home/service
1.接入云端
登錄https://www.zlgcloud.com/
1.1 ZWS-創(chuàng)建設(shè)備
1.1.1 創(chuàng)建設(shè)備類型
打開設(shè)備類型管理頁面。
點(diǎn)擊添加類型。
選擇basic模板,并將新設(shè)備類型命名為iot_mpc_zc1 。
點(diǎn)擊確定,完成設(shè)備類型的創(chuàng)建。
1.1.2 添加設(shè)備
打開設(shè)備列表頁面。
點(diǎn)擊添加設(shè)備。
選擇新建的 iot_mpc_zc1 類型,并將設(shè)備的名稱和ID命名為 mpc_zc1_0。
*設(shè)備名稱和設(shè)備ID并不一定要一致,此處僅為了方便描述。
點(diǎn)擊保存,完成設(shè)備添加。
返回設(shè)備列表。
可以在設(shè)備列表中看到新添加的設(shè)備,并且設(shè)備處于離線狀態(tài)。
1.2 ZC1-連接云端
接入 ZWS 并上報(bào)數(shù)據(jù)需要使用到 zws_iot、zws_iot_data_out 2個(gè)節(jié)點(diǎn)。
1.2.1 zws_iot
zws_iot 配置節(jié)點(diǎn),屬于隱式節(jié)點(diǎn),不會(huì)被顯示在畫布中,需要配套對(duì)應(yīng)的功能節(jié)點(diǎn)一起使用,主要用于配置 ZWS 服務(wù)所需參數(shù),并提供與 ZWS 云平臺(tái)通信的服務(wù)
1.2.1.1 屬性
名稱(name):節(jié)點(diǎn)名稱,用于索引查找本節(jié)點(diǎn);
顯示名稱(displayName):用于畫布上顯示的名稱;
是否連接(connection_status):使能立即連接;
設(shè)備類型(dev_type):ZWS 三元組-設(shè)備類型;
設(shè)備ID(dev_id):ZWS 三元組-設(shè)備ID;
設(shè)備密鑰(dev_secret):ZWS 三元組-設(shè)備密鑰;
固件版本(firmware_version):設(shè)備固件版本,產(chǎn)品自定;
設(shè)備心跳周期(keep_alive_interval):心跳周期。
*配置節(jié)點(diǎn)(config類型)只存在節(jié)點(diǎn)屬性,不具備輸入輸出功能。
1.2.2 zws_iot_data_out
ZWS 數(shù)據(jù)上報(bào)節(jié)點(diǎn),提供ZWS數(shù)據(jù)點(diǎn)上報(bào)服務(wù)。
1.2.2.1 屬性
- 名稱(name):節(jié)點(diǎn)名稱,用于索引查找本節(jié)點(diǎn);
- 顯示名稱(displayName):用于畫布上顯示的名稱;
- 設(shè)備配置(config):綁定一個(gè) zws_iot 配置節(jié)點(diǎn);
- 數(shù)據(jù)上報(bào)方式(output_type):選擇上報(bào)數(shù)據(jù)方式;
- 目標(biāo)鍵值對(duì)(key_names):指定上報(bào)的數(shù)據(jù)點(diǎn)名稱。
1.2.2.2輸入
payload:當(dāng)上報(bào)方式為 RAW 類型時(shí)有效;
其他屬性:當(dāng)與 key_names 匹配時(shí)有效。
① 添加節(jié)點(diǎn)
添加 zws_iot_data_out 節(jié)點(diǎn)到畫布上。
② 配置節(jié)點(diǎn)
雙擊 zws_iot_data_out 節(jié)點(diǎn),打開屬性面板。
選擇“添加新的 zws_iot 節(jié)點(diǎn)”,點(diǎn)擊編輯配置,進(jìn)入配置節(jié)點(diǎn)屬性面板。
是否連接:conncected
設(shè)備類型:iot_mpc_zc1
設(shè)備ID:mpc_zc1_0
設(shè)備密鑰:以個(gè)人創(chuàng)建的設(shè)備密鑰為準(zhǔn)
* 只需配置立即連接和ZWS三元組(類型、ID、密鑰)即可,其他默認(rèn)。三元組信息必須與云端設(shè)備一致。
完成 zws_iot 參數(shù)配置,回到 zws_iot_data_out 配置界面。
選擇創(chuàng)建的配置 zws_iot,其他參數(shù)保持默認(rèn)。
③ 繪制流圖連接 th_transmitter_in、zws_iot_data_out節(jié)點(diǎn)。
④ 下載驗(yàn)證
選擇流圖下載接口,并點(diǎn)擊運(yùn)行按鈕。
完成流圖下載,等待片刻,可以從ZWS平臺(tái)看到設(shè)備已經(jīng)上線。
2. 上報(bào)數(shù)據(jù)
ZWS 平臺(tái)需要配置與設(shè)備上報(bào)的數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)點(diǎn),才能正確展示接收到的數(shù)據(jù)內(nèi)容。
2.1 ZWS-添加數(shù)據(jù)點(diǎn)2.1.1 添加溫度數(shù)據(jù)點(diǎn)打開設(shè)備類型頁面。點(diǎn)擊編輯 iot_mpc_zc1 類型。
點(diǎn)擊添加新數(shù)據(jù)點(diǎn)。
添加溫度數(shù)據(jù)點(diǎn),點(diǎn)擊保存。
2.1.2 添加濕度數(shù)據(jù)點(diǎn)
繼續(xù)添加濕度數(shù)據(jù)點(diǎn)。2.2 ZC1-上報(bào)溫濕度
要在ZWS云平臺(tái)正確顯示出上報(bào)的數(shù)據(jù),則需要上報(bào)與添加的的數(shù)據(jù)點(diǎn)匹配的數(shù)據(jù)。
2.2.1 配置節(jié)點(diǎn)
雙擊 zws_iot_data_out 節(jié)點(diǎn),打開屬性面板。
選擇 Key_Values 上報(bào)方式,同時(shí)配置 temperature,humidity 2個(gè)鍵名。
* temperature,humidity 鍵名必須與ZWS數(shù)據(jù)點(diǎn)一致。2.2.2 下載驗(yàn)證
保存并下載流圖。
完成流圖下載,等待設(shè)備上線。
進(jìn)入設(shè)備詳情。
查看實(shí)時(shí)數(shù)據(jù)。
可以看到,溫度、濕度數(shù)據(jù)已經(jīng)可以正確上報(bào)。
至此,已經(jīng)完成了溫濕度采集、異常警報(bào)、數(shù)據(jù)上報(bào)等業(yè)務(wù),將在后續(xù)章節(jié),繼續(xù)完成遠(yuǎn)程控制、風(fēng)機(jī)降溫、云端組態(tài)等業(yè)務(wù)。
最后整理已完成流圖,如下:
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2912文章
44855瀏覽量
375473
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論