【轉載】App Inventor 開發BLE應用

FBshark發表於2024-07-08

1. 文章1:搭建環境的介紹:

【深海王國】小學生都能做的APP?AppInventor、BLE藍芽、Arduino聯合開發你的第一個手機遠端控制程式(1)

連結:https://blog.csdn.net/D13162580021/article/details/139026624?spm=1001.2014.3001.5502

2. 文章2:BLE基本知識的介紹:

【深海王國】小學生都能做的APP?AppInventor、BLE藍芽、Arduino聯合開發你的第一個手機遠端控制程式(3)

連結:https://blog.csdn.net/D13162580021/article/details/139046680?spm=1001.2014.3001.5502

摘抄:

BLE低功耗藍芽的通訊流程:

大都督溫馨提示:以下知識較為深入,僅供有興趣的的同學參考學習,時間比較趕的同學可以只看BLE藍芽通訊流程圖和下面的解釋。

低功耗藍芽的特性,讓它非常適合那些長時間靠電池供電,只偶爾傳送少量資料的小裝置。比如健康手環、追蹤標籤、物聯網感測器等等。在BLE通訊模式中,存在兩類裝置:BLE服務端(BLE Server)和BLE客戶端(BLE Client)。通訊時,BLE服務端向外傳送訊號,可以被附近的BLE客戶端發現,一個BLE客戶端可以連線特定的服務端,然後讀取服務端傳送的訊號資料。

理解BLE通訊還需要幾個概念,最重要的就是GATT,GATT全稱為Generic Attributes。可以簡單地為BLE藍芽通訊的基礎資料結構。

BLE Service:GATT結構裡最上層的是Profile,一個Profile包含至少一個BLE Service,通常一個BLE裝置是包含多個Service的。

這些BLE Service並不可自行設定,而是由藍芽技術聯盟(Bluetooth Special Interest Group)為了規範而事先統一制定的。比如有顯示電量的Service,還有心跳、血壓、計重等等各種Service。

BLE Characteristic:每個Service下面包含一個或者多個特徵(Characteristic),這些Characteristic包含特徵的宣告(Declaration)、資料值(Value)和描述符(Descriptor)。這些特徵組成可以完整地描述一個Characteristic如何被使用,常見的操作如:Broadcast、Read、Write without response、Write、Notify、Indicate、Authenticated Signed Writes、Extended Properties等。

UUID:在BLE GATT中,每個Service、每個Characteristic和每個Descriptor都有一個特定的128位元的UUID表示,就是類似下面的一串數字: 0x0000xxxx-0000-1000-8000-00805F9B34FB 為了簡化,藍芽技術聯盟定義了16位UUID代替上面的基本UUID的‘x’部分。例如,心率測量特性使用0X2A37作為它的16位UUID,因此它完整的128位UUID為: 0x00002A37-0000-1000-8000-00805F9B34FB

值得注意的是藍芽技術聯盟所用的基本UUID不能用於任何自定義的屬性、服務和特性。另外對於自定義UUID,必須使用另外完整的128位UUID。

【轉載】App Inventor 開發BLE應用

如果你看不懂上面的知識點也沒關係,你只需要把這張通訊流程圖看懂,並且明白兩個最重要的概念服務UUID:serviceUuid和特徵UUID:characteristicUuid就夠了啦。

簡單來說BLE(低功耗藍芽)通訊中,有個東西叫做GATT,我們可以把它想象成一本大書,這本書記錄了BLE藍芽所有的通訊規則和資料格式而服務UUID:serviceUuid就像是書中的一個章節。一本關於藍芽裝置的書,可能有不同的章節,比如“顯示電量”章節、“心跳監測”章節等等。每個章節(或者說serviceUuid)就是為了處理一類特定的資訊或功能。

而在每個章節(service)下面,會有不同的小節,這在BLE通訊中就是特徵UUID:characteristicUuid。如果serviceUuid是“心跳監測”這個章節,那麼它下面的characteristicUuid可能包括“實時心跳速率”、“心跳速率記錄”等小節。小節裡則詳細指明瞭如何讀取心跳速率,或者如何記錄下來。

所以,serviceUuid就是指示一大塊功能區域的唯一識別符號,而characteristicUuid則是具體到這個功能區域下的一項具體功能或資訊的唯一識別符號。每一個都由一個特定的UUID(一串數字標識)來標識,就像每個章節和小節在目錄裡有唯一的編號一樣。

你看,是不是會啦,哈哈,其實很多東西沒有你想象的那麼難,加油!

BLE 與傳統藍芽的區別

【轉載】App Inventor 開發BLE應用

【轉載】App Inventor 開發BLE應用

3、文章3 APP Inventor 如何使用 BLE

使用BLE,主要包括兩方面的內容——BLE的掃描與連線

3-1 BLE的掃描

【轉載】App Inventor 開發BLE應用

3-2 BLE的連線

【轉載】App Inventor 開發BLE應用

3-3 BLE的通訊(讀寫)

【轉載】App Inventor 開發BLE應用

其中:

  • values - 表示待傳送的資料(這裡是單位元組0x01,表示高電平)
  • signed - 表示values資料是否是有符號的數值(假表示無符號)
  • serviceUuid - 服務UUID,通俗來講它就是硬體的唯一身份ID
  • characteristicUuid - 特性UUID,通俗來講它是硬體中某一功能的唯一身份ID

UUID的獲取途徑:

上面程式碼中的兩個UUID僅僅是我們測試物件的硬體的IO控制口的UUID,不同的硬體UUID是不同的,具體可以檢視硬體提供的文件或廠商提供的java原始碼,一般會有提供。

一個硬體UUID示例如下:

【轉載】App Inventor 開發BLE應用

參考文章:

1.App Inventor 2 低功耗藍芽(BLE) 硬體接入、資料通訊及IO控制:https://blog.csdn.net/zqp2013/article/details/135957853

相關文章