# ov-watch **Repository Path**: Ethan-Learning/ov-watch ## Basic Information - **Project Name**: ov-watch - **Description**: No description available - **Primary Language**: Unknown - **License**: AFL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-23 - **Last Updated**: 2026-09-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ov-watch 智能手表固件项目,基于 STM32F411 微控制器开发。 ## 项目简介 ov-watch 是一款面向智能手表/穿戴设备的嵌入式固件,实现了多种传感器集成与电源管理功能。系统采用 STM32F411RET6 作为主控芯片,集成了心率监测、环境传感、运动追踪、触控交互等核心功能。 ## 硬件规格 - **主控芯片**: STM32F411RET6 (ARM Cortex-M4, 100MHz) - **存储**: 内置 Flash - **传感器**: - AHT21: 温湿度传感器 - EM7028: 心率监测传感器 - LSM303: 三轴加速度计 + 三轴磁力计 - MPU6050: 六轴惯性测量单元 (加速度计 + 陀螺仪) - SPL06-001: 气压传感器 - CST816: 触控屏幕控制器 - **通信**: I2C, SPI, USART - **电源**: 锂电池供电,支持充电管理 ## 功能特性 ### 传感与监测 - 心率实时监测 (EM7028) - 温湿度数据采集 (AHT21) - 气压/海拔高度测量 (SPL06-001) - 九轴姿态感知 (LSM303 + MPU6050) - 步数统计与抬腕检测 ### 人机交互 - 触控屏幕支持 (CST816) - 物理按键输入 - LCD 显示驱动 - 串口日志输出 ### 电源管理 - 锂电池电量监测 - 充电状态检测 - 低功耗休眠模式 - 待机唤醒机制 ## 项目结构 ``` ov-watch/ ├── Hardware/ # 硬件驱动层 │ ├── AHT21.c/h # 温湿度传感器 │ ├── CST816.c/h # 触控芯片 │ ├── EM7028.c/h # 心率传感器 │ ├── I2C_Model.c/h # I2C 通信驱动 │ ├── Key.c/h # 按键驱动 │ ├── LCD_*.c/h # LCD 显示驱动 │ ├── LSM303.c/h # 磁场/加速度传感器 │ ├── MPU6050.c/h # 陀螺仪/加速度计 │ ├── Power.c/h # 电源管理 │ ├── SPL06_001.c/h # 气压传感器 │ ├── TIM5_Tick.c/h # 系统时钟 │ └── USART_Model.c/h # 串口通信 ├── Library/ # STM32 标准外设库 ├── Start/ # 启动文件与系统配置 ├── User/ # 应用层代码 │ ├── main.c # 主程序入口 │ └── stm32f4xx_it.c # 中断处理 └── project.uvprojx # Keil 工程文件 ``` ## 编译说明 ### 开发环境 - Keil uVision 5 - STM32F4xx HAL 库 ### 编译步骤 1. 使用 Keil uVision 打开 `project.uvprojx` 文件 2. 选择目标芯片 STM32F411RETx 3. 点击 Build (F7) 进行编译 4. 通过调试器下载到目标硬件 ### 串口配置 - 波特率: 115200 - 数据位: 8 - 停止位: 1 - 无校验 ## 核心模块说明 ### 电源管理 (Power) `Power_Init()` 初始化 ADC 和充电检测,系统支持: - `Power_GetPercent()`: 获取电池电量百分比 - `Power_GetVoltage()`: 获取电池电压 - `Power_IsLow()` / `Power_IsCritical()`: 电量过低检测 - `Enter_Standby_Mode()`: 进入待机模式 - `Power_Enter_StopMode()`: 进入停止模式以节省功耗 ### 传感器数据获取 **温湿度:** ```c float humidity, temperature; AHT21_Read(&humidity, &temperature); ``` **心率:** ```c uint8_t bpm = HR_GetBPM(); ``` **气压/海拔:** ```c float pressure = SPL_GetPressure(); float altitude = SPL_GetAltitude(); ``` **运动数据:** ```c uint32_t steps = MPU6050_GetStepCount(); uint8_t lifted = MPU6050_IsLifted(); ``` ### 触控输入 ```c uint8_t finger = CST816_Get_FingerNum(); // 获取坐标 CST816_Get_XY_AXIS(); ``` ## 注意事项 1. I2C 总线连接多个传感器,需注意地址冲突 2. 电源管理涉及系统休眠,建议在低电量时保存数据 3. 首次使用需校准 LSM303 磁力计以获得准确的航向角 ## 许可证 MIT License