<藍色小鋪一起來做> 是個免費的研究聚會, 目前的聚會主題是 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] 的聚會進度吧.
* 藍牙枱燈 <--- 手機 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)
自動報球速的棒球
* 自動報球速的棒球, (1) 概念與雛形 (Arduino, MPU-6050, HC-06)
* 自動報球速的棒球, (2) 第一版試作品 (Arduino, NanoWii, microSD, MPU6050)
* 自動報球速的棒球, (3) 拋接實驗的數據分析 (Arduino, NanoWii, microSD, MPU6050)
* 自動報球速的棒球, (2) 第一版試作品 (Arduino, NanoWii, microSD, MPU6050)
* 自動報球速的棒球, (3) 拋接實驗的數據分析 (Arduino, NanoWii, microSD, MPU6050)
* 做實驗, 寫入 EEPROM 的速度能否跟得上 MPU6050 的數據產出? (Arduino, MPU-6050, EEPROM)
* 筆記, NanoWii, 一些經驗分享 (Arduino, NanoWii, MPU6050)
* Murmur, 很小很強大的穿戴式裝置模組 (Realtag, Bluetooth, CC2540, MPU6050, BMP180)
* 筆記, NanoWii, 一些經驗分享 (Arduino, NanoWii, MPU6050)
* Murmur, 很小很強大的穿戴式裝置模組 (Realtag, Bluetooth, CC2540, MPU6050, BMP180)
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)
* 筆記, 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)
小惡魔 無線溫度感測器
* 小惡魔, (1) 溫度感測 + 物聯網 (Electric Imp, Xively, LM35, Internet of Things)
* 小惡魔, (2) 溫度感測 + 物聯網 + 事件觸發 (Electric Imp, Xively, LM35, Internet of Things)
* 小惡魔, (2) 溫度感測 + 物聯網 + 事件觸發 (Electric Imp, Xively, LM35, Internet of Things)
108 大眼仔
Plot Clock
* 體驗, 蛋生音互動裝置@兒童美術館 (Arduino, 3D Printing, HC-SR04, Interactive)
* 實作, 電容感應音樂樹
* 修理, 樂高馬達 8883 (LEGO 8883 Power Functions M-Motor)
* 修理, (part 2) 樂高馬達 8883 (LEGO 8883 Power Functions M-Motor)
* 修理, 液晶螢幕 (LCD)
* 108 大眼仔, 初登場 (Arduino, SG-90, Maker Faire Taipei 2014, Animatronic Eye)
* 108 大眼仔, 進化, (1) 專屬程式庫 (Arduino, SG90, Animatronic Eye)
* 108 大眼仔, 進化, (2) 當我們串在一起 (Arduino, SG90, Animatronic Eye, I2C)
* 108 大眼仔, 進化, (3) 檢查 Gmail 信箱 (Arduino, SG90, Animatronic Eye, Temboo)
* 108 大眼仔, 進化, (4) 看著我的臉 (Arduino, SG90, Animatronic Eye, OpenCV, Processing, I2C)
* 108 大眼仔, 進化, (5) 迎著人來人往 (Arduino, SG90, Animatronic Eye, OpenCV, Processing, I2C)
* 108 大眼仔, 檢討筆記, 我要一個打十個 (Arduino, SG90, Animatronic Eye)
* 108 大眼仔, 進化, (1) 專屬程式庫 (Arduino, SG90, Animatronic Eye)
* 108 大眼仔, 進化, (2) 當我們串在一起 (Arduino, SG90, Animatronic Eye, I2C)
* 108 大眼仔, 進化, (3) 檢查 Gmail 信箱 (Arduino, SG90, Animatronic Eye, Temboo)
* 108 大眼仔, 進化, (4) 看著我的臉 (Arduino, SG90, Animatronic Eye, OpenCV, Processing, I2C)
* 108 大眼仔, 進化, (5) 迎著人來人往 (Arduino, SG90, Animatronic Eye, OpenCV, Processing, I2C)
* 108 大眼仔, 檢討筆記, 我要一個打十個 (Arduino, SG90, Animatronic Eye)
* Murmur, 有趣的零件售價
* Murmur, Arduino 保險桿 (Arduino, bumper, 3D printing)
* Murmur, 許一個 maker 分享網站
* Murmur, 物聯網新概念- The Physical Web (Internet of Things, The Physical Web)
* Murmur, 關於 HP Sprout 的一點想法
* Murmur, 說中文很難嗎? (Toy, Reed Switch, Voice Recorder Module)
* Murmur, 停車場自動繳費機的兩三事 (Kiosk)
* Murmur, 為什麼是 WiFi? 關於小米空氣清淨器的一點看法.. (Internet of Things)
* Murmur, 機器人是時尚元素? (Robot, Fashion)
* 體驗, 原住民互動故事書@宜蘭大同鄉泰雅生活館* Murmur, Arduino 保險桿 (Arduino, bumper, 3D printing)
* Murmur, 許一個 maker 分享網站
* Murmur, 物聯網新概念- The Physical Web (Internet of Things, The Physical Web)
* Murmur, 關於 HP Sprout 的一點想法
* Murmur, 說中文很難嗎? (Toy, Reed Switch, Voice Recorder Module)
* Murmur, 停車場自動繳費機的兩三事 (Kiosk)
* Murmur, 為什麼是 WiFi? 關於小米空氣清淨器的一點看法.. (Internet of Things)
* Murmur, 機器人是時尚元素? (Robot, Fashion)
* 體驗, 蛋生音互動裝置@兒童美術館 (Arduino, 3D Printing, HC-SR04, Interactive)
* 開箱, 鋼彈小劇場 (Pepper's Ghost, GUNDAM)
* 開箱, 偉力控二號機, 小四軸飛行器 (CG022, Quadcopter)
* 偉力控二號機, 修理防護罩與飛行心得 (CG022, Quadcopter)
* 偉力控二號機, 我想有個家 (CG022, Quadcopter)
* 偉控力二號機, 換馬達 (CG022, Quadcopter)
* 偉力控二號機, 盒子上的洞 (CG022, Quadcopter)
* 開箱, 偉力控二號機, 小四軸飛行器 (CG022, Quadcopter)
* 偉力控二號機, 修理防護罩與飛行心得 (CG022, Quadcopter)
* 偉力控二號機, 我想有個家 (CG022, Quadcopter)
* 偉控力二號機, 換馬達 (CG022, Quadcopter)
* 偉力控二號機, 盒子上的洞 (CG022, Quadcopter)
* 修理, 樂高馬達 8883 (LEGO 8883 Power Functions M-Motor)
* 修理, (part 2) 樂高馬達 8883 (LEGO 8883 Power Functions M-Motor)
* 修理, 液晶螢幕 (LCD)
0 意見:
張貼留言