主控裝置

可以透過 LBLECentral 類別來將 LinkIt 7697 設定為低功耗藍牙的主控裝置。

這個類別能夠讓開發者創建主控裝置,以掃描周圍的低功耗藍牙的周邊。在使用 LBLECentral 之前,需要先初始化 LBLE 程式庫,如下所示:

LBLE.begin();
while(!LBLE.ready())
{
  delay(10);
}
Serial.println("BLE ready");

// 開始掃描周圍的周邊裝置的廣播信息
LBLECentral.scan();
for(int i = 0; i < scanner.getPeripheralCount(); ++i)
{
    Serial.println(LBLECentral.getName(i));
}

需要注意的是,周邊裝置進行的廣播內容是由周邊裝置自行決定的。比如說,iBeacon 信標裝置會廣播自己的識別碼(UUID)等資料欄位,而一個心律監測器則可能廣播自己的裝置名稱,以及自己提供的服務的識別碼。開發者需要自己解析這些資料欄位的內容。

針對 iBeacon,LBLECentral 提供了兩個簡單的工具函示 isIBeacongetIBeaconInfo ,可以協助解析 iBeacon 的相關資料欄位。

若需要分析其他類型的資料欄位,可以參考 File > Examples > LBLE > ScanPeripherals 這個範例。下面是此範例的輸出結果的參考結果:

..........Total 2 devices found:
idx	address			flag	RSSI
0	C6:32:4D:E8:51:75(RAN)	1A	-80	OMATE X by Unknown, service: (no service info)
1	C0:20:63:BA:FF:8A(RAN)	6	-99	BT_HEADSET_DEMO_LE by Unknown, service: (no service info)
------scan stopped-------

連接到藍牙周邊裝置

當用 LBLECentral 取得鄰近的周邊裝置之後,接下來可以用 getAddress() 取得該周邊裝置的地址,並且用 LBLEClient 物件來連接至該地址:

serverAddress = LBLECentral.getBLEAddress(idx);
LBLEClient client;
client.connect(serverAddress);

其中 connect 這個函示可能會花費較多時間執行,因為它除了連線到藍牙裝置之外,還會嘗試列舉出該裝置可用的服務與可讀寫的資料特性。當 connect() 函示完成之後,可以用 LBLEClient 來讀寫資料特性:

    // read the device manufacturer
    // first we check if "Device Information"(0x180A) service is available:
    if(client.hasService(0x180A))
    {
      const String name = client.readCharacteristicString(LBLEUuid(0x2A29));
      if(name.length() > 0)
      {
        Serial.print("manufacturer=");
        Serial.println(name);
      }
    }

請參考 LBLE > ConnectPeripheral 這個範例來瞭解如何讀寫裝置的資料特性。

Last updated