【仓库温湿度自动控制模拟系统】3. RSL10 BLE Mesh 组网初体验
本帖最后由 sunduoze 于 2021-7-24 19:27 编辑#### 展示
#### 准备工作
**目标**:使用ON-IDE环境,RS10-002GEVB板 + RSL10-SENSE-DB-GEVK 实现Mesh组网例程
**环境**:Windows7SP1 + ON Semiconductor IDE_V3.3.0.16 + RS10-002GEVB(板载Jlink) + RSL10-SENSE-DB-GEVK(外部J-Link Lite)
**依赖包**(PACK):[见此链内容](https://bbs.eeworld.com.cn/thread-1164567-1-1.html)
**前期回顾**:
【ON Semiconductor IDE环境RS10-002GEVB板实现Blinky;附加调试避坑指南】
[【仓库温湿度自动控制模拟系统】2. ON Semiconductor IDE 吃(tian)瓜(keng)]( https://bbs.eeworld.com.cn/thread-1164567-1-1.html)
【keil环境RS10-002GEVB板实现Blinky; 彩蛋:Segger RTT&UART printf】
(https://bbs.eeworld.com.cn/thread-1162784-1-1.html)
【开箱照】
(https://bbs.eeworld.com.cn/thread-1162784-1-1.html)
#### 正题(Mesh OnOff task test)
参考文章:***RSL10_bluetooth_mesh_getting_started_guide.pdf***
> path:"..\ONSemiconductor\RSL10Mesh\1.6.79\documentation"
1.从ONSemiconductor.RSL10Mesh.1.6.79.pack中Example导入ble_mesh
2.编译工程,并发现报错,手动屏蔽报错位置的“...->auth ”语句后编译,通过。
3.建立MESH客户端打开工程#include "app_mesh.h",修改105行代码为:
```
#define MESH_APP MESH_APP_SA_GATT_CLIENT//MESH_APP_CLI
```
重新编译后并烧录到RS10-002GEVB板(建议:使用J-Flash Lite 将FLASH全部擦除后再正常烧录)
4.打开手机端APP “RSL10 Mesh”
选择**Add new device**后找到**ON-SEMI-CLN-NODE**并点击,
出现**Node Identification**后点击**Identify**,
等待片刻后出现下一个界面继续点击**Provision**,
等待片刻后出现**Provisioning Log**,后弹出**Provisioning completed**
并选择**CONFIGURE NOW**。
后进入节点配置页面,选择增加**App Key**,进入后任意选择一个key(后续要记得使用的哪个key)
选择增加**App Feature**,进入后任意选择**Proxy**,Done
点开**Element Details**后选择**Generic OnOff Client**并打开,选择增加key绑定,绑定前边的key
退回到主页面,显示Cilent节点中**Proxy**为绿色,显示为连接状态,至此客户端节点配置完成。
5.建立MESH服务端,打开工程#include "app_mesh.h",修改105行代码为:
```
#define MESH_APP MESH_APP_SA_GATT_SERVER_FRIEND//MESH_APP_CLI
```
由于只申请了一套RS10-002GEVB板,服务端节点使用RSL10-SENSE-DB-GEVK板完成,故
修改#include "app.h"中部分代码如下:
```
/* Onboard SW1 push button wired to DIO5 in QFN EVB is used */
#define BUTTON_DIO 15//BTN1//5
/* DIO number that is used for easy re-flashing (recovery mode) */
#define RECOVERY_DIO 12//BTN2
/* DIO number that is connected to LED of EVB */
#define LED_DIO 1 //6
```
同样清除flash后,烧录固件,
6.打开手机端APP “RSL10 Mesh”
选择**Add new device**后找到**ON-SEMI-SRV-NODE**并点击(此处由于验证多节点工能,修改了名称),
出现**Node Identification**后点击**Identify**,等待片刻后出现下一个界面继续点击**Provision**,等待片刻后出现**Provisioning Log**,后弹出**Provisioning completed**,并选择**CONFIGURE NOW**。后进入节点配置页面,选择增加**App Key**,进入后任意选择一个key(和cilent的key相同),此处不增加**App Feature**。
点开**Element Details**后选择**Generic OnOff Client**并打开,选择增加key绑定,绑定前边的key,退回到主页面,显示Cilent节点中**Proxy**为灰色,显示为disconnect状态。
至此客户端节点配置完成。
选择connect后选择cilent节点,重新连接即可。
7.新增cilent节点的配置以实现服务端对客户端的控制。
APP主界面中,选择**ON-SEMI-CLN-NODE**右侧的*3点*选项,选择configure,到节点配置界面后点开**Element Details**后选择**Generic OnOff Client**并打开,选择**Publication Address**,此处可见到新组件**ON-SEMI-SRV-NODE**,选择后退出,至此配置完成。
8.选择**ON-SEMI-SRV-NODE**右侧的*3点*选项,选择Mesh Control,进入后即可读取或控制On OFF状态(mesh服务端节点可以通过app控制,同时可以由mesh客户端节点直接控制,app可以读取节点的实际被控状态)
9.官方app只能添加一个服务端节点,尝试连接2个服务端节点时失败了。起初想通过mesh的基础上增加传感器,然后控制,但是接触的深了发现没有想象的那么简单,mesh还有很多基础的东西需要学习,官方app也没有源代码,整体理解起来慢很多,故在此借官方例子,把流程展示一下,让初学者更快入门。
本帖最后由 sunduoze 于 2021-7-24 20:57 编辑
<p>帖子无法编辑了,在此附上上述用到的源代码和生成的hex</p>
<p> </p>
<p>安卓App:onsemi</p>
<p></p>
<p><strong>客户端</strong></p>
<p>源代码:</p>
<p>RS10-002GEVB板:</p>
<p><strong>服务端</strong></p>
<p>源代码:</p>
<p>RS10-002GEVB板:</p>
<p>RSL10-SENSE-DB-GEVK板:</p>
页:
[1]