BLE – 電池服務

材料準備

範例說明

介紹

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

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

具體的步驟如下:

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

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

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

打開Arduino的範例,”Files” -> “Examples” -> “AmebaBLE” -> “BLEBatteryService”

2

上傳代碼並在上傳完成後按下Ameba上的reset按鈕。

在您的手機上,打開藍牙app,掃描Ameba廣播的藍牙信號,會出現一個名為“AMEBA_BLE_DEV”的設備。

3

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

3

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

4

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

4

程式碼說明

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

BLE.configadvert ()->setAdvType(GAP_ADTYPE_ADV_IND)用於將廣告類型設置為允許連接的通用無定向廣告。

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

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

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

請先確認已安裝QQ通訊軟體