Admin 4c1a38fd1f 修复WiFi和BLE相关问题
1. BLE数据接收超时处理改进
   - 当数据接收超时且未被处理时,自动当作接收完成进行处理
   - 避免因JSON提取失败导致数据丢失

2. WiFi重连状态管理修复
   - 修复WiFi重连时状态卡死在WIFI_SCANNING的问题
   - 扫描失败后正确恢复为WIFI_DISCONNECTED状态

3. WiFi扫描前硬件状态重置
   - 在扫描前使用WiFi.disconnect(false)断开连接(保留配置)
   - 增加200ms等待时间,避免硬件状态异常导致扫描失败

4. WiFi连接前扫描结果清理
   - 在连接前调用WiFi.scanDelete()删除扫描结果
   - 增加300ms等待时间,让WiFi硬件完全准备好

5. WiFi扫描冲突防护机制
   - 添加isScanning标志位防止同时进行多个扫描操作
   - 避免蓝牙扫描和重连扫描冲突导致扫描失败
2026-03-02 18:11:11 +08:00
2026-01-22 16:36:22 +08:00
2025-12-15 09:19:47 +08:00
2025-12-15 09:19:47 +08:00
2026-03-02 18:11:11 +08:00
2026-01-22 16:36:22 +08:00
2025-12-15 09:19:47 +08:00
2025-12-15 09:19:47 +08:00
2025-12-15 09:19:47 +08:00
2026-03-02 18:11:11 +08:00
2025-12-15 09:19:47 +08:00

Rader_Success_5 - ESP32 雷达数据采集与传输系统

项目简介

本项目是一个基于 ESP32 的智能雷达数据采集与传输系统,通过 R60ABD1 雷达传感器采集人体生命体征数据并通过蓝牙BLE与小程序交互同时支持 WiFi 连接将数据上传到云服务器数据库。

主要功能

1. 雷达数据采集

  • 人体存在检测:实时检测区域内是否有人
  • 心率监测监测人体心率BPM
  • 呼吸率监测:监测人体呼吸频率
  • 睡眠监测:监测睡眠状态(清醒/浅睡/深睡/REM
  • 运动检测:检测人体运动状态
  • 距离测量:测量人体与设备的距离
  • 睡眠质量评分:提供睡眠质量评估

2. 蓝牙通信BLE

  • 设备配置与管理
  • WiFi 网络扫描与配置
  • 设备状态查询
  • 雷达数据实时查询
  • 持续数据发送模式
  • 设备 ID 设置

3. WiFi 连接

  • 自动 WiFi 连接与重连
  • 支持多 WiFi 网络配置(最多 10 个)
  • 网络信号强度检测
  • 网络状态监控

4. 数据上传

  • 将雷达数据上传到 InfluxDB 云数据库
  • 支持每日数据汇总
  • 支持睡眠数据专项上传

硬件配置

主控芯片

  • ESP32:双核微控制器,支持 WiFi 和 BLE

雷达传感器

  • 型号R60ABD1
  • 通信接口UART
  • 检测范围:人体存在、心率、呼吸率、睡眠状态等

引脚定义

引脚 功能 说明
GPIO 0 Boot 按钮 配置清除按钮
GPIO 48 网络状态 LED 指示网络连接状态
GPIO 4 配置清除 LED 指示配置清除状态
GPIO 8 自定义 GPIO 用户自定义功能
GPIO 9 自定义 GPIO 用户自定义功能

LED 状态指示

状态 LED 行为 说明
初始化/未连接 慢闪1秒间隔 正在初始化或未连接网络
连接中 快闪200ms间隔 正在连接 WiFi
已连接 呼吸灯 WiFi 已连接
断开连接 慢闪1秒间隔 WiFi 断开连接

软件架构

核心模块

1. RadarManager雷达管理器

  • 雷达数据采集与解析
  • UART 通信管理
  • 数据队列管理
  • BLE 数据发送

2. WiFiManagerWiFi 管理器)

  • WiFi 网络扫描
  • WiFi 连接管理
  • 配置存储与加载
  • 自动重连机制

3. 主程序main.cpp

  • 任务调度与管理
  • LED 状态控制
  • 按钮监控
  • 系统初始化

FreeRTOS 任务

