打開(kāi)/關(guān)閉閥門(mén)并監(jiān)控遠(yuǎn)程流量的開(kāi)源硬件
資料介紹
描述
監(jiān)測(cè)液體和氣體轉(zhuǎn)移很困難。
大多數(shù)用于處理傳輸?shù)默F(xiàn)代系統(tǒng)包括許多管道部分,每個(gè)管道都可以通過(guò)截止閥隔離或連接到系統(tǒng)的其他部分。
管理這些眾多的連接點(diǎn)是一項(xiàng)挑戰(zhàn),并且經(jīng)常需要技術(shù)人員手動(dòng)訪問(wèn)閥門(mén)以執(zhí)行關(guān)閉。為了避免這些手動(dòng)過(guò)程,設(shè)施管理人員希望能夠遠(yuǎn)程打開(kāi)和關(guān)閉閥門(mén),并能夠監(jiān)控整個(gè)系統(tǒng)中液體或氣體的流速。
這就是為什么我們?cè)?/font>Blues Wireless建立了一個(gè)基于蜂窩的項(xiàng)目來(lái)遠(yuǎn)程監(jiān)控液體通過(guò)管道的流速,以及一個(gè)網(wǎng)絡(luò)應(yīng)用程序,設(shè)施經(jīng)理可以使用它來(lái)根據(jù)需要打開(kāi)和關(guān)閉閥門(mén)。
在本文中,您將看到它是如何工作的。我們將從查看如何連接必要的硬件開(kāi)始,然后查看設(shè)備的固件和項(xiàng)目的 Web 應(yīng)用程序如何工作。
讓我們開(kāi)始吧。
組裝硬件
此構(gòu)建所需的主要硬件是:
- 一個(gè)電磁閥(可以打開(kāi)和關(guān)閉)。
- 流量計(jì)(用于測(cè)量流量)。
- 以及一種發(fā)送和接收數(shù)據(jù)的方式(這樣您就可以控制您的閥門(mén)并遠(yuǎn)程獲取流量計(jì)的讀數(shù))。
注意:如果您的項(xiàng)目只需要測(cè)量流量(不需要電磁閥),請(qǐng)在 GitHub 上查看我們的流量監(jiān)視器項(xiàng)目。
對(duì)于電磁閥,我們使用了DIGITEN 電磁閥;對(duì)于流量計(jì),我們使用了GREDIA 水流量傳感器;為了遠(yuǎn)程監(jiān)視和控制系統(tǒng),我們使用了Blues Starter Kit中可用的各種組件。
Blues 入門(mén)套件包括一個(gè)蜂窩 Notecard ,這是一個(gè)蜂窩和支持 GPS/GNSS 的設(shè)備到云數(shù)據(jù)泵,預(yù)裝了 500 MB 的數(shù)據(jù)和 10 年的蜂窩服務(wù)。
Notecard 本身是一個(gè)微型 30x35mm 系統(tǒng)模塊,帶有 M.2 連接器,允許我們通過(guò)蜂窩連接發(fā)送和接收必要的數(shù)據(jù)。
為了使 Notecard 易于集成到現(xiàn)有原型或項(xiàng)目中,Blues 入門(mén)套件還包括一個(gè)稱(chēng)為Notecarrier-F的主機(jī)板,其中包括一個(gè)用于 Notecard 的連接器,以及一組用于任何與 Feather 兼容的 MCU 的接頭.
Blues Starter Kit 的最后一部分是Blues Wireless Swan ,這是我們將用來(lái)運(yùn)行該項(xiàng)目固件的 MCU。Swan 是一款采用 STM32L4 的開(kāi)發(fā)板,具有 2MB 閃存和 640KB RAM。它支持 C/C++、Arduino 和 CircuitPython,并且與 Feather 兼容,因此可以很好地插入 Notecarrier-F。
要組裝 Blues Starter Kit 的硬件,您可以完成Notecard 的快速入門(mén)教程,之后您將擁有一個(gè)看起來(lái)像這樣的設(shè)置。
使用 Blues 入門(mén)套件,您可以將數(shù)據(jù)發(fā)送到(和從)云后端,我們將使用該功能來(lái)控制我們的電磁閥,并監(jiān)控流量計(jì)的讀數(shù)。
入門(mén)套件準(zhǔn)備就緒后,我們接下來(lái)使用下圖所示的接線(xiàn)圖將電磁閥和流量計(jì)連接到 Notecarrier-F。您不必完全按照我們所做的那樣進(jìn)行設(shè)置,但如果您這樣做,請(qǐng)務(wù)必查看我們正在使用的設(shè)備的完整列表。
無(wú)論您最終使用的硬件是什么,您都必須滿(mǎn)足以下要求才能使該項(xiàng)目的固件正常工作。
-
電磁閥的信號(hào)線(xiàn)必須連接到Notecarrier的
F_D6
引腳。固件使用此引腳打開(kāi)和關(guān)閉螺線(xiàn)管。 -
流量計(jì)的信號(hào)線(xiàn)必須連接到Notecarrier的
F_D10
引腳。固件使用此引腳從流量計(jì)讀取流量。 -
Notecarrier 的
F_D13
引腳必須連接到 Notecarrier 的ATTN
引腳。每當(dāng) Notecard 收到打開(kāi)或關(guān)閉電磁閥的命令時(shí),固件都會(huì)使用它來(lái)響應(yīng)中斷。
當(dāng)一切都放在一起時(shí),您的構(gòu)建應(yīng)該看起來(lái)像這樣。
如果您選擇使用外殼(例如我們?cè)谶@些圖片中使用的來(lái)自 Sixfab的外殼),您的項(xiàng)目可以放入一個(gè)易于安裝在大多數(shù)設(shè)施中的盒子中。
這樣一來(lái),您現(xiàn)在就擁有了通過(guò) Swan 控制電磁閥和監(jiān)控流量的所有連接方式。但要這樣做,您必須首先設(shè)置一個(gè)用于發(fā)送和接收數(shù)據(jù)的云后端。
云設(shè)置
Notecard 的一大優(yōu)點(diǎn)是它知道如何開(kāi)箱即用地將數(shù)據(jù)發(fā)送到云后端 Notehub。Notehub是一種托管服務(wù),旨在連接到 Notecard 設(shè)備并同步數(shù)據(jù)。
如果您正在跟進(jìn)并想自己構(gòu)建這個(gè)項(xiàng)目,則需要在 notehub.io 上設(shè)置一個(gè)免費(fèi)帳戶(hù),然后創(chuàng)建一個(gè)新項(xiàng)目。
創(chuàng)建項(xiàng)目后,請(qǐng)確保復(fù)制新項(xiàng)目的 ProductUID(請(qǐng)參見(jiàn)下面的屏幕截圖),因?yàn)槟枰摌?biāo)識(shí)符才能將 Notecard 連接到新的 Notehub 項(xiàng)目。
您將在整篇文章中了解有關(guān) Notehub 的更多信息,但現(xiàn)在您已經(jīng)設(shè)置了后端,接下來(lái)讓我們看看使閥門(mén)監(jiān)視器項(xiàng)目正常工作的代碼。
編寫(xiě)固件
該項(xiàng)目的固件負(fù)責(zé)與 Notecard、電磁閥和流量計(jì)進(jìn)行通信。
GitHub 上提供了實(shí)現(xiàn)這一目標(biāo)所需的完整源代碼,但我們將在此處展示最重要的部分。我們使用Platform.io構(gòu)建應(yīng)用程序,使用以 Swan 為目標(biāo)的 Arduino 應(yīng)用程序。(這里是讓所有這些在您的設(shè)備上運(yùn)行的說(shuō)明,其中包括添加您之前從 Notehub 復(fù)制的 ProductUID。)
管理閥門(mén)
固件必須做的最重要的事情是管理電磁閥的狀態(tài)。我們的電磁閥默認(rèn)是關(guān)閉的,固件必須在收到 Notecard 的命令時(shí)提供電源來(lái)打開(kāi)閥門(mén)。
為此,固件首先使用其 card.attn 請(qǐng)求武裝 Notecard 以接收中斷。
// Configure ATTN to watch for changes to data.qi.
req = notecard.newRequest("card.attn");
const char *filesToWatch[] = {"data.qi"};
int numFilesToWatch = sizeof(filesToWatch) / sizeof(const char *);
J *filesArray = JCreateStringArray(filesToWatch, numFilesToWatch);
JAddItemToObject(req, "files", filesArray);
JAddStringToObject(req, "mode", "files");
notecard.sendRequest(req);
注意:關(guān)于 Notecard 的一件很酷的事情是它的 API 都是基于 JSON 的——所以要使用 Notecard,您可以發(fā)送簡(jiǎn)單的 JSON 對(duì)象,并且(如果需要)接收返回的 JSON 對(duì)象作為響應(yīng)。
配備 Notecard 后,它會(huì)在收到我們稱(chēng)之為Note的任何時(shí)候收到中斷。Note 是包含開(kāi)發(fā)人員提供的正文的 JSON 對(duì)象,是 Notecard 與其 Notehub 后端之間的主要通信方式。
要發(fā)送筆記,您可以使用Notehub API 的 note.add 請(qǐng)求,該請(qǐng)求將數(shù)據(jù)發(fā)送到您的 Notehub 后端,后者又立即將該數(shù)據(jù)轉(zhuǎn)發(fā)到您的 Notecard 設(shè)備。
并且因?yàn)?Notecard 在收到某些 Notes 時(shí)準(zhǔn)備好中斷,固件可以響應(yīng)傳入的 Notes 并打開(kāi)或關(guān)閉電磁閥。具體來(lái)說(shuō),固件會(huì)查找具有以下 JSON 結(jié)構(gòu)的注釋。
"body": {
"state": "open" // or "close"
}
固件具有響應(yīng)該中斷并根據(jù)需要打開(kāi)或關(guān)閉電磁閥的功能。
// Toggle the valve's state. If open, close, If closed, open.
void valveToggle()
{
if (state.valveOpen) {
digitalWrite(VALVE_OPEN_PIN, LOW);
}
else {
digitalWrite(VALVE_OPEN_PIN, HIGH);
}
state.valveOpen = !state.valveOpen;
}
從流量計(jì)讀取數(shù)據(jù)
固件的下一個(gè)任務(wù)是監(jiān)控流量計(jì)的流量,并定期將該值報(bào)告給云端后端。
每當(dāng)有 2.25 mL 的流體通過(guò)時(shí),流量計(jì)的信號(hào)線(xiàn)就會(huì)發(fā)出脈沖。因此,作為第一步,我們配置一個(gè)中斷處理程序,每當(dāng)我們?cè)谛盘?hào)線(xiàn)上看到從低到高的轉(zhuǎn)換(“下降”)時(shí)都會(huì)觸發(fā)該中斷處理程序。
attachInterrupt(digitalPinToInterrupt(FLOW_RATE_METER_PIN), flowMeterISR,
FALLING);
在該中斷處理程序中,我們?cè)黾右粋€(gè)計(jì)數(shù)器來(lái)跟蹤發(fā)生了多少脈沖。
void flowMeterISR()
{
++state.flowMeterPulseCount;
}
最后,我們通過(guò)跟蹤自上次測(cè)量以來(lái)發(fā)生的脈沖數(shù)(默認(rèn)為每 500 毫秒)來(lái)計(jì)算以 mL/min 為單位的速率。
// Calculate the flow rate in mL/min.
uint32_t calculateFlowRate(uint32_t currentMs)
{
return 60000 * (state.flowMeterPulseCount * 2.25) /
(currentMs - state.lastFlowRateCalcMs);
}
一旦固件有了流量值,它的最終任務(wù)就是將該數(shù)據(jù)發(fā)送到云端后端。為此,固件使用 Notecard 的 note.add 請(qǐng)求來(lái)格式化和發(fā)送流量和閥門(mén)狀態(tài)(打開(kāi)或關(guān)閉)。
J *req = notecard.newRequest("note.add");
if (req != NULL) {
JAddStringToObject(req, "file", file);
JAddBoolToObject(req, "sync", true);
J *body = JCreateObject();
if (body != NULL) {
JAddNumberToObject(body, "flow_rate", flowRate);
if (state.valveOpen) {
JAddStringToObject(body, "valve_state", "open");
}
else {
JAddStringToObject(body, "valve_state", "closed");
}
JAddItemToObject(req, "body", body);
}
notecard.sendRequest(req);
}
此時(shí),如果您將固件閃存到您的設(shè)備,并開(kāi)始讓水流過(guò)您的系統(tǒng),您將開(kāi)始在 Notehub 項(xiàng)目的事件選項(xiàng)卡中看到流速讀數(shù)。
起初,您的所有讀數(shù)的流速都將為零,因?yàn)殡姶砰y開(kāi)始關(guān)閉并且不允許任何液體通過(guò)。
但是,如果您使用 Notehub API發(fā)送 data.qi 注釋以打開(kāi)閥門(mén),您將開(kāi)始看到以毫升/分鐘為單位的速率。
此時(shí),您現(xiàn)在擁有能夠打開(kāi)和關(guān)閉電磁閥以及從流量計(jì)進(jìn)行測(cè)量的固件。
這一切都有效!但是必須去 Notehub 查看你的數(shù)據(jù),并且必須使用 Notehub API 發(fā)送命令來(lái)打開(kāi)和關(guān)閉閥門(mén),這有點(diǎn)麻煩。因此,為了簡(jiǎn)化這些過(guò)程,我們還為該項(xiàng)目構(gòu)建了一個(gè) Web 應(yīng)用程序。
使用儀表板
該項(xiàng)目的 Web 應(yīng)用程序通過(guò)為設(shè)施管理員提供一個(gè)單一位置來(lái)查看和管理其系統(tǒng)中的所有設(shè)備,將所有內(nèi)容整合在一起。
除了能夠打開(kāi)和關(guān)閉閥門(mén)以及查看流量外,我們還允許設(shè)施管理員配置流量閾值,并在其設(shè)備的流量落入意外范圍時(shí)觸發(fā)警報(bào)。
注意:在我們的例子中,我們?cè)诰W(wǎng)絡(luò)應(yīng)用程序中顯示警報(bào),但您也可以使用 Notehub 在警報(bào)發(fā)生時(shí)發(fā)送 SMS 消息。有關(guān)詳細(xì)信息,請(qǐng)參閱我們的Twilio SMS 指南。
與此項(xiàng)目的所有內(nèi)容一樣,閥門(mén)監(jiān)控 Web 應(yīng)用程序是開(kāi)源的,可在 GitHub 上獲取,因此您可以隨意逐字使用它,或?qū)ζ溥M(jìn)行自定義以滿(mǎn)足您的需求。
Web 應(yīng)用程序會(huì)在您使用系統(tǒng)時(shí)實(shí)時(shí)更新,因此這是測(cè)試硬件和固件是否按預(yù)期工作的好方法,因?yàn)槟梢栽跍y(cè)試硬件時(shí)看到流量顯示在 Web 應(yīng)用程序中。
最后的想法
總體而言,該項(xiàng)目為任何執(zhí)行液體或氣體傳輸?shù)脑O(shè)施增加了自動(dòng)化和智能化。您可以利用物聯(lián)網(wǎng)的力量來(lái)自動(dòng)化閥門(mén)控制和流量監(jiān)控,而不是依賴(lài)技術(shù)人員執(zhí)行手動(dòng)操作。
該項(xiàng)目的固件和 Web 應(yīng)用程序是開(kāi)源的,因此請(qǐng)隨時(shí)在 GitHub 上查看它們并根據(jù)需要進(jìn)行調(diào)整。
還有一件事——這個(gè)項(xiàng)目是我們?cè)?Blues 構(gòu)建的一系列加速器的一部分,所以如果您感興趣,請(qǐng)查看完整列表,如果您有任何問(wèn)題,請(qǐng)訪問(wèn)我們的論壇。
- 開(kāi)源硬件-警燈
- 儲(chǔ)備油箱監(jiān)控和傳輸開(kāi)源硬件
- AirBits開(kāi)源硬件
- 閃爍的LED開(kāi)源硬件
- 農(nóng)作物監(jiān)控系統(tǒng)開(kāi)源硬件
- 智能積木開(kāi)源硬件
- 音箱開(kāi)源硬件分享
- HBus開(kāi)源硬件
- 打開(kāi)WiFi查找器開(kāi)源硬件
- 監(jiān)控門(mén)鈴開(kāi)源硬件
- 門(mén)鈴開(kāi)源硬件
- Arduino手表開(kāi)源硬件
- 基于Arduino硬件光控?zé)糁谱髻Y料 6次下載
- 主流的開(kāi)源硬件有哪些詳細(xì)資料說(shuō)明
- PLC在閥門(mén)遠(yuǎn)程監(jiān)控系統(tǒng)中的應(yīng)用
- 網(wǎng)絡(luò)監(jiān)控工具有哪些 網(wǎng)絡(luò)監(jiān)控用幾芯網(wǎng)線(xiàn) 802次閱讀
- 用小安派開(kāi)源硬件制作一個(gè)桌面天氣站 809次閱讀
- 尋找開(kāi)源硬件成功的觸發(fā)器 636次閱讀
- 手動(dòng)球閥的工作原理_手動(dòng)球閥的開(kāi)啟關(guān)閉過(guò)程 1.1w次閱讀
- 防爆電磁閥的工作原理_防爆電磁閥的作用 6040次閱讀
- 轉(zhuǎn)子流量計(jì)怎么使用 8988次閱讀
- 源創(chuàng)通信BPI-M1+ 開(kāi)源硬件開(kāi)發(fā)板介紹 2648次閱讀
- 閥門(mén)定位器 “現(xiàn)場(chǎng)”預(yù)防性維護(hù)檢查 1394次閱讀
- 幾種遠(yuǎn)程監(jiān)控通信方式的介紹_幾種遠(yuǎn)程監(jiān)控方式的比較 5907次閱讀
- 閥門(mén)遠(yuǎn)程控制系統(tǒng)的工作原理 1.2w次閱讀
- 閥門(mén)遠(yuǎn)程控制系統(tǒng)的工作原理及設(shè)計(jì) 1.1w次閱讀
- 三大主流開(kāi)源硬件對(duì)比:Arduino vs BeagleBone vs Raspberry Pi 6363次閱讀
- 開(kāi)源硬件究竟有多“Open”?看完這個(gè)你就清楚了 6939次閱讀
- 基于Qt的遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計(jì)方案 7623次閱讀
- 基于Android智能家居遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì) 5428次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開(kāi)發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多