~/Jaycee
← 返回作品列表

雷达传感器配置

基于 Flutter + BLE 的毫米波雷达配置工具:距离门灵敏度、光照阈值、底噪检测与一键自动配置。

雷达传感器配置 的封面图

项目背景

毫米波雷达人体存在传感器(HLK-LD2410C)在出厂或现场部署时,需要配置检测距离、灵敏度、光照阈值等参数——传统方式是接串口用命令行工具调试,现场操作很不方便。这个项目把配置流程搬到了手机上:通过 BLE 蓝牙直连雷达模块,可视化地完成参数配置、实时数据观测与灵敏度调优,并配套整理了一份完整的 BLE 命令协议文档。

核心功能

  • 设备扫描与连接:BLE 扫描过滤雷达设备、信号强度展示、连接状态监听与断线重连引导;完整处理 Android 12+ 的 BLUETOOTH_SCAN/BLUETOOTH_CONNECT 运行时权限与旧版本位置权限差异
  • 雷达参数配置:检测距离(9 个距离门,0–6 米)与灵敏度(0–100)双滑块调节、运动/静止独立灵敏度、光照阈值(超过阈值设备停止工作)、关闭延时(滚轮选择器)、波特率、距离分辨率、上报模式、恢复出厂、模块重启
  • 实时数据可视化:解析雷达上报的目标信息(运动/静止目标的距离与能量),以 fl_chart 折线图实时绘制;支持工程模式数据展示与光感数值读数
  • 底噪检测与自动配置:一键采集各距离门底噪的最小/最大/平均值(运动与静止分通道统计),基于噪声基准自动生成各距离门灵敏度配置——把「凭经验调灵敏度」变成「按环境实测」
  • 原始数据日志:BLE 收发的原始帧落盘为日志文件,支持通过系统分享面板导出,便于现场抓包排查协议问题
  • 中英双语:基于 GetX i18n 的完整国际化,跟随系统语言切换

BLE 协议实现

项目依据 LD2410C 串口通信协议实现了完整的命令栈,核心是一套二进制帧协议:

帧头 FD FC FB FA + 数据长度(2B) + 命令字(2B) + 参数(NB) + 帧尾 04 03 02 01
UI 功能命令字说明
灵敏度 / 检测距离0x0064按距离门批量写入运动/静止灵敏度
光照阈值 / 辅助控制0x00AD光感控制模式、阈值与输出电平
进入 / 退出配置模式0x00FF / 0x00FE配置类命令的前置状态
验证密码0xA8配置模式前置鉴权
重启模块0x00A3使配置生效

协议层的几个关键处理:

  • 配置模式状态机:验证密码 → 进入配置 → 执行配置命令 → 退出配置 → 重启生效,严格按协议时序编排
  • ACK 响应匹配:设备响应帧的命令字为原命令 +0x0100,按命令字配对请求,超时判定失败
  • 粘包处理:BLE 单包仅约 20 字节,按帧头/帧尾在接收缓冲区中切帧重组,再进入解析器
  • 发送节流:命令间隔 ≥200ms 防止蓝牙缓冲区溢出,批量写入距离门配置时按序排队发送

技术实现

  • 分层架构:BluetoothService(单例,封装 flutter_blue_plus 的扫描/连接/特征读写与权限申请)→ BluetoothController(协议编解码与业务状态,约 2600 行)→ 视图层(首页 / 设备详情 / 雷达配置 / 参数设置 / 底噪统计五个页面)
  • GetX 响应式状态:配置项、连接状态、图表数据全部为响应式变量,UI 与蓝牙事件解耦
  • 数据流设计:通知特征订阅 → 缓冲切帧 → 帧分类(目标数据 / ACK / 参数回读)→ 状态更新,单一数据通道多协议复用
  • 自定义 UI 组件:滑块轨道与滑块形状定制、灵敏度等级 SVG 图标动态切换(7 级可视化范围图示)、渐变光照阈值色条

配套整理了《雷达设备 BLE 命令协议文档》:帧格式定义、命令列表与示例帧、响应规则、UI 功能到命令字的完整映射表,协议实现参考 HLK-LD2410C 官方串口协议 V1.09。