D01. 手機透過 BLE 讀寫裝置資料
專案說明
建立起一個低功號藍芽 (BLE, Bluetooth Low Energy)的服務(Service) 和屬性(Character),透過手機寫入一個 54321 資料到開發板上,收到後會從序列埠監視器內印出。
手機軟體
iPhone 請安裝 LightBlue Explorer (免費軟體)
積木畫布
初始化
創建一個藍芽周邊裝置的服務 (Service),此裝置顯示名稱為 "LinkIt 7697" (此名稱就是手機上會看到的藍芽名字, 可修改避免多人時有衝突)
幫這裝置新增的一屬性,類型是整數且可以讀寫 (此範例是讀取,所以也可設成讀)
修改服務和屬性的 UUID,避免和別人衝突到 (請使用 UUID generator)
重複執行
檢查是否有人修改過這屬性,若有則透過序列埠印出來
持續寫入 123456789 到這屬性

產生的 Arduino 程式如下
#include <LBLE.h>
#include <LBLEPeriphral.h>
int data;
LBLEService __periphralService("B77D53AC-D590-41E0-B75A-6DA442F543F6");
LBLECharacteristicInt __b77d53ac_d590_41e0_b75a_6da442f543f6("B77D53AC-D590-41E0-B75A-6DA442F543F6", LBLE_READ | LBLE_WRITE);
void setup()
{
LBLE.begin();
while (!LBLE.ready()) { delay(100); }
__periphralService.addAttribute(__b77d53ac_d590_41e0_b75a_6da442f543f6);
LBLEPeripheral.addService(__periphralService);
LBLEPeripheral.begin();
LBLEAdvertisementData __advertisement;
__advertisement.configAsConnectableDevice("LinkIt 7697");
LBLEPeripheral.advertise(__advertisement);
Serial.begin(9600);
Serial.println("藍芽裝置建立成功");
}
void loop()
{
if (__b77d53ac_d590_41e0_b75a_6da442f543f6.isWritten()) {
data = __b77d53ac_d590_41e0_b75a_6da442f543f6.getValue();
Serial.println(data);
}
__b77d53ac_d590_41e0_b75a_6da442f543f6.setValue(123456789);
delay(1000);
}
操作步驟 : 讀取開發板上的屬性數值
▼在 iPhone 上打開 LightBlue,搜尋和配對 "LinkIt 7697" 藍芽裝置
▼這一串 UUID 就是之前在 BlocklyDuino 內寫的屬性 UUID
▼Ox15CD5B07 就是之前寫入的 123456789 的 HEX (十六進位) 表示,看不太懂可以在右上方(紅色箭頭) 換顯示方式
▼將 Hex 改成用 Integer (十進位) 的顯示方式
▼ 改完之後可以看到從裝置讀回來的數值是 123456789
操作步驟 : 寫入開發板上的屬性數值
▼ 延續前面的操作,在 LightBlue 內去寫這屬性值
▼ 輸入個 54321
▼ 裝置端發現屬性的改變,就會印出來

其他學習資源
Last updated