今天要來介紹 Punch Through 所推出的 LightBlue Bluetooth BLE 方案的 start kit,目前推出的兩種裝置,都是透過 BLE 方式進行連結。
[caption id="attachment_160" align="aligncenter" width="300"] 出處:Punch Through[/caption]
Bean 和 Bean+ (土豆和土豆進化版?)都是透過募資平台,然後經過一連串的研發、製作、測試,最後量產的產品,基本上去年年底下單到出貨,大概也歷經半年之久。
[caption id="attachment_182" align="aligncenter" width="225"] LightBlue Bean+[/caption]
Bean 與 Bean+ 最大的差別,應該就是支持的 I/O 以及加入了 Grove 接口,並且從原本 Bean 使用的不能充電的鈕扣電池,改為可充電式鋰電池。另外最大的差別,我想就是 Bean 之前並沒有提供快速接口,甚至要使用還必需先準備烙鐵,把需要用的節點先焊上才可以使用。
[caption id="attachment_162" align="aligncenter" width="300"] 出處:https://socialwearablesciid2015.wordpress.com/[/caption]
軟體方面,Bean 系列都可以透過任何平台來進行開發,甚至還可以透過手機進行程式的修改,可以說非常的方便使用。至於 Bluetooth 最重要的 profile 竟然還支援多種類型,包含:
- iBeacon: 支援 Apple 的 iBeacon
- MIDI: 可將 MIDI 訊號導入至 Bean
- HID: 可透過無線鍵盤、滑鼠,甚至還可以透過支援 HID 的藍芽遊戲手把來進行控制
- ANCS: 可以接收 iOS 的訊息,類似 iWatch 的方式
- OBSERVER: 用來傳送訊息到各種不同的裝置
[caption id="attachment_165" align="aligncenter" width="604"] 出處:Punch Through[/caption]
讓我們開始整合 Bean/Bean+ 到 NAS 吧!
在開始與 Bean/Bean+ 進行連線之前,需要先準備 BLE USB 裝置,在這邊我使用的是 SENSE 推出的 BLE 裝置,記得一定要有支援 BLE (Bluetooth LE) 功能的喔!
[caption id="attachment_181" align="aligncenter" width="225"] USB BLE + NAS[/caption]
如果要確定是否有安裝成功,可以透過 SSH 進到 NAS,利用 lsusb 將目前的 USB 裝置列出,目前我使用的是 "Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)"
[~] # lsusb
Bus 001 Device 002: ID 8087:8008 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 8087:8000 Intel Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 002: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Bus 003 Device 003: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 003 Device 004: ID 1005:b155 Apacer Technology, Inc.
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
確認 USB 正確安裝成功後,接著安裝 Bean + Node-Red 的 docker image,此連結的 image 主要是已經將所需要的 Bean SDK 和 Node-Red 怖署完成的版本(連結包含相關教學)。
在這邊需要特別注意的是,無法直接透過 Container Station 的管理頁面進行 image 的佈署,要直接透過下面的指令去產生 image,最主要是要將 USB 相關裝置的資訊 pass-through 到 image 裡使用。
[~] # docker run -t -i --name qbean_test --cap-add=SYS_ADMIN --privileged --net=host -v /dev/bus/usb:/dev/bus/usb -v /run/dbus:/run/dbus -v /var/run/dbus:/var/run/dbus jarvischung/qbean bash
建立完成後的 image,可以透過 http://your-nas-ip:1880 開啟 Node-Red,並且可以看到已經預設安裝好的 LightBlue Bean Node-Red 模組。從下面的 node 模組可以發現,Bean/Bean+ 預設是支援溫度、三軸以及 RGB LED 感測器的功能,下面會一一介紹。
[caption id="attachment_171" align="aligncenter" width="177"] 安裝好的LightBlue Bean模組[/caption]
除了已經安裝好的相關模組外,為了快速取得目前手上的 Bean/Bean+ 裝置相關的 UUID,可以透過 http://your-nas-ip:1880/bleScan/ 已經透過 Node-Red 建立好的 BLE Scan API 取得現有的裝置資訊。
[caption id="attachment_172" align="aligncenter" width="604"] 預設產生好的 BLE Scan API[/caption]
呼叫此 API 後,需要等待約 30s 的時間,如果 USB BLE 與 Bean/Bean+ 有正確開啟,基本上會取得 Bean/Bean+ 相關裝置的資訊(此 API 並不會列出非 Bean/Bean+ 裝置)。
[caption id="attachment_173" align="aligncenter" width="604"] 透過 Node-Red 產生 BLE Scan API[/caption]
取得 Bean/Bean+ 裝置的 UUID 後,我們要開始來設定 Bean node。下圖是新增 Bean node 的頁面,UUID 部份就是剛剛透過 BLE API 取得的資訊; Connection部份有兩種模式:
- "connection on event": 代表當有事件時,才會進行 Bean/Bean+ 的連線(使用此方式,還需要設定 Timeout 的時間,也就是 event 結束後,多久的時間會自動斷線)。
- "constantly connected": 一旦 deploy 後,Bean/Bean+ 會直接連線,不會斷開。
[caption id="attachment_178" align="aligncenter" width="513"] 新增 Bean config[/caption]
為什麼要分兩種連線方式呢?
主要是 BLE 雖然省電,畢竟並不是每一種狀況都需要讓 startkit 都在工作模式下,透過此方式也可以讓 Bean/Bean+ 更省電喔!
下圖是直接使用 Node-Red 拉好的 flow,可以快速的取得 Bean/Bean+ 裝置內建的溫度感測器資訊。
[caption id="attachment_180" align="aligncenter" width="674"] 透過 Node-Red 取得 Bean/Bean+ 溫度資訊[/caption]
換試另一個三軸感測器的 node,可以馬上取得資訊。
[caption id="attachment_185" align="aligncenter" width="618"] 透過 Node-Red 取得 Bean/Bean+ 三軸感測器資訊[/caption]
如果想要改變 Bean/Bean+ 裝置上 RGB LED 的顏色,直接將 inject node 改送 red string 即可以改變狀置的 RGB LED 顏色。支援的格式有:
- 格式 1: 送進 node 的字串可以有 "Red", "Green", "Blue" 以及 "Off"
- 格式 2: 送進 node 的字串可以是 RGB 數值的組合,例如:0,255,255 或是255,0,255
[caption id="attachment_187" align="aligncenter" width="279"] 改變 Bean+ 的 RGB LED[/caption]
是不是覺得 NAS 整合 start kit 很方便啊!未來會分享更多 Bean/Bean+ 相關裝置的應用,像是:
- 如何透過手機簡單的使用 Bean/Bean+
- 如何自訂 scratch,更方便的取得其它感測器的資訊
同步發表於:I'm RD.
留言列表