藍牙防丟裝置

從家裡帶出來的隨身小東西,如雨傘或小袋子等等,常忘記帶回家嗎?這種忘東忘西的毛病,小則損失金錢,大則可能造成終身的憾事,本節使用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公尺時,位置狀態顯示改為離開安全範圍,同時發處警示聲,如下圖。