20. 場景4 : 智能物聯網家居¶
Level :

20.1. 介紹¶
智慧物聯網家居 利用眾多網路資源是物聯網設備的優勢,透過網路可以監控智慧家庭。
此方案整合了以下五個功能:
智能數位鬧鐘(案例9)
家居健康監察系統(案例 10)
廚房火災警報系統(案例 11)
智能手機彩色燈泡(案例 12)
語音聲控風扇(案例 13)
20.5. 硬體連接¶
將 OLED 顯示器連接到 I2C。
將溫度濕度傳感器 DHT11 連接到 P2。
將多功能LED連接到P7。
將火焰感應器連接到 P1。
拉下蜂鳴器開關連接蜂鳴器。
將馬達風扇連接到 P9。

20.6. 程式設計(MakeCode)¶
完整解決方案
MakeCode: https://makecode.microbit.org/S48632-70007-18098-20011
您也可以從以下網址下載程序:
20.7. 逐步教程¶
第一部分:設定智能數位鬧鐘(案例 9 修訂版)¶
1.1 硬體連接
將 OLED 顯示器連接到 I2C。

1.2 編程(MakeCode)
步驟 1. 初始化 OLED、IoT:bit 並連接 WiFi,建立變數
啟動時,拖動 LED 指示燈不會亮起。
將 OLED 螢幕初始化為寬度 128,高度 64。
拖動初始化 IoT:位元 TX P16 RX P8。
設定 Wi-Fi 的 ssid 和密碼

步驟 2. WiFi 連線後顯示裝置 ID
將「已連接 WiFi」模組拖曳到編輯器中。
在程式碼區塊內新增顯示字串 Device_ID。

步驟 3. 取得 NTP 時間
拖動取得香港目前 NTP 時間(UTC+8)以取得 NTP 時間。
暫停 1 秒。

步驟 4. 在顯示屏上顯示 NTP 時間
將 當取得NTP網絡時間拖動到編輯器。
取得到 NTP 時間後,此程式碼區塊中的程式將運行。
清除顯示。
拖動顯示字符串「ID: 」裝置 ID。
使用 新行顯示字符串顯示格式化的時間字串組合:時間:小時:分鐘:秒。

第一部分解答:

MakeCode: https://makecode.microbit.org/S87148-59257-05819-14544
您也可以從以下網址下載程序:
第一部分結果
連接到網路後,圖示將開啟並開始取得 NTP 時間。

第二部分:建立家庭健康資料監測系統(案例 10 修訂版)¶
2.1 硬體連接
將溫度濕度傳感器 DHT11 連接到 P2。

2.2 物聯網設定(ThingSpeak)
步驟 1. 建立 Thingspeak 頻道
前往 ThingSpeak 建立帳戶並建立頻道。

步驟 2. 取得通道 API
建立新頻道後,取得 API 寫入權限。

2.3 程式設計(MakeCode)
步驟 1. 設定 upload_thingspeak 函數
建立一個名為 upload_thingspeak 的新函數。
將 thingspeak_counter 的值增加 1。
如果WiFi已連接,則,
在 if 迴圈中,建立一個新的變數thingspeak_ counter,如果 thingspeak_counter > 15,則執行
讀取引腳 P2 處的溫度和濕度傳感器。
透過發送 Thingspeak 金鑰 XXXX 欄位 1 值 XXX 的方式將資料傳送到 Thingspeak…,填寫 Thingspeak 通道中的寫入 API 金鑰,並上傳所需值。
Snap 將 thingspeak_counter 設定為 0。

步驟 2. 更新收到的 NTP 訊號
接收到 NTP 時,拖動 顯示字串連線「溫度:」 取得溫度 °C。
拖動 顯示字符串組合 “Humidity: ” 取得濕度。
拖動顯示字符串組合 “IAQ: ” 取得 IAQ 分數。

步驟 3. 呼叫 upload_thingspeak
調用upload_thinkspeak

第二部分完整解答:

MakeCode: https://makecode.microbit.org/S12665-25593-41211-03672
您也可以從以下網址下載程序:
第二部分結果
OLED螢幕顯示溫度、濕度、室內空氣品質評分以及基於室內空氣品質評分的環境狀況。上傳完成後,顯示上傳資訊。

第三部分:設定廚房火災警報系統(案例 11 修訂版)¶
3.1 硬體連接
將火焰感應器連接到 P1。
拉下蜂鳴器開關連接蜂鳴器。
將多功能LED連接到P7。

3.2 物聯網設定(IFTTT)
造訪 https://ifttt.com/ , 建立小程式(如果啟用 Webhook,則啟用通知)

前往“我的服務”>“Webhooks”,選擇“文件”。如下複製您的 Webhooks 金鑰:

可選:使用電子郵件作為通知方式
在 THEN 欄位中,搜尋“電子郵件”,並用它來取代上一步驟中的“通知”。

