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);
}

操作步驟 : 讀取開發板上的屬性數值

操作步驟 : 寫入開發板上的屬性數值

▼ 延續前面的操作,在 LightBlue 內去寫這屬性值

▼ 裝置端發現屬性的改變,就會印出來

其他學習資源

[Cavedu] 如何使用LinkIt 7697開發板的BLE藍牙功能?

Last updated