2015/02/05



<藍色小鋪一起來做> 是個免費的研究聚會, 目前的聚會主題是 Bluetooth LE 的技術研究, 會用 TI 的 CC254x 開發板來做些有趣的計畫.


聚會的第一個目標, 是要做一台能用 beacon 控制開關的枱燈. 萊恩大兵打算在六次的聚會中完成作品, 規劃的進度為:

[1/6] 準備好 CC2540 的開發環境
- 這場聚會已在 2014/12/16 舉行, 聚會的進展與整理, 請參考: 藍色小鋪一起來做, 用 beacon 控制開關的枱燈 (Bluetooth, CC2540, iBeacon)

[2/6] 知道怎麼在 OSAL 的架構下改程式或加功能
- 這場聚會已在 2015/1/6 舉行. 聚會的進展與整理, 請參考: 藍色小鋪一起來做, 講解 BLE CC2540 UART 通訊範例程式 (Bluetooth, CC2540, UART)

[3/6] 將枱燈連接在 CC254x 開發板上, 並能用 app 控制開關.
- 這場聚會已在 2015/1/13 舉行. 聚會的進展與整理, 請參考: 藍色小鋪一起來做, 藍牙枱燈専案實作 (上) (Bluetooth, CC2540)

[4/6] 講解藍牙枱燈的專案程式碼與 debug 示範.
- 這場聚會已在 2015/1/20 舉行. 聚會的進展與整理, 請參考: 藍色小鋪一起來做, 藍牙枱燈専案實作 (下) (Bluetooth, CC2540)

[5/6] iBeacon scanner 專案的示範與講解.
- 這場聚會已在 2015/1/27 舉行, 本篇文章即是聚會的進展與整理.



[6/6] 總集成, 以 SimpleBLECentral 專案為基礎, 完成用 beacon 控制枱燈開關的功能.
- 預訂在 2015/2/3 舉行.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
前言說完, 來說說 [5/6] 的聚會進度吧.

(1) 聚會開始, 萊恩大兵拿藍牙枱燈與 iBeacon scanner 兩種應用情境做比較.

* 藍牙枱燈 <--- 手機 app (操控) 
* iBeacon 發訊器 <--- iBeacon scanner (偵測) 

想說明的, 是藍牙枱燈被操控, 所以是 peripheral 的角色.
而 iBeacon scanner 主動偵測, 所以是 central (或 observer) 的角色.




因此, 要實作 iBeacon scanner, 就得在 SimpleBLECentral 專案的基礎上, 來增加偵測 iBeacon 訊號的功能.

(2) 萊恩大兵沒時間開發 iBeacon Scanner 功能, 研究會差點開天窗. 還好網路上早就有高手把這功能做好, 連 source code 都分享出來了. 感謝朱子建 (網站: 朱子建的觀點, 他的網站上有不少有趣的藍牙專案)



就拿子建兄的 iBeacon scanner 專案程式碼 (以下代稱SimpleBLECentral_iBeacon_scanner) 當範例來做分析.

(3) 約略瞄一下 SimpleBLECentral_iBeacon_scanner 專案裡的檔名, 可以猜出來, 它應該是以 SimpleBLECentral 為基礎修改而來的.



要怎麼知道他改了哪些地方呢? 這就得靠 diff tool 來做整理了. 一般 diff tool 的操作, 大致都是選擇你要比對的檔案(或目錄), 然後它會幫你分左右, 列出兩邊不一樣的地方. 萊恩大兵沒有慣用的 diff tool, 臨時下載了 Beyond Compare 來用.


Beyond Compare 4.0
載入要比較的檔案
紅色部份代表兩邊程式碼不一樣

(4) SimpleBLECentral_iBeacon_scanner 專案到底修改了哪些地方呢? 萊恩大兵把偵測 iBeacon 訊號的部份列出來.

* 在 SimpleBLECentral_ProcessEvent () 裡面加上 timer 來做定期的 iBeacon 訊號偵測與 device discovery 的程序.




* 砍掉原始 SimpleBLECentral 在 simpleBLECentral_HandleKeys () 裡面的按鍵處理程序.



* 這邊定義了 beacon 的 UUID 值.



* 在 simpleBLECentralEventCB () 裡, 則是把偵測到的 beacon 訊號印到 LCD 畫面上.




(5) 看完人家的程式碼, 萊恩大兵丟問題出來和大家一起聊聊.. 要用 programmer 的角度來想:

