智能警報系統
內容簡介:
在 fischertechnik electronic set 中我們學習過使用micro:bit 配合 Alarm system 模型做出一個智能警報系統 , 你有想過如何改良它嗎?
這次我們將使用 Mu Vision Sensor 取代原有的光欄裝置以檢測有沒有可疑人物經過。
使用Mu Vision Sensor 的好處是 :
1. 可以確定是人經過
2. Mu Vision Sensor 能感測到人與Sensor的距離 , 如非太接近可不發出警號
我們將利用 Mu Vision Sensor 當中的 「Body Detect」功能來偵測可疑人物 ,
1.當有人太接近門時LED訊號燈便以0.1秒閃爍1次,
2.當門內的按鈕沒有被按到的時候(門已被開啟), LED訊號燈便以0.1秒閃爍1次,蜂鳴器亦會響起。
3.當reset 的按鈕被按到的時候, 整個程式將重置再啟動。
所需物料:
- micro:bit x 1
- I/O board x 1
- LED x 1
- Buzzer x 1
- Switch x 2
- 12" M/M Jumper Wires x 4
- Mu Vision Connecter x 1
- Mu Vision Sensor x 1
- FT 電線 x 4
- 警報系統模型
電線接駁方法:
Mu Vision Sensor 的 「V」 --> I/O board 的 3.3V OUT 「+」
Mu Vision Sensor 的 「G」 --> I/O board 的 3.3V OUT 「-」
Mu Vision Sensor 的 「SDA」 --> I/O board 的 「SDA」
Mu Vision Sensor 的 「SCL」 --> I/O board 的 「SCL」
LED --> I/O board 的 P16
Buzzer --> I/O board 的 P14
Switch 1 (門) --> I/O board 的 P0
Switch 2 (Reset)--> I/O board 的 P6
編程教學:
1. 在「Advanced」中選取「Extensions」以加入「Mu Vision」的package。
2.輸入「muvision」並選取「muvision」的extension package。
編程概覽:
安裝 Mu Vision的I2C port以使它能在I/O board上運行 ;
然後再啟動 algorithm "Body Detect" 來偵測有沒有感應到人體。
initialize MU00 port I2C 可在「Muvision」的「Setting」找到 ,
設為「I2C」 的原因是我們將電線接駁到I/O board 的 I2C port 上。
MU00 enable algorithm Traffic 亦可在「Muvision」的「Setting」找到 ,
把它拖拉到「on start」後再將default 的「Color Block」改為「Body Detect」。
** 這次我們要使用的是 Body Detect 來偵測有沒可疑人物靠近。
led enable false 可在「led」中的「more」找到 ,
使用這個code的原因是把micro:bit display 的 PIN關掉 , 避免在使用Output Pin時發生錯誤。
這次我們使用了一個新技巧 「Function」 ,
Function 的作用是把一連串的代碼化簡成一個Variable ,
可以其他地方重覆使用並縮短整個編程的長度 , 讓編程變得更有條理。
各個 Function 都只是基本的ditital write pin 以使 Output 開啟或關閉 ,
相信大家對此也不會感到陌生。
horizontal value < 40 代表保險室有可疑人物靠近 , call Blinking 以發出警號。
這次選用了「while loop」 用法跟「forever」一樣
get Mu00 algorithm Body Detect 可在 「Muvision」的「Functions」找出。
** 需把 「Color Block」改成「Body Detect」 。
if not digital read pin p0 = 1 , 亦是當門的Switch(安全制)沒被壓上 i.e. 門被打開 ,
then while call On buzzer , Blinking , Off Buzzer 來發出警號。
利用while loop 而不是 repeat x times 的原因是我們希望這些警號會不斷發出 ,
直至有人手動把它關上 i.e. 另一個switch 被按下的時候
當保險室內的switch(P6)被按上時 , read pin p6 = 1 call reset 使整個編程重置並把警報關掉。
「reset」可在「control」找到。