BLE – 電池服務
材料準備
- AmebaD [ AMB23 / AMB21 / AMB22 / BW16 / AW-CU488 Thing Plus ] x 1
- Android / iOS 智能手機
範例說明
介紹
BLE使用的是服務器–客戶端模型。服務器我們感興趣的數據,而客戶端連接到服務器來讀取數據。通常,藍牙外圍設備充當服務器,而藍牙中心設備充當客戶端。服務器可以包含許多服務,每個服務包含一組數據。客戶端可以發送讀取或寫入數據的請求,還可以訂閱通知,以便服務器可以向客戶端發送數據更新。
在本示例中,我們在Ameba藍牙堆棧上設置了一個簡單的電池服務,然後使用智能手機來連接Ameba的BLE外設並讀取電池數據。
具體的步驟如下:
請確保在您的手機上安裝了以下藍牙應用程序。這些應用程序將向您顯示由Ameba發送的原始數據,並允許您與數據進行交互。
這裡推薦的應用程序是nRF connect,可在下面的鏈接中找到:
- Android : https://play.google. com/store/apps/details?id=no.nordicsemi.android.mcp
- iOS :https://apps.apple.com/us/app/ nrf-connect/id1054362403
LightBlue是另一種也可以使用的應用程序,但是它的特性比較少:
- Android : https://play.google.com/ store/apps/details?id=com.punchthrough.lightblueexplorer
- iOS :https://apps.apple.com/us/app/lightblue/ id557428110
打開Arduino的範例,”Files” -> “Examples” -> “AmebaBLE” -> “BLEBatteryService”
上傳代碼並在上傳完成後按下Ameba上的reset按鈕。
在您的手機上,打開藍牙app,掃描Ameba廣播的藍牙信號,會出現一個名為“AMEBA_BLE_DEV”的設備。
連接到Ameba藍牙設備,應該會出現可用服務的列表。單擊battery服務展開,可以看到電池電量數據值。方框右邊高亮的箭頭用於讀取數據和訂閱通知。點擊單個箭頭讀取電池電量值,90%的電量值就會顯示出來。
單擊三重箭頭訂閱電池電量值的更新,電池值將自動開始更新。
串行監視器將顯示每秒鐘電池電量的增加。當您單擊其中一個箭頭時,運行在Ameba上的程序將得到通知,並打印顯示出所採取的操作。
程式碼說明
BLEService和 BLECharacteristic用於創建在藍牙設備上運行的電池服務實例。
BLE.configadvert ()->setAdvType(GAP_ADTYPE_ADV_IND)用於將廣告類型設置為允許連接的通用無定向廣告。
setReadCallback() 和setCCCDCallback()用於註冊將在讀取電池電量數據或用戶啟用通知時調用的函數。
BLE.configserver(1) 用於告訴藍牙堆棧有一個服務將會運行。
addService()將電池服務註冊到藍牙堆棧。