嵌入式智能物聯(lián)網(wǎng)設(shè)備,不僅要采集上報(bào)數(shù)據(jù),還應(yīng)該具備遠(yuǎn)程控制、邊緣計(jì)算、自動(dòng)響應(yīng)事件等能力,達(dá)到智能化、快響應(yīng)等效果。
簡(jiǎn)介
業(yè)務(wù)擴(kuò)展
本項(xiàng)目通過(guò)控制風(fēng)機(jī)轉(zhuǎn)動(dòng),帶動(dòng)空氣流動(dòng),從而達(dá)到降溫的效果,這也是最常用的降溫方案。常見于設(shè)備機(jī)柜、廠房等場(chǎng)景。
一、硬件連接
在原有的電路基礎(chǔ)上,增加了一個(gè)風(fēng)機(jī)驅(qū)動(dòng)電路,如下圖所示。
實(shí)物連接圖如下。
二、風(fēng)機(jī)基礎(chǔ)控制
風(fēng)機(jī)的控制根據(jù)所選風(fēng)機(jī)的類型,有多種方式,如直接DO開關(guān)、RS485通信控制等。此處選用DO輸出,直接控制風(fēng)機(jī)開關(guān)。
1. 節(jié)點(diǎn)介紹1.1 gpio_outgpio_out 節(jié)點(diǎn),提供了 GPIO 輸出節(jié)點(diǎn),可以根據(jù)需求輸出對(duì)應(yīng)電平信號(hào)。
1.1.1 屬性
-
名稱(name):節(jié)點(diǎn)名稱,用于索引查找本節(jié)點(diǎn);
-
顯示名稱(displayName):用于畫布上顯示的名稱;
-
GPIO序號(hào)(gpio_id):GPIO引腳ID;
-
模式(mode):GPIO輸出模式(推挽、開漏…);
-
初始狀態(tài)(init_stat):引腳初始輸出狀態(tài)。
1.1.2輸入
- msg.payload:指定輸出狀態(tài),0:低電平,1:高電平。
通過(guò)簡(jiǎn)單的腳本控制 gpio_out 節(jié)點(diǎn)驅(qū)動(dòng)外部風(fēng)機(jī)。
2.1 添加節(jié)點(diǎn)
在已有的流圖中添加 timer、fscript、gpio_out 節(jié)點(diǎn)到畫布中。
2.2 配置節(jié)點(diǎn)timer 配置如下,1s 周期輸出。
fscript 配置如下,保持輸出高電平。
gpio_out 配置如下。
- GPIO序號(hào)(gpio_id):P4.9;
- 模式(mode):push pull(推挽輸出);
- 初始狀態(tài)(init_stat):low(初始低電平)。
可以看到風(fēng)扇已經(jīng)被驅(qū)動(dòng)起來(lái)。
3. 風(fēng)機(jī)智能控制
風(fēng)機(jī)智能化控制,主要實(shí)現(xiàn)兩個(gè)基礎(chǔ)功能:- 根據(jù)高溫信號(hào),自動(dòng)啟動(dòng)進(jìn)行降溫;
- 支持手動(dòng)啟動(dòng)。
3.1.1 屬性
-
名稱(name):節(jié)點(diǎn)名稱,用于索引查找本節(jié)點(diǎn);
-
顯示名稱(displayName):用于畫布上顯示的名稱;
-
監(jiān)控節(jié)點(diǎn)(monitored_nodes):指定需要監(jiān)控的節(jié)點(diǎn)名稱(json格式)。
3.1.2 輸出
僅觸發(fā)向下一節(jié)點(diǎn)執(zhí)行,并不會(huì)傳遞任何數(shù)據(jù)。
3.2 流圖測(cè)試
/*初始化高溫預(yù)警環(huán)境變量*/
global.high_temp=30
/*初始化低溫預(yù)警環(huán)境變量*/
global.low_temp=15
/*高溫異常信號(hào)*/
global.high_temp_anomaly=false
/*低溫異常信號(hào)*/
global.low_temp_anomaly=false
3.2.1.2 運(yùn)行階段
增加對(duì)高低溫異常標(biāo)志的處理,如下所示。
/*實(shí)際溫度與高溫預(yù)警溫度溫差*/
temp_diff=msg.temperature-global.high_temp
/*溫度超過(guò)高溫預(yù)警值,標(biāo)記高溫異常*/
if(temp_diff>=0.3){
global.high_temp_anomaly=true
}elseif(temp_diff<=?-0.3)?{
global.high_temp_anomaly=false
}
/*實(shí)際溫度與低溫預(yù)警溫度溫差*/
temp_diff=msg.temperature-global.low_temp
/*溫度低于低溫預(yù)警值,標(biāo)記低溫異常*/
if(temp_diff<=?-0.3)?{
global.low_temp_anomaly=true
}elseif(temp_diff>=0.3){
global.low_temp_anomaly=false
}
/*輸出報(bào)警信號(hào)*/
if(global.high_temp_anomaly||global.low_temp_anomaly){
output.payload=1
}else{
output.payload=0
* 其中±0.3 的溫差幅度,是為了擴(kuò)大判定邊界,起到軟件濾波的效果,避免邊緣狀態(tài)引起頻繁開關(guān)的情況。
3.2.2 完善風(fēng)機(jī)控制邏輯為了后續(xù)更好地接收遠(yuǎn)程控制請(qǐng)求,需要將風(fēng)機(jī)控制模塊的業(yè)務(wù)邏輯進(jìn)一步完善。3.2.2.1 初始階段
聲明一個(gè) global.fan_control 全局控制標(biāo)志,用于控制風(fēng)機(jī)運(yùn)轉(zhuǎn)狀態(tài),總共包括以下3個(gè)狀態(tài):
-
on:手動(dòng)啟動(dòng)風(fēng)機(jī);
-
off:手動(dòng)關(guān)閉風(fēng)機(jī)
-
auto:根據(jù)溫度自動(dòng)控制。
腳本如下:
global.fan_control="auto"
3.2.2.2 運(yùn)行階段
根據(jù) global.fan_control 的值,執(zhí)行不同的風(fēng)機(jī)控制邏輯。
if(global.fan_control=="on"){
/*手動(dòng)啟動(dòng)*/
msg.payload=1
}elseif(global.fan_control=="off"){
/*手動(dòng)停止*/
msg.payload=0
}else{
if(global.high_temp_anomaly==true){
/*高溫異常自動(dòng)啟動(dòng)*/
msg.payload=1
}else{
/*常溫自動(dòng)停止*/
msg.payload=0
}
}
當(dāng)控制標(biāo)志不為 on 或 off 時(shí),即為 auto 模式,此時(shí),根據(jù) global.high_temp_anomaly 高溫異常標(biāo)志來(lái)決定是否啟動(dòng)風(fēng)機(jī)。
3.2.3 添加complete節(jié)點(diǎn)
配置如下,添加節(jié)點(diǎn)名稱 abnormal_monitoring。
同時(shí)為異常監(jiān)測(cè)節(jié)點(diǎn)添加一個(gè)節(jié)點(diǎn)名稱 abnormal_monitoring。
3.2.4 下載流圖
默認(rèn)控制模式為 auto,并且默認(rèn)高溫預(yù)警溫度為 30℃,通過(guò)外部熱風(fēng)機(jī)加熱空氣溫度,觀察運(yùn)行情況。
4.遠(yuǎn)程控制
上一期已經(jīng)實(shí)現(xiàn)了數(shù)據(jù)上報(bào)至物聯(lián)網(wǎng)云平臺(tái),本期為系統(tǒng)添加遠(yuǎn)程控制功能,其中包括3個(gè)控制命令:
- 高溫預(yù)警值配置(high_temp)
- 低溫預(yù)警值配置(low_temp)
- 風(fēng)機(jī)控制(fan_control)
4.1 云端添加命令
需要在物聯(lián)網(wǎng)云平臺(tái)(ZWS)添加所需控制命令,登錄到:
https://www.zlgcloud.com4.1.1 添加風(fēng)機(jī)控制命令打開設(shè)備類型頁(yè)面。
點(diǎn)擊編輯 iot_mpc_zc1 類型。
選擇設(shè)備控制設(shè)置頁(yè)面,并添加 fan_control 風(fēng)機(jī)控制命令,如下所示。
為風(fēng)機(jī)控制命令添加參數(shù),如下所示。
總共3個(gè)參數(shù)選項(xiàng) on、off、auto,與風(fēng)機(jī)控制腳本的控制標(biāo)志一致。4.1.2 添加高低溫預(yù)警配置命令
同樣的操作,繼續(xù)添加高溫、低溫預(yù)警配置命令,如下所示。
添加高溫預(yù)警命令
高溫預(yù)警命令參數(shù)
添加低溫預(yù)警命令
低溫預(yù)警命令參數(shù)
4.1.3 所有新增命令如下
4.2響應(yīng)遠(yuǎn)程控制
4.2.2 配置節(jié)點(diǎn)
為 zws_iot_data_in 綁定一個(gè)配置,選擇 zws_iot,與 zws_iot_data_out 使用同一個(gè)配置。
4.2.3 運(yùn)行測(cè)試點(diǎn)擊運(yùn)行,驗(yàn)證接收功能。
4.2.4 下發(fā)命令打開設(shè)備列表。
進(jìn)入設(shè)備詳情。
進(jìn)入設(shè)備控制頁(yè)面,并下發(fā)風(fēng)機(jī)啟動(dòng)命令,如下所示。
點(diǎn)擊發(fā)送,確保發(fā)送成功。
此時(shí),可以看到接收到云端下發(fā)的命令和參數(shù)。
4.2.5 添加解析節(jié)點(diǎn)
添加一個(gè)新的 fscript 節(jié)點(diǎn),用于解析云端命令。
4.2.6 添加解析腳本
if(msg.name=="high_temp"){
global.high_temp=f32(msg.value)
}elseif(msg.name=="low_temp"){
global.low_temp=f32(msg.value)
}elseif(msg.name=="fan_control"){
global.fan_control=msg.value
}else{
aborted=1
}
腳本通過(guò)判斷命令名稱 msg.name,來(lái)解析下發(fā)的命令,同時(shí)通過(guò) global 對(duì)象修改對(duì)應(yīng)的全局變量。同時(shí)為風(fēng)機(jī)控制數(shù)據(jù)流的 complete 節(jié)點(diǎn)添加一個(gè)監(jiān)測(cè)節(jié)點(diǎn)名稱 fan_control,如下所示。4.2.7 下載流圖
云端下發(fā)風(fēng)機(jī)啟動(dòng)命令,效果如下。
停止命令。
配置為自動(dòng)模式。
外部施加熱風(fēng),觀察風(fēng)機(jī)變化。
4.2.8 完成
至此,完成了遠(yuǎn)程控制、智能降溫等業(yè)務(wù)。為了可以更加深入的體會(huì) MPC-ZC1 和 EsDA 的應(yīng)用開發(fā),在下一期文章中,計(jì)劃將風(fēng)機(jī)更換為大功率的廠房風(fēng)機(jī)設(shè)備,真正地應(yīng)用到實(shí)際場(chǎng)景中。
整理本期流圖如下。
審核編輯:湯梓紅
-
控制系統(tǒng)
+關(guān)注
關(guān)注
41文章
6633瀏覽量
110681 -
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2909文章
44736瀏覽量
374480
原文標(biāo)題:EsDA MPC-ZC1 應(yīng)用——IoT 監(jiān)測(cè)控制系統(tǒng)(二)
文章出處:【微信號(hào):ZLG_zhiyuan,微信公眾號(hào):ZLG致遠(yuǎn)電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論