BLE - 電池服務

材料準備

  • AmebaD [AMB21 / AMB22 / AMB23 / BW16] x 1

  • Android / iOS 智能手機

範例説明

介紹

BLE使用的是服務器–客戶端模型。服務器我們感興趣的數據,而客戶端連接到服務器來讀取數據。通常,藍牙外圍設備充當服務器,而藍牙中心設備充當客戶端。服務器可以包含許多服務,每個服務包含一組數據。客戶端可以發送讀取或寫入數據的請求,還可以訂閱通知,以便服務器可以向客戶端發送數據更新。

在本示例中,我們在Ameba藍牙堆棧上設置了一個簡單的電池服務,然後使用智能手機來連接Ameba的BLE外設並讀取電池數據。

步驟

請確保在您的手機上安裝了以下藍牙應用程序。這些應用程序將向您顯示由Ameba發送的原始數據,並允許您與數據進行交互。

這裡推薦的應用程序是nRF connect,可在下面的鏈接中找到:

LightBlue是另一種也可以使用的應用程序,但是它的特性比較少:

Open the example, “Files” “Examples” “AmebaBLE” “BLEBatteryService”

../../../../_images/image1.png

Upload the code and press the reset button on Ameba once the upload is finished. On your mobile phone, open the Bluetooth app and scan for the Bluetooth signal broadcast by Ameba, it should appear as a device named “AMEBA_BLE_DEV”.

../../../../_images/image2.png

連接到Ameba藍牙設備,應該會出現可用服務的列表。單擊battery服務展開,可以看到電池電量數據值。方框右邊高亮的箭頭用於讀取數據和訂閱通知。點擊單個箭頭讀取電池電量值,90%的電量值就會顯示出來。

../../../../_images/image3.png

單擊三重箭頭訂閱電池電量值的更新,電池值將自動開始更新。

../../../../_images/image4.png

串行監視器將顯示每秒鐘電池電量的增加。當您單擊其中一個箭頭時,運行在Ameba上的程序將得到通知,並打印顯示出所採取的操作。

../../../../_images/image5.png

程式碼説明

BLEService和 BLECharacteristic用於創建在藍牙設備上運行的電池服務實例。

BLE.configAdvert() setAdvType(GAP_ADTYPE_ADV_IND) is used to set the advertisement type to a general undirected advertisement that allows for connections.

setReadCallback() 和setCCCDCallback()用於註冊將在讀取電池電量數據或用戶啟用通知時調用的函數。

BLE.configserver(1) 用於告訴藍牙堆棧有一個服務將會運行。

addService()將電池服務註冊到藍牙堆棧。