开发板:淘宝买的52840模块,应该是兼容官方的52840 dongle板子。
使用NRF Connect SDK开发,需要准备一个调试器,官方VsCodeIDE扩展只支持JLink调试器,其他的调试器可以用OpenOCD。
本人是个嵌入式小白,一共折腾了4天才跑起来,中间走了很多弯路,成功后才发现原来这么容易,都不需要改动代码,还是要好好看文档啊。。。
下载nRF Connect for Desktop
官网地址 https://www.nordicsemi.com/Products/Development-tools/nrf-connect-for-desktop
然后在软件里安装Programmer和Toolchain Manager
Programmer可以在DFU模式下刷固件,此处用不到。
ToolchainManager管理nRF Connect SDK的安装
安装 nRF Command Line Tools
官网地址 https://www.nordicsemi.com/Products/Development-tools/nrf-command-line-tools/download
下载nRF Connect SDK
打开ToolchainManager
选择一个版本进行安装,例如v2.3.0,安装过程比较旧,还需要去Github上拉取代码,最好开代理。
下载好后,点击Open VS Code按钮,会自动检查相关依赖是否安装,根据提示安装缺失依赖即可。
创建项目
在打开的VS Code窗口,打开nRF Connect 选项卡,WELCOME窗口里点击创建新应用
参考下图配置,然后选择模板。
Mesh Light例程需要两个模块,分别刷入Light和Light Switch固件,其中Light板上的LED作为受控端,Light Switch板上的按钮用来控制网络中的Light。
点击此处配置应用
板子选择52840 dongle,点击Build Configuration。
然后点击Kconfig
取消勾选Board has nRF5 bootloader,板子默认固件是带bootloader的,启动时会将bootloader区域设置为只读,而Mesh例程需要在此处写入一些配置,所以如果带bootloader会导致写入失败,程序跑不起来,此处将其关掉。
取消勾选Logging,如果用的jlink支持rtt也可以修改其中的配置使用rtt输出log,这里直接关掉。
GCC优化级别选择不优化,防止调试时乱跳。
修改好后点击右上方Save to file,然后再Build一次
调试器连接板子和电脑,VS Code IDE中只支持jlink调试器,其他调试器要另想办法了,例如用OpenOCD。
先用j-flash擦除,然后写入编译好的固件,这样可以将出场自带的bootloader干掉,擦除后不要重置或断电开发板!!! ,擦除会同时擦除一些重要配置,重置后可能无法连接调试器,我这里如果中途重置了,则jflash无法再刷写固件,原因不明,只能用st-link+openocd刷写之前的备份。
一切正常的话,此时板子应该在跑Light的程序了,另一块板子刷入Light Switch的固件,编译流程和之前一样,然后下载nRF Mesh手机App
https://www.nordicsemi.com/Products/Development-tools/nrf-mesh/getstarted
Network页面点击ADD NODE进行添加节点
两块板子上电后就能在这里搜索出来,根据提示分别添加到Mesh网络中
点击Mesh Light Switch,因为板子只有一个按钮(另一个时Reset),所以此处只有一个OnOFF Client,点击这个OnOFF Client,进入配置页面。
先点击bind key绑定App Key,然后点击SET PUBLICATION设置发布地址,此处配置为Living Room的Group,然后点击APPLY。
然后点击Mesh Light节点,因为板子上有4个LED,所以此处有4个OnOFF Server,随便选择一个,对其进行配置。
同样,先绑定App Key,然后点击SUBSCRIBE,选择Living Room的Group,至此两个节点配置完成
此时点击Light Switch板子上的按钮,Light板子上的LED应该会响应开关
参考
https://devzone.nordicsemi.com/guides/short-range-guides/b/getting-started/posts/nrf52840-dongle-programming-tutorial
https://infocenter.nordicsemi.com/topic/com.nordic.infocenter.sdk5.v15.3.0/lib_bootloader.html?cp=5_0_3_5_0_7#lib_bootloader_memory
https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/samples/bluetooth/mesh/light/README.html
https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/samples/bluetooth/mesh/light_switch/README.html