# PHY **Repository Path**: keNengbu/phy ## Basic Information - **Project Name**: PHY - **Description**: 基于PHY6252平台完成蓝牙连接与数据的发送与接收 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-07-22 - **Last Updated**: 2025-09-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PHY6252 SDK源码版本为3.1.3 ## 基于PHY6252芯片的蓝牙LED控制器(SP611E)[simpleBLEPeripheral工程](PHY6222(52)_V313_0512/example/ble_peripheral/simpleBlePeripheral/source/simpleBLEPeripheral.c) 1. 基于PHY6252平台使用SPI驱动WS2812RGB芯片灯珠并且移植好PY32的7种灯效,以及按键控制灯带开关,模式切换和调速。 2. 完成蓝牙连接与数据的发送与接收。实现APP发现设备,成功连接进入到控制界面。 3. 可以通过APP切换效果、修改颜色、亮度和速度。 4. 加入DMA通道搬运,实现APP控灯响应迅速。新增根据设备MAC地址自动修改广播数据包。新增修改蓝牙设备名后广播新名称并写入NVS进行持久化存储,实现上电读取。 ## BLE Mesh协议配网遥控器(SP32XE、SP31XE) [mesh遥控器程序流程图](https://alidocs.dingtalk.com/i/nodes/R1zknDm0WRn6reBqUg5OBMKmWBQEx5rG?utm_scene=person_space) - 方案1:通过PB-GATT配网后转变配网者Provisioner,自动发起PB-ADV配网。 [mesh_gateway_control工程](PHY6222(52)_V313_0512/example/ble_mesh/mesh_gateway_control/source/samples/appl_sample_example_phylight.c) - 方案2:通过每隔100ms进行更新广播数据,未配网设备一直监听特定的广播包,等到收到全部数据后拼接起来。 [mesh_light_control工程](PHY6222(52)_V313_0512/example/ble_mesh/mesh_light_control/source/samples/appl_sample_example_phylight.c) - 方案3:Mesh配网数据通过蓝牙扩展广播Extended Advertising发出,未配网设备一直扫描特定的广播包。收到解析配网。 [mesh_light_control-Ext_Adv工程](PHY6222(52)_V313_0512/example/ble_mesh/mesh_light_control-Ext_Adv/source/samples/appl_sample_example_phylight.c) - 方案4:使用2.4G RF射频 [mesh_light_control-nrf工程](PHY6222(52)_V313_0512/example/ble_mesh/mesh_light_control-nrf/source/samples/appl_sample_example_phylight.c) # 快速配网协议对接 ## 方案1 PB-ADV 来源自[乐鑫快速配网方案](https://github.com/espressif/esp-idf/blob/2044fba6e71422446986f9ae0909b1ab67e57815/examples/bluetooth/esp_ble_mesh/fast_provisioning/fast_prov_server/tutorial/EspBleMesh.md) PB-GATT配网实测时间 15s(不包括操作APP时间) PB-ADV配网实测时间 4~5s (不用操作APP) ### 已实现功能 通过手机GATT连接 → 配网成功 → 断开手机连接 GATT断开后 → 启动PB-ADV配网 → 扫描未配网设备 → 自动配网未配网设备 配网完成 → 启动10秒地址计时器 → 发现新设备时重置计时器 → 10秒无新设备 → 触发超时处理 → 停止配网 → 启动代理 → 重连手机 → 发送节点列表 - P7按键 :发送开灯命令到组播地址0xFFFF - P18按键 :发送关灯命令到组播地址0xFFFF - P15按键 :进入PB-ADV配网模式 ### 相关说明 配网数据是获取遥控器自身的NetKey、AppKey。单播地址是设置了一个范围,每配网完成就会递增存入flash。配网的时候修改UI_prov_data结构,然后使用发送配网数据函数MS_prov_data发出去,不需要协商。 ```c /* Provisioning data structure */ PROV_DATA_S UI_prov_data = { /* NetKey */ { 0x50, 0x48, 0x59, 0x50, 0x4C, 0x55, 0x53, 0x49, 0x6e, 0x63, 0x4e, 0x65, 0x74, 0x4b, 0x65, 0x79 }, /* Index of the NetKey */ 0x0000, /* Flags bitmask */ 0x00, /* Current value of the IV index */ 0x00000000, /* Unicast address of the primary element */ 0x0002 }; ``` ### 节点单播地址列表自动上报 格式:TID + 操作码(0x05) + 节点数量 + 地址列表 ### 手动查询支持 发送命令(0x05) : 手机主动发送0x05命令 → 主配网者响应 → 返回节点地址列表 构造标准消息格式:TID + 操作码(0x05) + 节点数量 + 地址列表 [TID] [0x05] [节点数量] [地址1_低] [地址1_高] [地址2_低] [地址2_高] ... 示例 : - TID: 0x01 - 操作码: 0x05 - 节点数量: 0x03 (3个节点) - 地址列表: 0x02 0x00 0x03 0x00 0x04 0x00 (地址0x0002, 0x0003, 0x0004) - 命令格式: 0xD150530105 ### 设备密钥获取 发送命令(0x04) : - 0xD1 0x50 0x53 [TID] 0x04 0xD150530104 响应格式: - TID + 0x04 + 16字节DevKey ## 方案2 分包组包 ## 方案3 蓝牙扩展广播Extended Advertising ## 方案4 2.4G RF射频 ### LED - 长亮 - 遥控器处于Unprovisioned Device未配网状态下 - 超快闪 (100ms间隔) - 触发按键 闪1次 - 设备配网完成(配网中)失败闪5次 - 应用密钥无效 闪3次 - 快闪 (300ms间隔) - 手机与设备连接 闪3次 - 代理功能启用(手机与设备断开连接) 闪3次 - ~~代理功能禁用闪3次~~ - 慢闪 (1s间隔) - 设备配网完成(配网中) 成功闪5次 - 超慢闪(3s间隔) - 呼吸: - 以2.4G发送mesh配网数据 - 灭: - 配网完成