TShopping

 找回密碼
 註冊
搜索
查看: 153|回復: 0

[教學] nRF52840 開發 nRF Connect 應用程序 用BLE 數據傳輸

[複製鏈接]
發表於 2020-9-9 23:43:56 | 顯示全部樓層 |閱讀模式
 
Push to Facebook Push to Plurk  
在很多應用場合,BLE 只是作爲一個數據透傳模塊,即將設備端數據上傳給手機,同時接收手機端下發的數據。本文將和大家一起,一步一步演示如何開發一個 BLE 透傳應用程序。按照本文的說明,大家可以很快就實現一個 BLE 透傳應用,BLE 透傳應用已經是 BLE 應用中比較複雜的一種,一旦大家掌握了 BLE 透傳應用,其他 BLE 應用開發就更不在話下了。

本文還將手把手教大家如何提高 BLE 數據傳輸速度(藍牙 4.2 的理論吞吐率大概爲 100kB/s,而我們實際達到了 85kB/s,已經非常接近理論值)。最後,我們將告訴大家如何使用安卓版 nRF Connect 來對你的 BLE 設備進行壓力測試,以測試設備的穩定性和可靠性。文章的最後還會告訴大家如何找到安卓和 iOS 手機 BLE app 開發參考代碼。

°

這是一篇純實踐的文章:

如果你對低功耗藍牙的一些基本概念還不是很懂的話,那麼建議你先看一下這篇文章:【Nordic 博文分享系列】低功耗藍牙 ATT/GATT/Profile/Service/Characteristic 規格解讀,有了 BLE 這些基本概念後,再去看下面的內容,就容易多了。

代碼鏈接

文中涉及的所有代碼都可以在百度網盤找到,地址如下所示:

鏈接:https://pan.baidu.com/s/1FKTfY3Q_zBVvviO7KC7Gyg#list/path=%2Fblog

密碼:y8fb

下載“ble_app_uart_hs_SDK16_0_0.rar”,解壓縮到 SDK16.0.0 如下目錄下:nRF5SDK160098a08e2\examples\ble_peripheral,即可成功編譯和運行。

注意:雖然本文代碼是基於 SDK16.0.0 開發的,但所有新增代碼都可以直接拷貝到 /DK15.0.0/SDK15.2.0/SDK15.3.0 的 ble_app_uart 例子,並可以成功編譯和運行,他們是完全兼容的。

1、開發準備

Nordic nRF52 或者 nRF51 開發板 1 塊。請參考“Nordic nRF51/nRF52 開發流程說明”,購買相應開發板(DK)。
開發環境搭建。簡述如下(詳細說明請參考“Nordic nRF51/nRF52 開發環境搭建”):
安裝 Keil5 MDK
安裝 SDK。如果你使用的是 nRF52 開發板,請安裝最新版 nRF5 SDK (現在最新版本是:nRF5 SDK v16.0.0),下載鏈接:https://www.nordicsemi.com/Software-and-Tools/Software/nRF5-SDK/Download#infotabs。如果你手上是 nRF51 開發板,請選擇 nRF5 SDK v12.3.0 ( nRF51 最高 SDK 版本只能到 12.3.0,後續 SDK 就不再支持 nRF51 了 )
安裝 ARM CMSIS4.5.0,下載鏈接:https://github.com/ARM-software/CMSIS/releases/download/v4.5.0/ARM.CMSIS.4.5.0.pack
安裝 Keil5 Device Family Pack,下載鏈接:https://www.nordicsemi.com/Software-and-Tools/Development-Tools/nRF-MDK/Download#infotabs
安裝 nRF Command Line Tools,下載鏈接(Windows 版):https://www.nordicsemi.com/Software-and-Tools/Development-Tools/nRF-Command-Line-Tools/Download#infotabs
安裝安卓版或者 iOS 版 nRF connect。iOS 版 nRF connect 請到蘋果 app store 下載。安卓版 nRF connect 可以到 Nordic Github 官網上下載,下載鏈接爲:
https://github.com/NordicSemiconductor/Android-nRF-Connect/releases

7. 安裝 PC 版 nRF connect。PC 版 nRF connect 下載鏈接(Windows 版):
https://www.nordicsemi.com/eng/nordic/download_resource/58847/15/21277021/108233

注:如果你使用的是 Linux 系統 /Mac 系統,或者你使用的不是 Keil5-MDK,請參考“Nordic nRF51/nRF52 開發環境搭建”來搭建你的開發環境。

2、Nordic ble_app_uart 應用程序

°

Nordic SDK 已經提供了一個直接就可以編譯和運行的數據透傳應用程序:ble_app_uart,Nordic 將 BLE 透傳服務稱爲 Nordic UART Service (NUS),所以在 Nordic SDK 中,NUS 就是 BLE 透傳服務。請按照如下步驟運行 SDK 自帶的 ble_app_uart 程序:

*確認自己的芯片型號或者開發板。如果採用 Nordic 官方開發板的話,芯片型號和開發板編號對應關係如下:

