17. 物聯網案例 08: 智能交通燈¶
程度:
* 詳情參考 附錄:物件與物件間的溝通
本案例分為兩部分:發送者及接收者。要完成這案例,需要兩套組裝。
17.1. 發送者¶
17.1.2. 背景¶
如何向其他 micro:bit 傳送訊號?
發送者和接收者連接至同一個頻道,容許 Wi-Fi 訊號在之間傳遞。當發送者發出”trafficjam”,接收者會因應訊號作出反應。
發出者運作原理
當光度傳感器長期回饋過低數值,這代表有車停在此處,即公路上有塞車發生。發送者傳送”trafficjam”至 microbit。反之則發送”nojam”。
17.1.3. 所有部件¶
17.1.4. 線路連接¶
連接光度傳感器和 IoT:bit 的 P0 端口。
*注意
根據顏色連接接線和端口
P0 內建線路予蜂鳴器。在使用 P0 端口予其他外接設備時遇上問題,建議查看位於 IoT:bit 右上的蜂鳴器開關狀態
17.1.5. 編程 (MakeCode)¶
步驟一. 啟動 OLED,IoT:bit 和連接至 Wi-Fi
啟動 OLED,IoT:bit 和連接至 Wi-Fi
宣告新變數
light2
並設值為 0
步驟二. 在連接至 Wi-Fi 後顯示剔號
步驟三. 檢查交通狀況
在「重復無限次」加入”如果…那麼”並以
WiFi connected?
為前設設
light2
為取得光傳感器數值接口 P0
清除顯示
新行顯示”字串組合 Light:
light2
”等待 6 秒
步驟四. 當交通擠塞發出提示
在邏輯內加入新”如果…那麼”,以”ligh12 < 10”為前設
在 「如果…那麼」 裡面添加
Wifi Sender send Channel
的訊息,分別依照交通情況來傳送 『trafficjam』 或 『nojam』
完整答案
MakeCode: https://makecode.microbit.org/_DDHataUJ04HY
你可以在以下網頁下載HEX檔案
17.2. 接收者¶
17.2.2. 背景¶
如何接收另一個 micro:bit 的訊號?
讓發送者和接收者連接至同一個頻道。然後讀取訊息。
接收者運作原理
當收到”trafficjam”訊號,代表有塞車狀況出現。交通燈會轉為紅色。反之則會維持綠色。
17.2.3. 所用物資¶
17.2.5. 線路連接¶
連接交通燈和 IoT:bit 的 P0 端口
*注意:
根據顏色連接接線和端口
P0 內建線路予蜂鳴器。在使用 P0 端口予其他外接設備時遇上問題,建議查 看位於 IoT:bit 右上的蜂鳴器開關狀態
17.2.6. 編程 (MakeCode)¶
步驟一. 啟動 OLED,IoT:bit 連接至 Wi-Fi
啟動 OLED,IoT:bit 和連接至 Wi-Fi
宣告新變數
oldmsg
為” “。
步驟二. 加入”tsuenwan”頻道
在”當WiFi連接後”加入剔號和”加入到頻道
tsuenwan
”
步驟三. 接收 Wi-Fi 訊息
在”當從頻道收到訊息”加入清除顯示
新行顯示 ”字串組合”訊息:
receivedmessage
”」」
步驟四. 宣告新函式(TurnRed)
在
TurnRed
函式中加入Control traffic light at P1
等待兩秒
轉顏色為黃色,等待兩秒
轉顏色為紅,等待兩秒
步驟五. 宣告新函式(TurnGreen)
在
TurnGreen
函式中加入”Control traffic light at P1”轉為紅色,等待兩秒
轉為黃色,等待兩秒
轉為綠色,等待兩秒
步驟六. 設定交通燈初始狀態
在「當啟動時」加入
TurnGreen
步驟七. 轉變交通燈狀態
在
On WiFi Receiver received
加入”如果…那麼”“receivedMessage ≠ oldmsg”為前設
設”oldmsg” = receivedMessage
在邏輯裏加入”如果…那麼”,”receivedMessage = trafficjam”為前設
呼叫
TurnRed
將“receivedMessage = nojam”設為否則前設
在否則內呼叫
TurnGreen
完整答案
MakeCode: https://makecode.microbit.org/_K5eKdP1hMcdj
你可以在以下網頁下載HEX檔案: