基于ESP32C6-WROOM-1的低功耗BLE扫描设备项目,使用LP Core实现按键/定时器唤醒
- 持续运行监控: LP Core永不退出,24/7后台服务
- 精确定时系统: 30秒定时器,误差±100ms
- 跨周期状态管理: 完美的主CPU睡眠/唤醒周期状态持久化
- 100%准确计数: 已验证77次连续唤醒无数据丢失
=== 验证成果 ===
✅ 定时器唤醒次数: 77 (30秒精确周期)
✅ 总唤醒事件数: 77 (100%准确计数)
✅ LP Core循环计数: 78 (持续运行验证)
✅ 深度睡眠功耗: 目标<50uA
- 双重唤醒源: GPIO2按键唤醒 + 30秒定时器唤醒
- 智能识别: 准确区分GPIO vs Timer唤醒源
- BLE扫描: 定期扫描特定BLE设备(开发中)
- 低功耗设计: 主CPU大部分时间处于深度睡眠
- 开发板: ESP32-C6-DevKitC-1 v1.2
- 模块: ESP32C6-WROOM-1 (8MB Flash)
- 连接: USB-A to USB-C线缆
- 按键: GPIO2外接按键(可选)
- ESP-IDF: v5.5+
- 工具链: riscv32-esp-elf
- Python: 3.8+
- 平台: macOS/Linux/Windows
# 克隆项目
git clone https://github.com/ESPNetkit/esp32c6-blekey-lowpower.git
cd esp32c6-blekey-lowpower
# 设置ESP-IDF环境
source ./setup_env.shcd src
idf.py build
idf.py -p /dev/cu.usbserial-10 flash monitorESP32C6 BLEKey Low Power Project Starting...
Configuration: GPIO2 button wakeup, 30-second timer wakeup
Not a ULP wakeup, initializing LP Core program...
LP Core program initialized successfully
Entering deep sleep mode...
# 30秒后自动唤醒
=== LP Core持续运行状态分析 ===
- 定时器唤醒次数: 1
- 总唤醒事件数: 1
- LP Core循环计数: 2
⏰ 唤醒原因: 30秒定时器到期
💡 执行动作: 定期BLE设备检查
┌─────────────────┐ ┌──────────────────┐
│ 主CPU (ESP32C6) │ │ LP Core处理器 │
│ │ │ │
│ • 深度睡眠管理 │◄──►│ • 30秒定时器 │
│ • 唤醒源分析 │ │ • GPIO2监控 │
│ • BLE扫描控制 │ │ • 持续运行循环 │
│ • 用户界面显示 │ │ • 状态计数器 │
└─────────────────┘ └──────────────────┘
▲ ▲
│ │
深度睡眠模式 24/7运行监控
esp32c6_lowpower_blekey/
├── src/
│ ├── main/
│ │ ├── main.c # 主程序逻辑
│ │ └── ulp/main.c # LP Core程序
│ ├── CMakeLists.txt # 构建配置
│ └── sdkconfig # ESP-IDF配置
├── docs/ # 技术文档
├── setup_env.sh # 环境配置脚本
└── README.md # 项目说明
- ESP-IDF环境配置 - v5.5完整工具链
- LP Core双重唤醒 - GPIO+定时器完美运行
- 持续运行架构 - 永不退出main函数
- 状态持久化 - 跨主CPU周期的计数器系统
- 硬件验证 - 77次连续唤醒测试通过
- BLE Central集成 - 设备扫描和识别
- 目标设备检测 - 特定BLE设备匹配
- 功耗优化 - 深度睡眠电流测量
- 配置管理 - 运行时参数调整
- 错误恢复 - 看门狗和异常处理
- 用户界面 - Web配置界面
#define WAKEUP_PIN 2 // GPIO2按键
#define TIMER_WAKEUP_PERIOD_SEC 30 // 30秒定时器- 深度睡眠电流: <50uA (目标)
- 唤醒时间: <100ms
- 定时器精度: ±100ms
- 编译错误: 确保ESP-IDF v5.5正确安装
- 串口连接: 检查/dev/cu.usbserial-10端口
- LP Core不唤醒: 验证GPIO2连接和上拉电阻
# 查看详细日志
idf.py monitor --print_filter="*:DEBUG"
# 检查编译大小
idf.py size
# 分析内存使用
idf.py size-components- Fork项目到个人仓库
- 创建功能分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add amazing feature') - 推送分支 (
git push origin feature/amazing-feature) - 创建Pull Request
- 使用中英文混合注释
- 遵循ESP-IDF编码规范
- 包含详细的调试信息
- 添加相应的测试用例
本项目采用MIT许可证 - 详见LICENSE文件
- Espressif Systems - ESP32C6芯片和ESP-IDF框架
- ESP-IDF Community - 开源开发框架
- 所有贡献者和测试者
- 项目维护: ESPNetkit Team
- GitHub: https://github.com/ESPNetkit
- Issues: https://github.com/ESPNetkit/esp32c6-blekey-lowpower/issues
⭐ 如果这个项目对你有帮助,请给我们一个Star!
最后更新: 2025年8月7日
项目状态: 积极开发中 🚀