藍牙防丟裝置
從家裡帶出來的隨身小東西,如雨傘或小袋子等等,常忘記帶回家嗎?這種忘東忘西的毛病,小則損失金錢,大則可能造成終身的憾事,本節使用micro:bit的藍牙功能及智慧型手機來做防丟裝置,完全根治你的忘東忘西毛病。
支援藍牙的裝置可以使用藍牙信號跟智慧型手機互傳資料,如下圖所示,在無線通信中,有表示無線信號的方式,稱為RSSI(Received Signal Strength Indication,接收信號強度),藍牙也使用RSSI表示信號的強度。
RSSI使用下列公式計算信號強度,其中數值A為接收端與發送端相距1公尺所收到的RSSI值,數值n為路徑損耗指數,數值d為接收端與發送端的距離,單位為公尺。
利用上式繼續推導,可得下列公式,使用RSSI來計算接收端與發送端的距離,我們可以用micro:bit作為發送端,智慧型手機作為接收端,以手機收到的RSSI計算micro:bit與手機之間的距離。
我們把micro:bit做為藍牙信號的發送端,固定在物品上,另外使用手機作為藍牙信號的接收端,在手機上用RSSI來計算micro:bit與手機之間的距離,並用該距離來判斷物品是否離開我們。
實作中將micro:bit以Eddystone方式作為廣播藍牙信號的發送端,Eddystone是由Google所發展的藍牙信標標準(Bluetooth beacons),這種信標(Beacon)會使用藍芽廣播一個網址資料,廣播範圍內的相容的裝置及軟體可以接收並執行,如下圖,一個Eddystone信標廣播藍牙信號,手機1、手機2、手機3及手機4都會收到藍牙信號及網址資料,在實作中我們會用Eddystone啟動micro:bit的藍牙信號,而無須啟動其他藍牙服務。
本節以micro:bit做為Eddystone信標,廣播藍牙信號,並用手機作為藍牙接收器,接收micro:bit的藍牙信號,將用接收到的藍牙RSSI計算micro:bit跟手機之間的距離,最後用該距離判斷micro:bit是否在我們附近,前述方式即可完成物品防丟裝置。
使用零件:
micro:bit 一片
microUSB線 一條
智慧型手機 一隻
micro:bit使用積木說明:
注意:
1.bluetooth.advertiseUrl("https://makecode.com",7,false)
2.專案設定中藍牙配對要設定成為 No Pairing Required。
3.關於Eddystone的說明,請參考下列說明:
https://makecode.microbit.org/v1/reference/bluetooth/advertise-url
micro:bit積木程式:
micro:bit程式說明:
當啟動時部分:
1.藍牙Eddystone服務啟動,廣播網址http://makecode.com。
2.顯示愛心。
程式啟動時,同時藍牙Eddystone服務,還有LED顯示愛心圖示,讓手機可以掃描micro:bit藍牙連線,並接收該連線的RSSI,準備計算micro:bit與手機的距離。
App Inventor使用元件說明:
工作面板設定如下:
App Inventor積木程式:
App Inventor程式說明:
1.指派變數Device的內容值為空字串。
2.指派變數RSSIValue的內容值為0。
3.指派變數Distance的內容值為0。
4.當App執行時,會觸發積木5執行。
5.開始掃描藍芽裝置。
6.當掃描完成發現藍芽裝置時,會觸發積木7執行。
7.將掃描到的藍牙地址指派給BLE清單選擇器。
8.當BLE清單選擇器顯示後,使用者選擇完成時,會觸動積木9、10及11。
9.提取使用者所選中的BLE清單項目中從第1個字開始長度17的字串,指派給變數Device。
10.設定連線狀態標籤的文字為連線狀態:藍牙選定。
11.啟動計時器,讓計時器每秒工作一次。
12.當離開按鈕被按下時,會觸動積木13執行。
13.結束App的執行。
14.當計時器開始計時時,會觸動積木15至22開始執行。
15.將選中的藍牙裝置的RSSI值存至變數RSSIValue中。
16.利用RSSI值計算距離,並將計算後的結果存至變數Distance中。
17.設定RSSi標籤的文字為RSSI的值。
18.設定距離標籤的文字為計算所得的結果。
19.如果變數Distance的內容值大於2,則執行積木20及21,否則執行積木22。
20.設定距離狀態標籤的文字為距離狀態:離開安全範圍。
21.播放物品離開安全範圍的警示聲。
22.設定距離狀態標籤的文字為距離狀態:安全範圍。
當選中藍芽裝置後,立即開始取得該裝置的RSSI值,而沒有跟該裝置連線,因為手機與該裝置連線後,就無法取得該裝置的RSSI值,另外程式中距離的計算公式如下所式,其中A為59,n為2。
Distance = 10^((ABS(RSSIValue)-A)/(10*n))
當計算完成的距離大於2時,表示物品脫離安全範圍,所以手機在螢幕上顯示脫離安全範圍,同時會發出警示聲,如果距離小於或等於2時,則在手機螢幕上顯示安全範圍,不會發出警示聲。
執行結果:
注意:執行App前要先打開手機的藍牙。
Micro:bit在開始時5X5 LED顯示幕,先顯示大愛心,如左下圖,而手機畫面顯示程式的起始顯示,掃描按鈕及離開啟動,如右下圖。
當按下手機的掃描BLE按鈕後,手機畫面會顯示掃描到的BLE地址,C6:1E:F7:A7:53:A7為micro:bit地址,長度為17個字,如左下圖,接這點選「micro:bit的地址」,手機畫面顯示如右下圖,連線狀態改換成”藍牙選定”,同時顯示位置狀態、信號強度及距離。
當手機計算出的距離超過2公尺時,位置狀態顯示改為離開安全範圍,同時發處警示聲,如下圖。