# 智能手表 **Repository Path**: language-guru/smartwatch ## Basic Information - **Project Name**: 智能手表 - **Description**: 智能手表。。。。。。。。。。。。。。 - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 5 - **Created**: 2026-01-21 - **Last Updated**: 2026-01-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SiFli 智能手表项目 (Smartwatch Project) ## 项目简介 本项目是基于 SiFli 系列微控制器(SF32LB52X、SF32LB58X、SF32LB56X 等)的智能手表应用开发框架。项目采用模块化设计,逐步演进,涵盖了从基础外设驱动到完整手表应用的完整开发流程,是学习和开发智能手表产品的理想参考。 ## 主要特性 ### 核心功能 项目基于 RT-Thread 实时操作系统构建,集成了 LVGL V8 图形库,支持丰富的表盘样式和健康监测功能: - **RT-Thread 实时操作系统**:提供完善的多任务调度机制和系统服务,支持高效的任务管理和进程间通信 - **LVGL V8 图形库**:支持 TrueType 字体渲染、图像缓存、动画效果和多种显示特效,为手表界面提供流畅的视觉体验 - **多种表盘样式**:包括经典指针表盘、旋转背景表盘、简约表盘等,每种表盘都支持自定义配置和动态效果 - **健康监测功能**:集成心率(SpO2)检测、计步统计、运动监测和跌倒检测算法,为用户提供全面的健康管理方案 - **传感器生态系统**:支持环境光传感器(LTR303)、地磁传感器(MMC56X3)和 6 轴惯性测量单元(LSM6DS),实现精准的环境感知和运动追踪 - **多语言显示**:内置 SourceHanSansCN 思源黑体,支持中英文双语界面 ### 应用功能 手表内置了丰富的应用程序,满足日常使用需求: | 应用分类 | 应用名称 | 功能描述 | |---------|---------|---------| | 系统应用 | 主界面菜单 | 蜂巢式图标布局,支持拖拽和缩放动画 | | 系统应用 | 系统设置 | 时间设置、亮度调节、语言切换等 | | 系统应用 | 内存查看 | 实时监控系统内存使用状态 | | 健康应用 | 运动监测 | 步数统计、运动轨迹记录 | | 健康应用 | 血氧检测 | SpO2 实时监测和显示 | | 健康应用 | 跌倒检测 | 自动检测跌倒事件并发出警报 | | 工具应用 | 指南针 | 基于地磁传感器的方向指示 | | 工具应用 | 计时器 | 毫秒级精度的计时功能 | | 娱乐应用 | 贪吃蛇 | 经典休闲游戏移植 | | 娱乐应用 | 平衡球 | 体感控制的物理游戏 | ## 目录结构 ``` smartwatch/ ├── code/ │ ├── Host_Computer/ # 主机端工具和文档 │ │ └── readme.md # 主机端使用说明 │ │ │ ├── Slave_Computer/ # 从机端(手表端)代码 │ │ ├── day1/ # 第1天:基础示例 │ │ │ ├── no-os/ # 裸机开发示例 │ │ │ └── rtt/ # RT-Thread 基础示例 │ │ │ │ │ ├── day2/ # 第2天:外设与驱动 │ │ │ ├── button/ # 按键驱动与事件处理 │ │ │ ├── gpio/ # GPIO 中断与输入输出 │ │ │ └── lvgl_v8_ttf/ # LVGL 集成 TrueType 字体 │ │ │ │ │ ├── day3/ # 第3天:传感器与基础应用 │ │ │ ├── base_demo/ # 基础演示程序 │ │ │ └── sensor/ # 传感器驱动集成 │ │ │ │ │ ├── day4/ # 第4天:手表界面开发 │ │ │ └── watch/ # 完整手表应用 │ │ │ │ │ └── yizhi/ # 逸智平台扩展 │ │ ├── base_demo/ # 逸智基础演示 │ │ └── my_watch/ # 逸智手表应用(含游戏) │ │ │ └── clean_project.bat # Windows 清理脚本 │ └── doc/ # 文档目录 ├── System_Design_Report.md # 完整系统设计报告 └── day4/issues2.md # 开发任务清单 ``` ## 开发环境 ### 硬件要求 开发本项目需要以下硬件设备: - **SiFli 开发板**:SF32LB52、SF32LB58 或 SF32LB56 系列开发板 - **调试器**:J-Link 或兼容的 SWD 下载器 - **连接线**:USB 转串口线用于调试输出 - **显示屏**:配套的 LCD 显示屏模组 ### 软件工具链 项目开发和构建依赖以下软件环境: | 工具 | 用途说明 | |-----|---------| | ARM GCC 编译器 | 交叉编译生成固件 | | SCons | 项目构建工具 | | RT-Thread SDK | 实时操作系统支持包 | | LVGL V8 | 图形用户界面库 | | Python 3.x | 构建脚本和资源处理 | | Git | 版本控制 | ### 环境搭建 详细的环境搭建步骤请参考 `doc/System_Design_Report.md` 第一部分,包含编译器安装、SDK 配置和工具链验证等完整流程。 ## 编译说明 ### 基础编译命令 ```bash # 进入对应模块的目录 cd code/Slave_Computer/day4/watch # 清理并编译(Windows) clean_project.bat # 清理并编译(Linux/Mac) scons -c && scons ``` ### 编译配置 项目支持多种目标平台,通过 `project/proj.conf` 配置文件进行选择: | 配置项 | 支持的芯片系列 | |-------|---------------| | SF32LB52X | SF32LB52 系列 | | SF32LB58X | SF32LB58 系列 | | SF32LB56X | SF32LB56 系列 | ### 固件烧录 编译完成后,使用配套工具将固件烧录到开发板: - **J-Link 烧录**:运行 `download.jlink` 脚本 - **UART 烧录**:运行 `uart_download.sh` 脚本 ## 核心模块说明 ### 应用工具模块 (app_utils) 应用工具模块提供了手表系统的基础功能支撑: | 模块 | 功能说明 | |-----|---------| | 按键驱动 (key) | 支持中断和轮询两种模式,提供按键回调机制 | | 串口通信 (uart) | 串口初始化和数据收发,支持调试输出 | | 主入口 (main) | 系统初始化入口,协调各模块启动 | | 蓝牙模块 (ble) | BLE 广播和连接管理(部分版本) | | RGB LED (rgb_led) | LED 颜色控制和闪烁模式 | ### 传感器模块 (sensor) 传感器模块实现了各类传感器的数据采集和处理: | 传感器 | 驱动文件 | 功能说明 | |-------|---------|---------| | 6轴 IMU | sensor_lsm6ds.c | 加速度和角速度数据采集 | | 环境光 | sensor_ltr303.c | 环境光照强度测量 | | 地磁传感器 | sensor_mmc56x3.c | 地磁场强度和方向检测 | | 姿态解算 | update_attitude.c | 融合算法计算俯仰角、横滚角和航向角 | | 计步器 | update_step.c | 步数检测和统计 | | 心率 | update_hr.c | 心率和血氧数据处理 | ### GUI 应用模块 (gui_apps) 图形界面应用模块包含了手表的全部用户界面: | 目录 | 功能说明 | |-----|---------| | clock/ | 时钟应用,含多种表盘实现 | | main/ | 主界面菜单,蜂巢式图标布局 | | compass/ | 指南针应用 | | sport/ | 运动监测和统计 | | fall_detect/ | 跌倒检测服务 | | spo2/ | 血氧检测界面 | | mem/ | 内存使用查看 | | settings/ | 系统设置界面 | | balance_ball/ | 平衡球游戏 | | snake_game/ | 贪吃蛇游戏 | | calendar/ | 日历和农历显示 | | stopwatch/ | 秒表功能 | | test_routine/ | 测试程序 | | wrist_wake/ | 抬腕唤醒功能 | | utils/ | 界面动画和转换效果 | ### 资源文件 (resource) 资源模块管理手表运行所需的各种素材: | 资源类型 | 说明 | |---------|------| | fonts/bitmap/ | 位图字体文件,支持多种字号 | | fonts/freetype/ | TrueType 字体文件 | | images/ | PNG 格式图标和背景图片 | | strings/ | 多语言字符串资源(中文/英文) | ## 示例代码 ### 按键初始化 ```c #include "app_key.h" static void key_callback(void *args) { // 处理按键事件 } int main(void) { // 初始化按键,使用上升沿触发中断 app_key_init(KEY2_PIN, PIN_IRQ_MODE_RISING, key_callback, RT_NULL); } ``` ### 传感器数据获取 ```c #include "sensor_manager.h" void sensor_demo(void) { // 获取环境光数据 rt_int32_t light_value = update_light_get(); // 获取步数统计 rt_uint32_t steps = update_step_get(); // 获取姿态数据 imu_data_t imu = update_imu_get(); } ``` ## 文档资源 | 文档 | 说明 | |------|------| | `doc/System_Design_Report.md` | 完整系统设计与环境搭建指南 | | `doc/day4/issues2.md` | 开发任务清单与 Issues | | `code/Slave_Computer/day2/button/README.md` | 按键驱动使用说明 | | `code/Slave_Computer/day2/gpio/README.md` | GPIO 使用说明 | | `code/Slave_Computer/day4/watch/README.md` | 手表界面开发指南 | ## 技术支持 - **项目地址**:https://gitee.com/quandaotieh/smartwatch - **Issues**:提交 Bug 报告和功能建议 - **文档目录**:`doc/` 中的开发报告和问题列表 ## 许可证 本项目遵循开源许可证,具体信息请查看项目根目录下的 LICENSE 文件。 ## 更新日志 | 版本 | 更新内容 | |-----|---------| | **Day 4** | 完成手表界面开发,支持多种表盘、蜂窝菜单和应用扩展 | | **Day 3** | 完成传感器驱动集成和基础应用框架 | | **Day 2** | 完成基础外设驱动(按键、GPIO、串口、LVGL 字体) | | **Day 1** | 完成 RT-Thread 和裸机基础示例程序 |