如何建立一個室內空氣質量監(jiān)測器
如果你在辦公室工作,你…在辦公室里。不管是不是在你家里,我都要大膽猜測,它也是在室內——在室內長時間沒有良好通風的空間會導致空氣質量低(理論上是健康問題)。
現(xiàn)在,我不想傳播恐懼,讓你們都認為自己會因為吸入同事的呼氣而慢慢死亡。然而,我在這里展示一個簡單的方法來建立一個云連接的室內空氣質量系統(tǒng):
?各種Adafruit空氣質量傳感器。
?一個blue Notecard通過LTE連接將項目云連接起來。
?Adafruit IO將空氣質量數(shù)據(jù)可視化,并與其他服務集成。
?飛利浦Hue LED燈條,為低空氣質量警報提供實時視覺效果.
注意:這個項目最初出現(xiàn)在Adafruit Playground上。
硬件組成
讓我們從采購和組裝不同的硬件組件開始。
空氣質量傳感器來自Adafruit
Adafruit是我制作新項目原型時的首選組件來源。因此,受TJ VanToll項目的啟發(fā),我開始使用Adafruit SCD40傳感器來測量溫度、濕度和二氧化碳水平。
接下來,我想找到一種簡單的方法來測量VOC(揮發(fā)性有機化合物)的含量。Adafruit的SGP40氣體傳感器提供了這一點,支持的庫可以訪問“原始”氣體水平和輸出VOC指數(shù)的算法。
順便說一句,我還使用了一個7段顯示器來顯示最近計算的VOC指數(shù),本地:
來自blue的云連接
我知道我需要的不僅僅是在7段顯示器上顯示單個值的本地顯示。我想創(chuàng)建一個真正的云連接系統(tǒng),讓我可以使用像Adafruit IO這樣的云服務來可視化數(shù)據(jù),發(fā)送警報,并與其他“智能家居”設備進行交互。
這段旅程以布魯斯和筆記卡手機開始并結束。
雖然說到“cellular”這個詞可能會讓一些人感到害怕,但Blues通過將古老的AT命令語法隱藏在健壯的基于json的API后面來簡化cellular。更不用說,使用Notecard無需每月支付SIM卡費用——只需一次性支付硬件費用,包括在140多個國家/地區(qū)使用500MB的數(shù)據(jù)和服務。
主MCU和載波板
為了將所有組件組合在一起,我選擇使用基于stm32的主機MCU(與feather兼容的Blues Cygnet)和另一個blue提供的組件Notecarrier F。Notecarrier F提供了一個(物理)開發(fā)平臺,您可以在該平臺上安裝Notecard(基于feather的主MCU),并連接傳感器和其他外圍設備。
最終硬件結果
連接7段顯示器就像提供電源和連接地線,SDA和SCL線一樣簡單。由于STEMMA QT/Qwiic連接器的便利性,其他兩個Adafruit空氣質量傳感器通過幾根電纜連接:
寫入固件
我通常在編寫Arduino/C和CircuitPython之間來回切換。對于這個項目,我選擇了Arduino/C -只是因為CircuitPython對Blues Cygnet的支持還沒有完全準備好。然而,無論哪種方式,Adafruit傳感器庫和Blues Python或Blues Arduino sdk都提供了對兩種語言的強大支持。
完整的源代碼可以在GitHub上找到。然而,這里有一些亮點:
空氣質量傳感器數(shù)據(jù)
除了一些必要的儀式來初始化空氣質量傳感器,實際提取的值是幾個命令的問題:
蜂窩連接編碼
同樣,Blues使云連接這個項目變得非常容易。實際上,只需要兩個命令就可以將本地傳感器數(shù)據(jù)發(fā)送到云端。
我們數(shù)據(jù)的第一個目的地是Blues云服務Notehub,它作為Notecard的安全云代理,最終將收集到的傳感器數(shù)據(jù)路由到Adafruit IO。
1)使用樞紐。集合API:
的中心。set API告訴Notecard它應該向哪個Notehub云項目發(fā)送數(shù)據(jù)。
在設置了一個(免費的)Notehub項目后,你會得到一個全局唯一的ProductUID:
以及支持的代碼塊:
2)使用筆記。添加API
每次我們想要將積累的傳感器數(shù)據(jù)與云同步時,我們都會調用note。添加API。這將創(chuàng)建一個充滿我們所有傳感器數(shù)據(jù)的事件(或藍調術語中的注釋)。
結果數(shù)據(jù)顯示在Notehub項目中如下所示:
云連接
目前,我們正在本地收集傳感器數(shù)據(jù),并通過蜂窩定期將其發(fā)送到云端。
太酷了!
然而,現(xiàn)在我們需要對這些數(shù)據(jù)做一些有意義的事情,這就是Adafruit IO發(fā)揮作用的地方。這個云服務提供了一個慷慨的免費層,提供了一種非常簡單的方式來可視化數(shù)據(jù)(儀表板),創(chuàng)建警報(操作),甚至集成第三方服務(升級)。
Adafruit IO Feeds
設置Adafruit IO帳戶后,前往Feeds部分,為想要使用的每個數(shù)據(jù)元素創(chuàng)建一個feed:
藍調Notehub
接下來,我們需要回到Notehub創(chuàng)建一個路由,它將告訴Notehub如何將事件傳遞到Adafruit IO!
在Routes菜單選項中,選擇General HTTP/HTTPS Request/Response,它允許我們向Adafruit IO HTTP api發(fā)送數(shù)據(jù)。
安排好剩下的路線
1) URL
其中{username}是您的Adafruit IO用戶名,{group}是封裝提要的組名。(這可能是默認設置。)
2)在HTTP報頭下,您必須添加Adafruit IO密鑰(可在您的Adafruit IO帳戶中找到)。x - IO- key是名稱,您的Adafruit IO key是值。
3)在過濾器下,您將希望發(fā)送與此項目相關的傳感器數(shù)據(jù),并忽略Notecard發(fā)送的其他會話和健康信息。因此,在Notefiles部分下,選擇Selected Notefiles,然后選擇傳感器。qo(這是代碼中使用的Notefile的名稱)。
4)最后在Data部分,我們需要編輯或轉換從設備發(fā)送到Adafruit IO之前的JSON有效負載。每個云服務都有特定的數(shù)據(jù)格式,Adafruit IO也不例外!
實際上,我們需要創(chuàng)建一組鍵值對,每個要發(fā)送的數(shù)據(jù)元素對應一個鍵值對。之類的……
這是如何實現(xiàn)的呢?通過JSONata表達的魔力!JSONata允許您動態(tài)地轉換JSON對象。
提示:JSONata練習器是測試JSONata表達式的好方法!
下面是我使用的完整的JSONata表達式,以及前面提到的JSONata練習器中該表達式的圖像:
最后,保存路由(確保已啟用)并觀察下一個事件。您應該在事件視圖的狀態(tài)列下看到一個綠色的小復選框,它告訴您事件已成功路由到Adafruit IO!
Adafruit IO儀表板
現(xiàn)在我們有數(shù)據(jù)流入Adafruit IO,讓我們創(chuàng)建一個儀表板。
前往Adafruit IO中的儀表板菜單選項并創(chuàng)建您的第一個儀表板。
使用提供的直觀UI,為每個提要創(chuàng)建一個或多個塊。例如,使用VOC指數(shù)數(shù)據(jù)饋送,我創(chuàng)建了一個顯示最近讀數(shù)的儀表和一個顯示歷史讀數(shù)的折線圖:
現(xiàn)在,對要可視化的每個數(shù)據(jù)元素重復前面的步驟。就是這么簡單!
Adafruit IO Actions
接下來,我認為每當我的VOC指數(shù)超過100(通常是空氣質量從好到不太好!)時,收到電子郵件提醒會很方便。
前往Adafruit IO中的Actions菜單選項。
使用表單或“Blockly”編輯器創(chuàng)建一個新動作(感覺有點像在Scratch中編程!)
以下是我的郵件提醒在Blockly編輯器中的樣子:
警報呢?相當吸引人:
Adafruit IO Power-Ups
現(xiàn)在是時候認真對待Adafruit IO power - up了!
這些是與第三方服務(如IFTTT、Zapier和SMS)的健壯集成,用于消息傳遞(以及其他服務)。
就我個人而言,我認為使用IFTTT與我的飛利浦Hue LED燈條集成并在我當?shù)氐目諝赓|量(VOC指數(shù))出現(xiàn)問題時提供一些更戲劇性的反饋將是非常簡潔的!
讓我們把這個設置好。
1)在Adafruit IO的Power-Ups菜單中選擇IFTTT。
2)登錄您的IFTTT帳戶并創(chuàng)建一個applet。
3) applet的第一步是監(jiān)視來自Adafruit IO的監(jiān)視器。搜索“Adafruit”,并根據(jù)需要填寫表格,將顏色設置為綠色(例如,VOC值<= 100)。
4)接下來,在“然后”部分,你需要連接到你的Hue帳戶,并為你的Hue燈選擇“改變顏色”動作。
5) IFTTT小程序應該就完成了!
您將需要重復此過程來設置紅色,更改“if”語句,使其在VOC值為bbb100時觸發(fā)。
注意:IFTTT的免費層每小時只輪詢你的Adafruit IO feed一次。你可以升級到他們的“專業(yè)”層,以獲得更頻繁的投票。
最終結果
結果呢?巨大的成功!
我辦公室里的揮發(fā)性有機化合物含量自然在90到130之間,但我硬編碼了一些揮發(fā)性有機化合物的值,以便快速演示燈光的變化:
如果你能認出那只貓,那就加分了!
因此,我希望你已經(jīng)看到,構建一個真正的云連接產(chǎn)品是多么容易,它可以:
?測量室內空氣質量。
?將這些數(shù)據(jù)發(fā)送到云端。
?在儀表板上可視化傳感器數(shù)據(jù)。
?當空氣質量惡化時,發(fā)送電子郵件提醒。
?在本地智能家居設備上可視化結果。
多虧了bluesnotecard和Adafruit IO的簡單(和強大),這個項目只花了我?guī)讉€小時就拼湊起來了——我希望你也能這樣做!
在這里開始使用Adafruit IO,并在這里獲得您自己的藍調入門工具包。入門套件包括STM32主機,Notecarrier F和Notecard Cell+WiFi。也請記住,這個項目的完整源代碼可以在GitHub上找到!
本文編譯自hackster.io