Qualcomm QCA4020 實例-2(BLE Lights應用)

在上一篇中,我們已教大家關於GPIO與I2C的應用-Qualcomm QCA4020 實例-1( I/O應用),這次進行進階教學,使用手機APP 藍牙來開啟QCA4020 CDB上的LED Lights,讓大家後續開發BLE應用,都可以快速上手。

1. 目的

瞭解BLE GATT Service以及Characteristic如何創建及應用,透過手機APP的BLE來控制QCA4020 CDB LED Lights。

首先我們需要知道這次使用的元件在QCA4020 CDB開發版上的相對位置(圖1)。

  • GPIO Output是使用GPIO 20,由於我們會需要使用LED(Green)所以依(圖2)所示,需將J16的pin 11與pin12短路。
 圖1
(圖1)

 

(圖2)

 

2. 實例功能說明

我們利用如何開發iOS Swift BLE通訊 (QCA402X BLE應用)這篇博文學習如何開發出BLE APP,這樣一來就可以利用手機APP上的LED On/Off來控制QCA4020 CDB上的GPIO 20 LED(Green) Lights。

     a. APP按下On(圖3),LED(Green)點亮(圖5)。

     b. APP按下Off(圖4),LED(Green)熄滅(圖6)。

 圖3 圖4
(圖3)(圖4)
  圖5   圖6 
(圖5)(圖6)

 

3. 藍牙開發流程

QCA4020 CDB藍牙開發主要有以下幾個步驟:

    3.1 藍牙初始化

    3.2 註冊GATT Service & Characteristic

    3.3 開啟Advertise

    3.4 手機APP發送Characteristic Write、Read資料

       3.4.1  Characteristic Write資料與LED控制

       3.4.2 Characteristic Read LED Lights狀態資料

====================================================================================================

     3.1 藍牙初始化

          首先我們需要將藍牙協議開啟:利用QCA4020 CDB SDK裡面的Initialize Bluetooth副程式,把BLE Stack開啟(圖7)。

(圖7)

   3.2 註冊GATT Service & Characteristic

          為了能夠讓手機APP可以發現BLE Service & Characteristic資訊,所以必須在QCA4020 CDB 的BLE註冊GATT Service & Characteristic。

          註冊前需要先設定Service UUID以及Characteristic UUID(圖8),將Service設定為16 bit的UUID(圖9),再來設定Characteristic為Write、Read的類型(圖10),接下來把Characteristic設定為16bit UUID(圖11),然後將以上三步驟的資訊放進GATT服務屬性的結構(圖12),最後利用QCA4020 CDB SDK提供的”qapi_BLE_GATT_Register_Service”指令(圖13),把所需要的參數設定好即可成功註冊GATT Service & Characteristic。

 圖8
(圖8)

 圖9
(圖9)

 圖10
(圖10)

 圖11
(圖11)

 圖12
(圖12)

 圖13
(圖13)

   3.3 開啟Advertise

          GATT Service與Characteristic註冊完成後,記得將Advertise開啟(圖14),否則手機是掃描不到藍牙裝置。

 圖14
(圖14)

    3.4 手機APP發送Characteristic Write、Read資料

           當手機APP藍牙與QCA4020 CDB 藍牙連線成功後,QCA4020 CDB可以接收到手機APP發送Write或Read功能。

           QCA4020 CDB收到GATT功能都會呼叫”GATT_ServerEventCallback_Lights_service” 副程式,我們可以利用QCA4020 CDB提供的兩個Case (圖15)來識別手機APP 發送的是”Write”還是”Read”功能。

 圖15
(圖15)


                                          QCA4020 CDB是使用Attribute offset(圖16)來辨識手機APP發送的Write或Read功能是使用哪一個Characteristic,目前我們只有一個Characteristic所以只需要一個Attribute offset,如果Characteristic變多了,那就需要定義各自的Attribute offset。

 圖16
(圖16)

         3.4.1 Characteristic Write資料與LED控制

                        機APP要控制QCA4020 CDB LED Lights狀態時,會發送BLE Characteristic Write功能給QCA4020 CDB,此時會呼叫”GATT_ServerEventCallback_Lights_service”副程式。

                   接著會進入”QAPI_BLE_ET_GATT_SERVER_WRITE_REQUEST_E”(圖17)Cass裡面,我們利用上一篇Qualcomm QCA4020 實例-1( I/O應用)所學到的方式來控制GPIO 20 LED(Green),即可達到BLE控制LED Lights(圖18)。

 圖17
(圖17)

 圖18
(圖18)

         3.4.2 Characteristic Read LED Lights狀態資料

                          手機APP要讀取QCA4020 CDB LED Lights狀態時,會發送BLE Characteristic Read功能給QCA4020 CDB,此時會呼叫”GATT_ServerEventCallback_Lights_service”副程式。

                    然後會進入” QAPI_BLE_ET_GATT_SERVER_READ_REQUEST_E” Cass裡面,我們可以利用QCA4020 CDB內建的”qapi_BLE_GATT_Read_Response”指令 (圖19),將目前LED Lights的狀態資訊回傳給手機APP。

 圖19
(圖19)


結語:

看完這次的實例後,相信大家已經可以透過手機APP使用藍牙對QCA4020 CDB對連線以及發送指令,其他更多的BLE資訊,就等大家去探索了,如果在開發時遇到什麼問題,歡迎在下方”評論”提出你的疑問,我們可以一起來討論唷,喜歡我的帖子,請幫我按個”收藏”,我們下回見。

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論