nRF5 SDK for Mesh
Nordic 官方的 Bluetooth Mesh 软件开发包¶
简介¶
The nRF5 SDK for Mesh 是 Nordic 为在 nRF5 系列芯片上运行标准 Bluetooth Mesh 协议而推出的软件开发包。利用该软件开发包,开发者可以很方便地构建 Bluetooth Mesh 应用。
mesh 是低功耗蓝牙的一种全新网络拓扑结构选择,于2017年夏季推出。它代表蓝牙技术的一项重要进展,将蓝牙定位为包括智能楼宇和工业物联网在内的各大新领域和新用例的主流低功耗无线通信技术。
在 mesh 网络中,中继节点(RN)会将接收到的数据包不断广播下去,直到目标节点(N)收到该数据包为止,这是一种称为‘泛洪(flooding)’的网络结构。
你可以在 Bluetooth SIG 了解更多关于 Bluetooth Mesh 的介绍:
更多关于 nRF5 SDK for Mesh 介绍, 可以前往 nordicsemi.com。
本文档主要介绍如何快速搭建开发环境、编译运行 Bluetooth Mesh 示例。
安装 Mesh 工具链¶
在开始编译之前,需要安装 CMake
、GNU Arm Toolchain
、ninja
工具。这里分别介绍在 macOS、Windows、Linux 系统上安装相关工具。
macOS¶
-
brew install cmake ninja
-
下载并安装 GNU ARM Embedded Toolchain. 建议使用
6-2017-q2-update
版本,然后将工具链的目录添加到系统环境变量中:# 在 ~/.bash_profile 文件中添加以下命令: export PATH="<path to install directory>/gcc-arm-none-eabi-6-2017-q2-update/bin:${PATH}"
-
验证
arm-none-eabi-gcc
是否配置正确:arm-none-eabi-gcc --version
-
为方便后续烧录固件,还需要安装 nRF5x Command Line Tools 和 pyOCD。
Windows¶
在 Windows 系统上最简单的方法是使用 Windows 包管理器 Chocolatey。
- 按照 Chocolatey 安装页面 介绍安装 Chocolatey
-
以管理员身份运行命令行工具(
cmd.exe
) -
为避免每安装一个程序都需要单独确认一遍,可使能
allowGlobalConfirmation
:choco feature enable -n allowGlobalConfirmation
-
安装 CMake:
choco install cmake --installargs 'ADD_CMAKE_TO_PATH=System'
-
安装其他工具,安装完成后关闭命令行工具:
choco install git python ninja
-
下载并安装 GNU ARM Embedded Toolchain。建议使用
6-2017-q2-update
版本,然后将工具链的目录添加到系统环境变量中 -
为方便后续烧录固件,还需要安装 nRF5x Command Line Tools 和 pyOCD。
Linux¶
这里以 Unbuntu 为例介绍如何配置开发环境,其他 Linux 发行版与此类似。
-
确认系统已经更新完成:
sudo apt-get update sudo apt-get upgrade
-
使用
apt-get
安装以下工具:sudo apt-get install --no-install-recommends git cmake ninja-build python3-pip
-
下载并安装 GNU ARM Embedded Toolchain. 建议使用
6-2017-q2-update
版本,然后将工具链的目录添加到系统环境变量中 -
为方便后续烧录固件,还需要安装 nRF5x Command Line Tools 和 pyOCD。
克隆源码仓库¶
从 GitHub 克隆 nrf52840-mdk
仓库:
git clone ---recursive https://github.com/makerdiary/nrf52840-mdk.git
如果已经克隆过该仓库,可使用以下命令更新 nRF5-SDK-for-Mesh
子模块:
git submodule update --init
nRF5 SDK for Mesh
需要配合 nRF5 SDK
一起编译,可参考以下链接进行安装:
编译 Mesh 协议栈和示例¶
现在你可以开始编译 Mesh 协议栈和相关示例,最简单的方法是在 nrf_sdks/nRF5-SDK-for-Mesh
目录创建 build
文件夹,用来存放 ninja 生成的文件:
nRF5-SDK-for-Mesh$ mkdir build && cd build
接着使用 cmake
工具来编译,你需要指定 TOOLCHAIN
、PLATFORM
、BOARD
参数,系统会自动确定可用的 SOFTDEVICE
:
cmake -G Ninja -DTOOLCHAIN=gccarmemb -DPLATFORM=nrf52840_xxAA -DBOARD=nrf52840_mdk -DFLASHER=pyocd ..
生成编译文件后便可使用 ninja <target>
命令进行编译,这里以 my_light_switch_client
为例:
ninja my_light_switch_client_nrf52840_xxAA_s140_6.1.0
下载运行 mesh 示例¶
连接 nRF52840-MDK 开发板,使用 ninja flash_<your target>
命令可以自动下载运行示例:
ninja flash_my_light_switch_client_nrf52840_xxAA_s140_6.1.0
使用串口调试工具(如:PuTTY 或者 screen)打印调试信息:
screen /dev/cu.usbmodem141102 115200
以同样的步骤在其他 nRF52840-MDK 开发板上下载 Server 示例:
ninja flash_my_light_switch_server_nrf52840_xxAA_s140_6.1.0
至此,你可以使用 nRF Mesh mobile app(iOS/Android) 来建立 Bluetooth Mesh 网络:
如何创建新项目¶
你也可以从头创建新项目,最简单的方式是:
- 从
examples
目录复制现有的示例,例如:复制examples/my_beaconing
,并改为examples/my_app
; - 修改
examples/CMakeLists.txt
文件,添加add_subdirectory("my_app")
命令; - 修改
examples/my_app/CMakeLists.txt
文件,修改 target:set(target "my_app")
; -
生成编译文件:
nRF5-SDK-for-Mesh $ mkdir build && cd build build $ cmake -G Ninja -DTOOLCHAIN=gccarmemb -DPLATFORM=nrf52840_xxAA -DBOARD=nrf52840_mdk -DFLASHER=pyocd ..
-
编译新的目标示例:
ninja my_app
-
下载固件:
ninja flash_my_app
更多示例¶
至此,你应该已经掌握如何编译运行基于 nRF5 SDK for Mesh 的示例,我们还会不断增加一些新的示例到 nrf52840-mdk 仓库中,敬请关注!
参考资源¶
问题反馈¶
如果在开发过程遇到任何问题,可以通过 GitHub Issue 寻求解决。