3.3 程式設計(MakeCode)
步驟 1. 設定多 LED
啟動時,將燈條設定為 NeoPixel,接腳 P7 設定為 1 個 LED,RGB 格式為 (GRB 格式)。
在「開始」事件中,建立一個新的變數 flame,並將變數flame設為 false。

步驟 2.設定函數 flame_detection
新增一個名為 flame_detection 的新函數。
在函數內部,加入一個 if-else 語句,條件為 WiFi 已連線? ,以檢查連線狀態。
在 if 迴圈中,加入一個 if 語句,條件為「在引腳 P1 處偵測到火焰」= true,以辨識火焰。
彈奏高音B音半拍,直到結束。
strip顯示紅色。
暫停 100 毫秒。
strip顯示顏色為黑色。
暫停 100 毫秒。
如果 flame = false,則 ,
在 if 語句中,新增 發送到IFTTT事件名稱 fire。
在 if 循環之外,將 flame 設為 true。
在 else 語句中,將 flame 設定為 false。

步驟 3. 呼叫 fire_detection 函數
在重復無限次裡調用 fire_detection。

第三部分完整解答:

MakeCode: https://makecode.microbit.org/S14841-45665-70694-83433
您也可以從以下網址下載程序:
第三部分結果
當火焰傳感器偵測到火焰源時,會觸發 LED 閃爍,發出警報聲,並將警告通知傳送到 IFTTT。


第四部分:智能手機彩色燈泡(案例 12 修訂版)¶
物聯網設定(App Inventor 2)
步驟 1. 建立 APP 項目
在以下位置建立 APP inventor 帳戶:http://ai2.appinventor.mit.edu/ 。
建立一個新專案。

步驟二:設計應用程式佈局
在設計頁面中,將佈局元素從左側拖曳到編輯器中。
在這個範例中,使用了不同的按鈕、文字方塊、標籤和佈局控制項。
將該元素放置在你的路徑上。
每個元素都有自己的屬性,您可以根據自己的想法進行更改,例如背景顏色、字體大小、寬度、高度、對齊方式。
請記住將 Web 元素新增到編輯器中,它將用於發送命令。

步驟 3. 在應用程式中對元素進行編程
點擊右上角的按鈕切換到「模組」頁面。

根據功能需求目錄,在左側找到所需功能並將其放入編輯器中。
前往 buttonX 元素,找到 when buttonX.Click do 函數,將其放入編輯器(X 代表按鈕編號)。
前往 Web1 元素,找到設定 Web1.URL 的位置,放入 when buttonX.Click do 中。
到文字目錄,找到 join 和 「 「 元素,開始建立控制項 API。
控制 API 為:https://control.smarthon.cc/publish?id=ID&msg=MSG,其中 ID 和 MSG 分別表示 IoT:bit ID 和指令。
正確使用 join 函數將 API 的各個部分連接起來。
完成 API URL 後,使用 Web1 呼叫 Web1.Get 發送 API 指令。

4.2 編程(MakeCode)
步驟 1. 接收指令
在「收到 WiFi 訊號」事件中,放入一個嵌套的 if-else 語句,其中包含不同的條件。
將第一個條件設為 WAN_Command = Red,並將strip顯示為紅色。
在下一個 if 條件中,使用 WAN_Command = Green,並將strip顯示顏色設為綠色。
在下一個 if 條件中,使用 WAN_Command = Blue,並顯示藍色strip。

第四部分完整解答:

MakeCode: https://makecode.microbit.org/S84631-72656-71417-43792
您也可以從以下網址下載程序:
第四部分結果
透過APP發送顏色訊息後,燈光顏色會改變。

第五部分:設定智慧風扇語音控制(案例 13 修訂版)¶
5.1 硬體連接
將馬達風扇連接到 P9。

5.2 物聯網設定(Alexa / Google Assistant / Siri、雲端控制、IFTTT)
對於此案例,您可以使用三種不同的方法來設定物聯網部分:
關於亞馬遜 Alexa,您可以參考此連結: IoT Alexa of case 13
關於 Google Assistant,您可以參考此連結: IoT Google Assistant of case 13
關於 Siri,您可以參考此連結: IoT Siri of case 13
5.3 編程(MakeCode)
步驟 1. 更新接收 WiFi 指令
在「收到 WiFi 訊號」代碼區塊中,如果 WAN_Command = turn_on_fan,則執行下列操作:
然後,將馬達風扇連接至 P9 端口,風速為 1023。
如果 WAN_Command = turn_off_fan,則,
將馬達風扇連接至 P9 端口,風速為 0

第五部分完整解答:

MakeCode: https://makecode.microbit.org/S48632-70007-18098-20011
您也可以從以下網址下載程序:
第五部分結果
您可以使用語音控制風扇,透過 Alexa/ Google Assistant/ Siri 來開啟或關閉風扇。