*nRF52832 和 nRF52810 對應開發板編號爲 PCA10040。雖然 52832 和 52810 共用同一塊開發板,但是他們在 SDK 中的項目編號是不一樣的,52832 對應 PCA10040 目錄,52810 對應 PCA10040e 目錄,由於 52810 和 52832 PIN to PIN 兼容,軟件也是完全兼容的,因此 SDK 很多項目只有 PCA10040 的目錄,而沒有 PCA10040e 目錄,此時需要你自己來建立 PCA10040e 對應的目錄和工程,具體說明可參考:https://infocenter.nordicsemi.com/topic/sdk_nrf5_v16.0.0/nrf52810_user_guide.html?cp=7_1_5_0

*nRF52840 和 nRF52811 對應開發板編號爲 PCA10056。與 832/810 相似,52840 對應的工程目錄爲 PCA10056,而 52811 對應的工程目錄爲 PCA10056e。如何建立一個 PCA10056e 的項目工程可以參考:https://infocenter.nordicsemi.com/topic/sdk_nrf5_v16.0.0/nrf52811_user_guide.html?cp=7_1_5_1

*nRF52840 dongle 編號爲 PCA10059。PCA10059 是一個可以直接插入電腦的小 dongle,它也是使用 52840 芯片,但本身不帶 JLink 接口芯片。

*nRF52833 對應開發板編號爲 PCA10100

*nRF51 系列對應開發板編號爲 PCA10028

這裏我會以 nRF52840 開發板 PCA10056 爲例來闡述整個開發過程,其他開發板與之類似,大家可以舉一反三來開始自己的開發之旅

*將開發板與 PC 機通過 USB 線相連,同時打開開發板電源(將左下角的撥位開關打到“ON”位置)
timeline_20200909_234816.jpg

打開 SDK 中的 ble_app_uart 程序。如果是 52840 開發板,請打開:nRF5_SDK_17.0.0_a53641a\examples\ble_peripheral\ble_app_uart*pca10056\s140\arm5_no_packs

注:Nordic SDK 例程目錄結構爲:SDK 版本 / examples / 藍牙角色 / 例子名稱 / 開發板型號 / 協議棧型號 / 工具鏈類型 / 具體工程,比如下面例子:

nrf52840

nrf52840


Nordic 每一個例子都支持 5 種工具鏈:Keil5/Keil4/IAR/GCC/SES,如下所示:

nrf52840

nrf52840


編譯程序
*如果你已經按照之前的說明配置好了開發環境,那麼這裏編譯是不會報任何錯的。(如果你遇到了編譯錯誤,請重新按照前面說明去搭建你的開發環境,不要懷疑 SDK 例子代碼有問題哦)
°
下載程序
*程序下載包括 2 步:一先下載 softdevice,二再下載應用。Softdevice 是 Nordic 藍牙協議棧的名稱,整個開發過程中只需下載一次。應用就是我們這裏的 ble_app_uart 程序。如果你的開發板已經下載了其他代碼,那麼最好先把開發板全擦一次,然後再下載 softdevice 和應用。

*芯片全擦(可選)。你可以使用 nRF connect 桌面版或者 nrfjprog,二選其一來執行擦除操作。

打開桌面版 nRF Connect,選擇啓動“Programmer”應用,由於驅動之前已經安裝好了,設備可以立即識別成功,執行“Erase all”操作,以擦除芯片原始內容

nrf52840

nrf52840


安裝ble_app_uart到路徑下安裝ble_app_uart_pca10056_s140.HEX
E:\nordisc\DeviceDownload _sdk_17\nRF5SDK17009d13099\nRF5_SDK_17.0.0_9d13099\examples\ble_peripheral\ble_app_uart\hex
使用 nrfjprog 執行全擦操作 5.jpg
鏈接手機
*打開手機藍牙和手機版 nRF connect。在 nRF connect 中,你將看到一個廣播設備:Nordic_UART,這個就是開發板的廣播名字。點擊“CONNECT”,手機將與設備建立連接,並開始服務發現過程,連接成功後,LED1 熄滅,LED2 點亮,兩個關鍵界面如下所示:
6.jpg

7.jpg
*上圖的 Nordic UART Service (NUS)就是我們的數據透傳服務, NUS 具體包括兩個 characteristic:TX 和 RX,由於 NUS 是由設備提供的,所以 TX 表示設備發送數據給手機,RX 表示設備接收手機發過來的數據。
°
測試 NUS 服務
ble_app_uart 使用串口與上位機交互,選擇一款串口助手軟件,比如 termite,打開該串口軟件,並做如下設置:
*Baud rate: 115.200kbps
*8data bits
*1 stop bit
*No parity
8.jpg
重新將開發板連上手機,然後點擊右上角的“Enable CCCDs”以使能 notification,如下所示:
9.jpg
設備接收數據
點擊 RX characteristic 旁邊的向上箭頭,通過手機藍牙往設備發送:12345678,如下所示:
timeline_20200910_000632.jpg
此時設備通過串口打印出剛纔接收到的數據,如下所示:
10.jpg
在串口助手中輸入“abcdefgh”並輸入“\n”作爲結束符,設備將把串口收到的數據通過藍牙發送給手機,手機的 TX characteristic 將顯示上述字符串,如下所示:亂碼(想辦法解決中)
11.jpg

文章出處:網頁設計,網站架設 ,網路行銷,網頁優化,SEO - NetYea 網頁設計

參考文章


 

臉書網友討論
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2020-9-19 04:09 , Processed in 0.062409 second(s), 24 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表