2014-12-24

用 Raspberry Pi 和 USB 藍牙自製 iBeacon 發射器

阿舍之前有寫了一篇試用 iBeacon 的文章,而那個試用的 iBeacon 是阿舍自己花錢買的 ( 不知阿舍什麼時候才有機會變成是廠商送的呢 ?... 呵 ! 想太多中 .... ),阿舍覺得不算便宜,如果只是想玩玩或試試的話,阿舍覺得花錢買不是那麼的划算哩 ! 而阿舍之前在查 iBeacon 資料的時候,就有看到有人用 Raspberry Pi 加上支援 BLE 的 USB 藍牙 (註:  提外話,據說現在藍牙的「牙」統一不長草了哩 !  ) 及軟體就可以弄出一個 iBeacon 發射器哩 !

距離 7 公分 ? 

於是,阿舍就去買了一個 USB 藍牙來試,但是,幸運的踩到地雷,買到一個支援 4.0 但沒有支援 BLE 的藍牙,所以,怎麼都試不出來哩 ! 後來,又確認了好幾次才買到一個支援 4.0 版,而且,有註明說有支援 BLE ( Bluetooth Low Energy ) 的 USB 藍牙才真正的給它有試成功哩 ! 因此,如果你有興趣要試試的話,除了一片 Raspberry Pi 和支援 BLE 的手機或平板之外,也請先確定你有一支有支援 BLE 的 USB 藍牙哩 !

另外,如果你還不太瞭解 iBeacon 的話,可以先看阿舍寫的這一篇哩 ! 還有,在開始之前,阿舍要先說一下,就是,阿舍是假設你的 Raspberry Pi  已經有啟動和設定過,然後,可透過 SSH 來連線到 Raspberry Pi 的,所以,阿舍就不會從 Raspberry Pi 的啟始設定和怎麼連上來講起哩 !  因為從那邊寫起的話,這篇大概要分 4 個 part 吧 !  ... 呵呵 !

開始的第一步,就是要先讓 Raspberry Pi  可以支援藍牙,所以,請先參考阿舍寫的這一篇的步驟 1 ~ 6,這樣,你的 USB 藍牙就應該有在作用中了,如果不確定,可以執行一下,下面這一行指令,如果有出現像「hci0  xx:xx:xx:xx:xx:xxx」的訊息,那就是有抓到了哩 !

sudo hcitool dev

接下來,就是有點煩雜的部份了,如果你還不太確定你的藍牙 USB 是不是有支援 BLE 的話,可以執行下面這一行指令來確認,這行指令會列出這個藍牙裝置有支援的功能,而如果有支援 BLE 的話,應該可以看到像是「或「這樣的項目哩 ! 阿舍一開始不知道這個指令,用了一支沒支援 BLE 的藍牙來浪費了不少時間啊 ~~~ 

sudo hciconfig -a hci0 features

在確認有支援 BLE 之後,再來,就是要跑幾個指令了,首先,再確認你的藍牙現在是正常運作中的,請執行下面的指令,執行後出現的訊息裡,應該會看到「UP RUNNING」才對。

sudo hciconfig hci0

然後,執行下面這一行指令來設定成 Non Connectable Advertising 模式 ( 有興趣瞭解請參考這裡)

sudo hciconfig hci0 leadv 3

接著,要取消藍牙的掃瞄功能,因為要成為被讀取的角色哩 !

sudo hciconfig hci0 noscan

再來的這個部份,就是要開始發送訊息出去了,不過,要先瞭解的是,每個 iBeacon 裝置都會有一組 UUID,所以,在開始發送訊息前,要先取得這組 UUID,但是,阿舍不打算在這篇裡來說明,因為阿舍寫這篇的目的是為了要方便有興趣試試 iBeacon  的人可以先體驗一下,阿舍改天再來好好說明 ( 阿舍列的參考資料文裡有說明),所以,現在就先借用 Apple 的 UUID  來用,這樣,App 比較容易找的哩 !

請直複製下面這一串指令來在 Raspberry Pi 上執行,而執行完成後,如果有看到 HCI Command 和 HCI Event  二組數字訊息,那就是有成功了哩 !

sudo hcitool -i hci0 cmd 0x08 0x0008 1E 02 01 1A 1A FF 4C 00 02 15 63 6F 3F 8F 64 91 4B EE 95 F7 D8 CC 64 A8 63 B5 00 00 00 00 C8

現在,就可以拿出你的 iPad 或 iPhone 或是有支援 BLE 的 Android 手機出來,然後,搜尋支援 iBeacon 的軟體來安裝,阿舍的 Android 手機沒支援 BLE ,所以,阿舍是在 iPad Air 上安裝 Locate 這套 App 的,啟動後,點選 「Locate iBeacons」後,就可以看到了哩 ! (如上圖)

當移動你的手機或平板接近或離開 Raspberry Pi 時,Distance 的數值就會改變,原則上,那個數字就是你的手機或平板和 Raspberry Pi 之間的距離,反應速度和準確度會依你所在的環境而有所不同的 ....


參考資料
http://www.wadewegner.com/2014/05/create-an-ibeacon-transmitter-with-the-raspberry-pi/


[+] Ubuntu 指令新手會用到的35個技法 - 這是以阿舍的使用經驗編寫出來的電子書,三天內應該就看的完,學的起來哩 ! 有空就參考一下囉 ! ... ^^=

關於阿舍

好文不藏私,請多分享囉!! ^^=



5 則留言 :

Books 提到...

文中的 ((應該可以看到像是 或 這樣的項目哩)))

好像漏了到底是怎樣的圖片? XD

Arthur Yu 提到...

Hello,

已補上文字。多謝囉 ! ... ^^=

x11825 提到...

請問阿舍 藍芽是買哪一個牌子或型號呢?

匿名 提到...

你好 使用sudo hcitool dev 來確定藍芽是否有支援BLE
您說得可以看到像是「」或「」這樣的項目 是指什麼??

陳筱綺 提到...

請問一下,我要怎麼從樹莓派裡讀取某一個ble裝置的uuid

張貼留言

如果留言後,發現留言不見了,這通常是因為 Goolge 把它認為是垃圾留言了,請用信件通知阿舍調整 ( ayubiz@gmail.com )。謝謝 !