Q1: 藍牙枱燈要如何因應 beacon 訊號做開關控制?
  - 可能是.. 有偵測到 beacon 訊號就把燈打開
  - 或是, 判斷 beacon 訊號很小時, 就把燈關掉
  - 也可以是, 搭配判斷 major/minor 來做細部管控

大家討論後的共識是..
  - 有偵測到 beacon 訊號 -> 開燈
  - 沒偵測到 beacon 訊號 -> 關燈

Q2: 開燈的那段程式碼, 應該加在 SimpleBLECentral_iBeacon_scanner 專案的哪邊?

Q3: 關燈的那段程式碼, 又應該加在 SimpleBLECentral_iBeacon_scanner 專案的哪邊?

這兩題大家也有聊出共識, 萊恩大兵先不揭露, 留待下週聚會來動手實作囉.

(6) 聚會最後, 把時間交給 Johnson 兄, 示範如何編譯/執行子建兄的 SimpleBLECentral_iBeacon_scanner 與 iBeacon transmitter 專案.





今天的進度就到此. 下週聚會就要在 SimpleBLECentral_iBeacon_scanner 加上枱燈的開關控制. 歡迎有興趣的朋友一同參與囉.


[萊恩大兵的其它文章]

自製大四軸

自製大四軸, (1) 零組件篇, 遙控器 (Drone, Quadcopter, Futaba, Maker, Arduino, Animatronic Eye)
自製大四軸, (2) 零組件篇, 飛控板 (Drone, Quadcopter, MultiWii, Arduino, Futaba, Maker)
自製大四軸, (3) 零組件篇, 自行雷切木質機架 (Drone, Quadcopter, Maker, Laser Cut)
自製大四軸, (4) 零組件篇, 馬達與電變調整 (Drone, Quadcopter, Maker, Electric Speed Control, Motor)
自製大四軸, (5) 組裝篇, 四軸飛行器成形 (Drone, Quadcopter, MultiWii, Arduino, Maker, Electric Speed Control, Motor)

自動報球速的棒球


CC2540 Bluetooth Low Energy
筆記, CC2540 Bluetooth Low Energy, (1) 開發環境 架設 (Bluetooth, CC2540)
筆記, CC2540 Bluetooth Low Energy, (2) 跑第一個範例程式 (Bluetooth, CC2540)
筆記, CC2540 Bluetooth Low Energy, (3) SimpleBLEPeripheral 簡單介紹 (Bluetooth, CC2540)
筆記, CC2540 Bluetooth Low Energy, (4) 在智慧手機上執行範例程式 (Bluetooth, CC2540)
筆記, CC2540 Bluetooth Low Energy, (5) 偵測與發送 iBeacon 訊號 (Bluetooth, CC2540, iBeacon)
實作, iBeacon 發訊器 x 防丟器 (Bluetooth, CC2540, iBeacon)
實作, iBeacon 尋寶遊戲 (Bluetooth, CC2540, iBeacon, iOS app)
實作, BLE + iOS app, 遙控燈泡君 (Bluetooth, CC2540, iOS app)
做實驗, 用 iBeacon 做自動控制的可行性 (Bluetooth, iBeacon, CC2540, Automation, URL Scheme, iOS app)

藍色小鋪一起來做

藍色小鋪一起來做, (1) 用 beacon 控制開關的枱燈
藍色小鋪一起來做, (2) 講解 BLE CC2540 UART 通訊範例程式 (Bluetooth, CC2540, UART)
藍色小鋪一起來做, (3) 藍牙枱燈專案實作 (上) (Bluetooth, CC2540)
藍色小鋪一起來做, (4) 藍牙枱燈專案實作 (下) (Bluetooth, CC2540)
藍色小鋪一起來做, (5) iBeacon scanner 專案示範與解說 (Bluetooth, CC2540, iBeacon)
藍色小鋪一起來做, (6) 完成, 用 iBeacon 控制開關的枱燈 (Bluetooth, CC2540, iBeacon)

小惡魔 無線溫度感測器

108 大眼仔
Plot Clock
體驗, 原住民互動故事書@宜蘭大同鄉泰雅生活館
體驗, 蛋生音互動裝置@兒童美術館 (Arduino, 3D Printing, HC-SR04, Interactive)


實作, 電容感應音樂樹

0 意見:

張貼留言