Rader_Success_5 - ESP32 雷达数据采集与传输系统
本项目是一个基于 ESP32 的智能雷达数据采集与传输系统,通过 R60ABD1 雷达传感器采集人体生命体征数据,并通过蓝牙(BLE)与小程序交互,同时支持 WiFi 连接将数据上传到云服务器数据库。
人体存在检测 :实时检测区域内是否有人
心率监测 :监测人体心率(BPM)
呼吸率监测 :监测人体呼吸频率
睡眠监测 :监测睡眠状态(清醒/浅睡/深睡/REM)
运动检测 :检测人体运动状态
距离测量 :测量人体与设备的距离
睡眠质量评分 :提供睡眠质量评估
设备配置与管理
WiFi 网络扫描与配置
设备状态查询
雷达数据实时查询
持续数据发送模式
设备 ID 设置
自动 WiFi 连接与重连
支持多 WiFi 网络配置(最多 10 个)
网络信号强度检测
网络状态监控
将雷达数据上传到 InfluxDB 云数据库
支持每日数据汇总
支持睡眠数据专项上传
ESP32 :双核微控制器,支持 WiFi 和 BLE
型号 :R60ABD1
通信接口 :UART
检测范围 :人体存在、心率、呼吸率、睡眠状态等
引脚
功能
说明
GPIO 0
Boot 按钮
配置清除按钮
GPIO 48
网络状态 LED
指示网络连接状态
GPIO 4
配置清除 LED
指示配置清除状态
GPIO 8
自定义 GPIO
用户自定义功能
GPIO 9
自定义 GPIO
用户自定义功能
状态
LED 行为
说明
初始化/未连接
慢闪(1秒间隔)
正在初始化或未连接网络
连接中
快闪(200ms间隔)
正在连接 WiFi
已连接
呼吸灯
WiFi 已连接
断开连接
慢闪(1秒间隔)
WiFi 断开连接
雷达数据采集与解析
UART 通信管理
数据队列管理
BLE 数据发送
WiFi 网络扫描
WiFi 连接管理
配置存储与加载
自动重连机制
任务调度与管理
LED 状态控制
按钮监控
系统初始化
任务名称
功能
优先级
uartProcessTask
UART 数据处理
高
radarDataTask
雷达数据处理
高
bleSendTask
BLE 数据发送
中
vitalSendTask
生命体征数据发送
中
wifiMonitorTask
WiFi 状态监控
中
ledControlTask
LED 状态控制
低
bootButtonMonitorTask
按钮监控
低
configClearLedTask
配置清除 LED 控制
低
详细的 BLE API 文档请参考 BLE_API.md
scanWiFi - 扫描 WiFi 网络
getSavedNetworks - 获取已保存的 WiFi 网络
setWiFiConfig - 配置 WiFi 网络
queryStatus - 查询设备状态
setDeviceId - 设置设备 ID
startContinuousSend - 启动持续发送
stopContinuousSend - 停止持续发送
queryRadarData - 查询雷达数据
echo - 回显测试
服务 UUID : a8c1e5c0-3d5d-4a9d-8d5e-7c8b6a4e2f1a
特征值 UUID : beb5483e-36e1-4688-b7f5-ea07361b26a8
分包大小 : 20 字节/包
数据格式 : JSON(UTF-8 编码)
typedef struct {
float breath_rate; // 呼吸率
float heart_rate; // 心率
uint8_t breath_valid; // 呼吸率有效标志
uint8_t heart_valid; // 心率有效标志
uint8_t presence; // 存在状态
uint8_t motion; // 运动状态
int heartbeat_waveform; // 心跳波形
int breathing_waveform; // 呼吸波形
uint16_t distance; // 距离
uint8_t sleep_state; // 睡眠状态
uint32_t sleep_time; // 睡眠时长
uint8_t sleep_score; // 睡眠评分
// ... 更多字段
} SensorData;
值
状态
说明
0
清醒
处于清醒状态
1
浅睡
处于浅度睡眠
2
深睡
处于深度睡眠
3
REM
快速眼动睡眠
有效范围 :1000-1999
存储位置 :ESP32 Flash(Preferences)
默认值 :0000(未设置)
最大保存数量 :10 个网络
最小信号强度 :-200 dBm
连接超时 :15 秒
重连间隔 :2 秒
触发方式 :启动时按住 Boot 按钮 3 秒
清除内容 :所有 WiFi 配置和设备 ID
LED 指示 :呼吸灯模式
IDE :Arduino IDE 2.x
框架 :Arduino ESP32
编译器 :GCC for ESP32
Arduino.h - Arduino 核心库
WiFi.h - WiFi 功能库
BLEDevice.h - BLE 功能库
ArduinoJson.h - JSON 处理库
Preferences.h - Flash 存储库
HTTPClient.h - HTTP 客户端库
使用 platformIO ,在vscode中打开项目
选择正确的串口
点击"上传"按钮编译并烧录
上电启动设备
通过手机蓝牙连接设备
使用小程序扫描 WiFi 网络
配置 WiFi 连接信息
设置设备 ID(可选)
设备自动连接 WiFi 并开始上传数据
设备自动连接已保存的 WiFi
雷达数据实时采集
数据自动上传到云服务器
可通过 BLE 查询设备状态和雷达数据
断电重启设备
按住 Boot 按钮不放
上电后保持按住 3 秒
配置清除 LED 呼吸闪烁
释放按钮,配置已清除
Rader_Success_5/
├── src/
│ ├── main.cpp # 主程序
│ ├── radar_manager.cpp # 雷达管理器实现
│ ├── radar_manager.h # 雷达管理器头文件
│ ├── wifi_manager.cpp # WiFi 管理器实现
│ └── wifi_manager.h # WiFi 管理器头文件
├── BLE_API.md # BLE API 文档
├── 传感器数据.txt # 传感器数据说明
└── README.md # 项目说明文档
模块化设计 :雷达管理和 WiFi 管理分离,便于维护和扩展
多任务处理 :使用 FreeRTOS 实现多任务并发处理
队列通信 :使用 FreeRTOS 队列实现任务间数据传递
流控机制 :BLE 数据发送采用流控,避免数据拥塞
自动重连 :WiFi 断开后自动重连,提高系统稳定性
Flash 存储 :使用 Preferences 持久化存储配置信息
LED 状态指示 :直观的 LED 状态显示,便于用户了解设备状态
WiFi 限制 :仅支持 2.4GHz WiFi 网络
BLE 连接 :一次只能连接一个 BLE 客户端
数据上传 :需要确保 WiFi 连接正常才能上传数据
设备 ID :必须在有效范围内(1000-1999)
配置清除 :清除配置后需要重新配置 WiFi 和设备 ID
雷达安装 :建议安装在床铺正上方,距离 1-2 米
版本
日期
说明
5.0
2025-02-28
第5版,重构代码结构,添加雷达和 WiFi 管理器模块
本项目仅供学习和研究使用。
如有问题或建议,请联系项目维护者。
项目地址 :http://lmhrt.cn:6771/ming/Rader_Success_5.git