Skip to content

ESPNetkit/esp32c6-blekey-lowpower

Repository files navigation

ESP32C6 BLEKey Low Power Project

基于ESP32C6-WROOM-1的低功耗BLE扫描设备项目,使用LP Core实现按键/定时器唤醒

ESP-IDF Platform License

🚀 项目特色

⚡ 世界级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

🛠️ 快速开始

1. 环境准备

# 克隆项目
git clone https://github.com/ESPNetkit/esp32c6-blekey-lowpower.git
cd esp32c6-blekey-lowpower

# 设置ESP-IDF环境
source ./setup_env.sh

2. 编译和烧录

cd src
idf.py build
idf.py -p /dev/cu.usbserial-10 flash monitor

3. 预期输出

ESP32C6 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配置界面

📖 技术文档

核心技术说明

API参考

🔧 配置说明

GPIO配置

#define WAKEUP_PIN 2                    // GPIO2按键
#define TIMER_WAKEUP_PERIOD_SEC 30      // 30秒定时器

功耗参数

- 深度睡眠电流: <50uA (目标)
- 唤醒时间: <100ms
- 定时器精度: ±100ms

🐛 故障排除

常见问题

  1. 编译错误: 确保ESP-IDF v5.5正确安装
  2. 串口连接: 检查/dev/cu.usbserial-10端口
  3. LP Core不唤醒: 验证GPIO2连接和上拉电阻

调试工具

# 查看详细日志
idf.py monitor --print_filter="*:DEBUG"

# 检查编译大小
idf.py size

# 分析内存使用
idf.py size-components

🤝 贡献指南

开发流程

  1. Fork项目到个人仓库
  2. 创建功能分支 (git checkout -b feature/amazing-feature)
  3. 提交更改 (git commit -m 'Add amazing feature')
  4. 推送分支 (git push origin feature/amazing-feature)
  5. 创建Pull Request

代码规范

  • 使用中英文混合注释
  • 遵循ESP-IDF编码规范
  • 包含详细的调试信息
  • 添加相应的测试用例

📜 许可证

本项目采用MIT许可证 - 详见LICENSE文件

🙏 致谢

📞 联系方式


⭐ 如果这个项目对你有帮助,请给我们一个Star!

最后更新: 2025年8月7日
项目状态: 积极开发中 🚀

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors