13. 物聯網案例 10:家居健康監察系統

難度:level auto_fit

13.1. 目標


製作一個透過屋內傳感器收集健康相關數據並進行分析監察的家居健康監察系統。

13.2. 背景


甚麼是家居健康監察系統?

家居健康監測的概念是追蹤用戶家中各種環境參數的狀況。對於室內環境而言,分析居家舒適度的重要參數包括溫度、濕度、PM2.5、二氧化碳 (CO2) 和揮發性有機化合物 (VOC)。通過監測溫度和濕度,我們可以評估居家舒適度。過高的溫度或過低的濕度都會引致不舒適。

運作原理

本案例採用整合式 DHT11 溫濕度傳感器。 它會持續追蹤房間的溫度、濕度和室內空氣品質 (IAQ) 值,並將數據顯示在 OLED 螢幕上,同時上傳到 Thingspeak 平台以便進一步分析。

auto_fit

了解更多:什麼是 IAQ?

室內空氣品質 (IAQ) 是指建築物內及其周圍的空氣質素,尤其與建築物居住者的健康和舒適度息息相關。了解和控制常見的室內污染物可以降低罹患室內健康問題的風險。 重要的參數包括溫度、濕度、PM2.5、二氧化碳 (CO2) 和揮發性有機化合物 (VOC)。

了解更多:如何確定 IAQ 分數?

在 Smarthon 智能家居IoT創作套裝中,我們使用溫度和濕度這兩個參數來評定房間的舒適度 (IAQ 評分)。下表顯示了最舒適的溫度 (20-22°C) 和濕度 (40-70%) 值。

auto_fit

因此,較好的溫度和濕度範圍會帶來較高的 IAQ 評分,兩者的 IAQ 評分平均值可以確定房間的舒適度。換句話說,使用 Smarthon 的擴展來編程,可以得到溫度和濕度 IAQ 評分的平均值。

13.3. 所用部件


pic_90

13.4. 組裝步驟


步驟一

這個案例以「開放式模型」作為房子的基礎。

auto_fit

步驟二

對準 A、B2 和 B3 模型上的孔,將 E1和 E4 模型組裝到 A 模型上。

pic_90

步驟三

用 M2*10 毫米螺絲及螺母把 OLED 顯示屏安裝到 E4 模型上。

pic_90

步驟四

用 M4*10 毫米螺絲及螺母把溫濕度傳感器安裝到 E4 模型上,連接線穿過旁邊的孔。

pic_90

步驟五

我們來製作一張沙發。將 K3 模型裝到 K1 模型的兩側。

pic_90

步驟六

將 K2 模型與 K1-K3 模型組裝到一起。

pic_90

步驟七

把沙發放到 E4 模型前面。

pic_90

步驟八

組裝完成!

pic_90

13.5. 線路連接


  1. 連接溫度及濕度傳感器到 P0 端口

  2. 把蜂鳴器開關向上撥以斷開蜂鳴器

  3. 使用延長線連接擴展 OLED顯示屏到 I2C端口

pic_80

13.6. 物聯網(Thingspeak)


步驟一. 建立 Thingspeak 頻道

  • 前往 Thingspeak 建立帳戶然後建立頻道 pic_90

步驟二. 取得頻道 API

  • 建立頻道之後,能取得 Write API Key pic_90

13.7. 編程(MakeCode)


步驟一. 初始化OLED、IoT:bit;連接WiFi;建立並初始化變數

  • 當啟動時加入OLED 初始化寬128高64

  • 加入初始化IoT:bit TX P16 RX P8

  • 加入連接到 WiFi 名稱 密碼並輸入 WiFi 名稱和密碼

  • 建立變數temperaturehumidityiaq_score,並初始化為 0 pic_70

步驟二. 檢查 Wi-Fi 連線狀態

  • 放入一個當WiFi連接成功後

  • 在裡面加入顯示圖示勾號,以在連線後顯示勾號 pic_70

步驟三. 建立函式「check_condtion」

  • 建立一個函式並命名為check_condtion

  • 在裡面加入一個巢狀的如果-否則語句

  • 第一個條件是iaq_score < 20,裡面加入顯示字符串 Very uncomfortable

  • 第二個條件是iaq_score < 40,裡面加入顯示字符串 Uncomfortable

  • 第三個條件是iaq_score < 60,裡面加入顯示字符串 Discomfortable

  • 第四個條件是iaq_score < 80,裡面加入顯示字符串 Comfortable

  • 第五個條件是iaq_score 100,裡面加入顯示字符串 Very comfortable pic_60

步驟四. 讀取溫濕度傳感器數據

  • 重複無限次加入一個如果語句,條件設為WiFi 連接狀態以確保在上傳 Thingspeak 之前連接到網絡

  • 讀取溫濕度傳感器數值接口P0來讀取數據

  • 讀取 DHT11 數據後,使用以下三個擴展取得結果並設定到變數

  1. 變數 temperature 設為 取得溫度數值攝氏對應溫度

  2. 變數 humidity 設為 取得濕度數值對應濕度

  3. 變數 iaq_score 設為 取得室內空氣質素(IAQ)對應 IAQ 評分 pic_80

步驟五. 在顯示屏上顯示數據

  • 加入清除顯示以在每次刷新前清除顯示

  • 分別顯示三個變數,並加上文字說明

  1. 顯示字符串 字串組合 Temperature: temperature對應溫度

  2. 顯示字符串 字串組合 Humidity: humidity對應濕度

  3. 顯示字符串 字串組合 IAQ Score: iaq_score對應 IAQ 評分 pic_80

步驟六. 分析環境狀況

  • 執行函式check_condition來總結 IAQ 評分結果 pic_80

步驟七. 上傳到 Thingspeak

  • 發送到 Thingspeak key XXX 項目1數值 XXX ...將數據傳送至 Thingspeak,在空格填上 Thingspeak 頻道的 Write API Key 以及需要上傳的數據

  • 將數據上傳到 Thingspeak 後,加入暫停15000毫秒等待 15 秒,避免過於頻繁的傳輸,之後再開始另一次讀取和上傳。 pic_80

步驟八. 檢查 Thingspeak 上傳情況

  • 當上傳到Thingspeak後取得上傳結果以檢查上傳的情況

  • 加入新行以便觀看

  • 使用擴展上的StatusError_code來分別顯示一些文字說明

  1. 顯示字符串 字串組合 Thingseak: Status對應上傳狀態

  2. 顯示字符串 字串組合 Error: Error_code對應上傳失敗時的錯誤代碼 pic_70

完整答案

MakeCode: https://makecode.microbit.org/_0YKgcrDyVRpk

你可以從以下網頁中下載HEX檔案:

13.8. 結果


OLED 顯示屏上顯示溫度、濕度、IAQ 評分以及基於 IAQ 評分的環境狀況,並在上傳後顯示上傳情況。

auto_fit

13.9. 思考


Q1. 除了溫度和濕度之外,您認為家居健康監察系統還必須包含哪些要素?(例如 CO2 水平?PM2.5 值?)

Q2. 如果要在真正的家庭中使用,您認為系統還可以具備甚麼功能?(例如,當環境對健康不利時發出警報?)