任务名称 功能 优先级
uartProcessTask UART 数据处理
radarDataTask 雷达数据处理
bleSendTask BLE 数据发送
vitalSendTask 生命体征数据发送
wifiMonitorTask WiFi 状态监控
ledControlTask LED 状态控制
bootButtonMonitorTask 按钮监控
configClearLedTask 配置清除 LED 控制

BLE API 文档

详细的 BLE API 文档请参考 BLE_API.md

主要 API 命令

  • scanWiFi - 扫描 WiFi 网络
  • getSavedNetworks - 获取已保存的 WiFi 网络
  • setWiFiConfig - 配置 WiFi 网络
  • queryStatus - 查询设备状态
  • setDeviceId - 设置设备 ID
  • startContinuousSend - 启动持续发送
  • stopContinuousSend - 停止持续发送
  • queryRadarData - 查询雷达数据
  • echo - 回显测试

BLE 连接参数

  • 服务 UUID: a8c1e5c0-3d5d-4a9d-8d5e-7c8b6a4e2f1a
  • 特征值 UUID: beb5483e-36e1-4688-b7f5-ea07361b26a8
  • 分包大小: 20 字节/包
  • 数据格式: JSONUTF-8 编码)

数据结构

传感器数据SensorData

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 快速眼动睡眠

配置管理

设备 ID

  • 有效范围1000-1999
  • 存储位置ESP32 FlashPreferences
  • 默认值0000未设置

WiFi 配置

  • 最大保存数量10 个网络
  • 最小信号强度-200 dBm
  • 连接超时15 秒
  • 重连间隔2 秒

配置清除

  • 触发方式:启动时按住 Boot 按钮 3 秒
  • 清除内容:所有 WiFi 配置和设备 ID
  • LED 指示:呼吸灯模式

编译与烧录

开发环境

  • IDEArduino 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 客户端库

编译步骤

  1. 使用 Arduino IDE 打开项目
  2. 选择开发板ESP32 Dev Module
  3. 选择正确的串口
  4. 点击"上传"按钮编译并烧录

使用说明

首次使用

  1. 上电启动设备
  2. 通过手机蓝牙连接设备
  3. 使用小程序扫描 WiFi 网络
  4. 配置 WiFi 连接信息
  5. 设置设备 ID可选
  6. 设备自动连接 WiFi 并开始上传数据

日常使用

  1. 设备自动连接已保存的 WiFi
  2. 雷达数据实时采集
  3. 数据自动上传到云服务器
  4. 可通过 BLE 查询设备状态和雷达数据

配置清除

  1. 断电重启设备
  2. 按住 Boot 按钮不放
  3. 上电后保持按住 3 秒
  4. 配置清除 LED 呼吸闪烁
  5. 释放按钮,配置已清除

项目结构

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                  # 项目说明文档

技术特点

  1. 模块化设计:雷达管理和 WiFi 管理分离,便于维护和扩展
  2. 多任务处理:使用 FreeRTOS 实现多任务并发处理
  3. 队列通信:使用 FreeRTOS 队列实现任务间数据传递
  4. 流控机制BLE 数据发送采用流控,避免数据拥塞
  5. 自动重连WiFi 断开后自动重连,提高系统稳定性
  6. Flash 存储:使用 Preferences 持久化存储配置信息
  7. LED 状态指示:直观的 LED 状态显示,便于用户了解设备状态

注意事项

  1. WiFi 限制:仅支持 2.4GHz WiFi 网络
  2. BLE 连接:一次只能连接一个 BLE 客户端
  3. 数据上传:需要确保 WiFi 连接正常才能上传数据
  4. 设备 ID必须在有效范围内1000-1999
  5. 配置清除:清除配置后需要重新配置 WiFi 和设备 ID
  6. 雷达安装:建议安装在床铺正上方,距离 1-2 米

版本历史

版本 日期 说明
5.0 2025-02-28 第5版重构代码结构添加雷达和 WiFi 管理器模块

许可证

本项目仅供学习和研究使用。

联系方式

如有问题或建议,请联系项目维护者。


项目地址http://lmhrt.cn:6771/ming/Rader_Success_5.git

Description
获取雷达数据并且发送到云服务器数据库,并且用蓝牙与小程序进行交互
Readme 336 KiB
Languages
C++ 96.7%
C 2.4%
JavaScript 0.7%
Python 0.2%