據估計,全球有近 90% 的家庭用上了電,這意味著當我們停電時,我們中近 90% 的人不可避免地會感到煩惱。
雖然大多數時候這只是一種煩惱,但失去電力(尤其是當我們在離開或睡著時沒有意識到它時)可能會導致災難性的后果。這可能意味著非常多不可估計的意外情況,從恢復供電時由于電流浪涌導致的設備損失,到危重護理環境中的生命線。
在這個項目中,我們將介紹如何構建我認為最簡單的全球可用、支持蜂窩的斷電檢測器,并配備由 Twilio 提供支持的即時 SMS 通知。
這個項目不需要用到以往曾頻繁使用的烙鐵,但它也并沒有因此變得更容易!
我們將使用Blues Wireless Cellular Notecard,將其連接到Blues Wireless Notecarrier-A,并使用新發布的 Notecard 固件功能,該功能允許在沒有主機微控制器的情況下自主報告 GPIO 狀態更改。
我們還需要一個帶 JST 連接器的小型 LiPo 電池(任何容量都可以)和一根微型 USB 電纜(帶墻上插座適配器)。
使用蜂窩網絡的原因
當發生停電時,我們不能依賴本地網絡硬件來啟動和運行(例如 Wi-Fi)。在這種情況下,蜂窩網絡是唯一可靠的選擇。
Blues Wireless Notecard 有Wi-Fi和蜂窩兩種版本。蜂窩模型在全球范圍內適用于LTE-M、NB-IoT 和 Cat-1 協議,與傳統的蜂窩物聯網產品不同,因為它們預付了 500MB 的數據和 10 年的全球蜂窩服務。
Notecard 成功的秘訣是,一旦你打開它,它就知道要去哪里。Notecard 不在公共互聯網上,只能通過私有 VPN 隧道進行通信(使其成為非常安全的設備)。不需要證書管理或手動密鑰輪換。
Notecard 與什么通信?它自動與Blues Wireless 云服務 Notehub.io 同步,后者又可以將數據安全地路由到幾乎任何云服務(如 AWS、Azure、Google Cloud)、RESTful 端點或支持 MQTT 的服務。
您只需打開 Notecard 的電源,使用基于 JSON 的 Notecard API中的命令之一,它就能夠與云進行通信。
構建一個斷電檢測器
如前所述,我們將使用 Notecard 和 Notecarrier-A。Notecarriers是開發板,可讓您使用 Notecard 輕松構建 IoT 解決方案的原型。Notecarrier-A 提供板載天線、JST 連接器、用于外圍設備的 Qwiic 連接器,并暴露了 Notecard 上的所有引腳。
首先,我們只需將 Notecard 插入 Notecarrier-A 上的 M.2 邊緣連接器:
然后我們將MAINNotecarrier-A 上的 u.fl 連接器連接到MAINNotecard 上的 u.fl。這允許使用 Notecarrier 上的板載蜂窩天線:
注意:您也可以選擇連接GPSu.fl 連接器,這樣您就可以使用蜂窩 Notecard 上的 GPS 模塊。
接下來,我們需要使用短跳線連接VUSB到AUX1Notecarrier-A。通過正確的card.auxNotecard API 請求,Notecard 可以自動報告任何AUX引腳 (1-4) 上的狀態變化。通過連接VUSB到AUX1,我們將自己設置為能夠將斷電的狀態變化報告到VUSB:
通過JST 連接器將 LiPo 電池連接到 Notecarrier 。LIPONotecarrier 的另一個優點是,當它通過 USB 供電時,它將保持連接的 LiPo 電池的電量:
最后,Notecarrier 可以通過 micro USB 電纜連接到您想要監控的墻上插座。
設置Notecard
Notecard 使用一種語言:JSON。
所有Notecard API 命令都是 JSON 格式,這也意味著任何可以讀寫字符串的編程語言也可以與Notecard 通信。如果您使用的是 MCU 或單板計算機,則有Blues Wireless 支持的適用于 Python、C/C++、Arduino 和 Go 的 SDK(以及社區支持的適用于Rust和.NET 的 SDK)。
使用dev.blues.io 提供的瀏覽器內終端,我們可以通過 Web Serial 的魔力直接連接到我們的 Notecard 并發出基于 JSON 的 API 命令:
嘗試發出一個示例命令,例如{“req”:“card.version”},從記事卡中獲取一些識別信息:
》 {“req”:“card.version”}
{
“body”: {
“org”: “Blues Wireless”,
“product”: “Notecard”,
“version”: “notecard-3.3.1”,
“ver_major”: 3,
“ver_minor”: 3,
“ver_patch”: 1,
“ver_build”: 14612,
“built”: “May 18 2022 11:21:51”
},
“version”: “notecard-3.3.1.14612”,
“device”: “dev:864475040543182”,
“name”: “Blues Wireless Notecard”,
“sku”: “NOTE-NBGL-500”,
“board”: “1.11”,
“api”: 3
}
注意:這是檢查 Notecard 固件版本的好機會!我們即將使用的新 API 功能至少需要固件 v3.3.1。
接下來,我們可以在 Notehub.io 上設置一個新的(免費)帳戶并創建我們的第一個 Notehub 項目。
在這個 Notehub 項目中,我們將看到來自 Notecard 的傳入數據,并使我們能夠使用 Twilio 發送 SMS 消息:
創建 Notehub 項目后,我們需要保存項目的唯一標識符(ProductUID ),例如:
com.your-company.your-name:power_outage
接下來,返回瀏覽器內終端,將此 Notecard 與我們剛剛創建的 Notehub 項目相關聯。為此,我們使用hub.set API:
{
“req”:“hub.set”,
“product”:“com.blues.rlauer:power_outage”,
“mode”:“continuous”
}
然后,我們可以使用hub.sync API 快速測試蜂窩連接,如下所示:
{“req”: “hub.sync”}
幾秒鐘后,我們就可以回到我們的 Notehub 項目,看到 Notecard 已經成功建立了蜂窩連接:
現在我們來看看好東西!我們可以使用card.aux API 的一項新功能,通過以下命令自動報告 AUX 引腳上的狀態變化:
{
“req”:“card.aux”,
“mode”:“gpio”,
“usage”:[
“input-pulldown”,
“off”,
“off”,
“off”
],
“sync”:true,
“file”:“power-outage.qo”
}
請求
數組中元素的順序usage對應于 AUX 引腳。所以數組中的第一項 == AUX1(我們的跳線連接到它)并且它使用input-pulldown選項將引腳設置為下拉輸入。
該“sync”:true參數告訴我們的 Notecard立即將任何狀態更改傳達給我們的 Notehub 項目。
最后,該“file”:“power-outage.qo”參數提供了一種在 Notehub 中識別/命名這些狀態更改事件的簡單方法。
測試
假設我們的硬件已插入并以正確的方式連接,并且我們的 Notecard 與 Notehub 成功通信,我們已準備好測試斷電!
只需從 Notecarrier-A 上拔下 micro USB 電纜即可。LiPo 電池將立即成為 Notecard 的活動電源,并且將記錄狀態更改。AUX1您可能會注意到 Notecard 的綠色 LED 亮起,讓您知道它正在與云通信并向 Notehub 發送便箋:
這很棒!在提供的 JSON 中,我們看到陣列中的 AUX1 引腳狀態為“低”,這意味著 USB 電源已丟失:
{“state”:[{“low”:true},{},{},{}]}
我們還可以重新插入 Notecarrier以查看恢復電源時狀態更改事件的樣子:
{“power”:true,“state”:[{“high”:true},{},{},{}]}
看到這個停電數據顯示在 Notehub 中,雖然很好,但并不能真正幫助我們采取任何行動。
我們的下一步是設置 SMS 消息,以便在停電幾秒鐘內收到一條短信。這是通過Notehub的路由功能實現的。
啟用短信功能
Notehub 路由讓您可以將數據路由到任何第三方云服務。這可能是 AWS、Azure 或 Google Cloud 等大型云,也可能是 Datacake、Ubidots、Adafruit.io 或 Losant 等物聯網平臺。它甚至可以是 MQTT 服務或通用 RESTful HTTP/S 服務,就像 Twilio 提供的消息端點一樣:
https://api.twilio.com/2010-04-01/Accounts/[twilio_account_sid]/Messages.json
請按照 Blues Wireless 提供的廣泛的 Twilio SMS 路由指南來啟用對 Twilio 的消息傳遞 API 的訪問。
正如您在該指南中看到的,我們可以對 Notehub 路由進行一些小的自定義,以更改發送的 SMS 消息。
首先,讓我們確保僅在將這些事件發送到 Notehub時才收到通知。為此,請確保在配置 Notehub 路由時提供的字段中輸入:power-outage.qopower-outage.qo
其次, Notehub允許您使用JSONata 動態轉換JSON。上面的 Twilio 指南中對此進行了概述,我將包含我使用的 JSONata 表達式:
“&Body=” & (body.state.low ? “Your power is out!
-
檢測器
+關注
關注
1文章
860瀏覽量
47654 -
Wireless
+關注
關注
0文章
78瀏覽量
19120
發布評論請先 登錄
相關推薦
評論