diff --git a/README.md b/README.md new file mode 100644 index 0000000..a92c65d --- /dev/null +++ b/README.md @@ -0,0 +1,260 @@ +# 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. WiFiManager(WiFi 管理器) +- 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](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 字节/包 +- **数据格式**: JSON(UTF-8 编码) + +## 数据结构 + +### 传感器数据(SensorData) +```cpp +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 Flash(Preferences) +- **默认值**:0000(未设置) + +### WiFi 配置 +- **最大保存数量**: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 客户端库 + +### 编译步骤 +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