docs:Update README.md
Smart Band 是一个基于 OpenVela (NuttX) + LVGL + libuv 的智能手表演示应用,模拟小米手环的核心 UI 交互。
核心特性:
更多功能页面展示,请查看 docs/Smart_Band.pdf
本项目采用脚本化工程管理,通过工具链实现“更新(拉取)-配置-编译-部署”的一键闭环。
详见 https://doc.openvela.com/document?id=201&version=trunk&language=cn 教程
git clone https://gitlink.org.cn/yiii/openvela.git cd openvela
我们提供了一个集成脚本,它会自动执行以下任务:
首先需要 将脚本bu.sh移动到存放 openvela 所有源代码的根目录下 随后直接执行运行命令即可一键完成准备工作:
# 赋予脚本执行权限 chmod +x bu.sh # 运行脚本 bash ./bu.sh
smart_band/ ├── bu.sh # 环境配置脚本 ├── smart_band_main.c # main() 入口 → lv_init → uv_loop ├── smart_band.c # 自适应分辨率 + page_init + resource_init ├── Makefile # CSRCS = find *.c 全量编译 ├── page/ # 22 个 LVGL Fragment 页面 │ ├── page.h/c # 页面管理器 (push/pop/switch) │ ├── page.inc # 页面注册表 │ ├── dialplate.c # 主表盘 │ ├── heart_rate.c # 心率监测 + 折线图 │ ├── launcher.c # 9 宫格启动器 (flex 可滚动) │ ├── sport.c # 运动入口 │ ├── running.c # 跑步 (计时+配速+距离) │ ├── ... (共 22 页) # 详见页面列表 │ └── _template.c # 页面开发模板 ├── hal/ # 硬件抽象层 (模拟传感器) ├── resource/ # 字体/图片/样式 → .inc 展开为静态查找表 ├── utils/ # 动画标签 / 自动演示 / 运动数据环形缓冲 └── notification/ # 全局通知浮层 (lv_layer_top)
Smart Band 采用了 “页面导航栈” 与 “静态内存模型” 设计,核心设计要点如下:
push/pop
page.inc
PAGE_SCALE
更多详细设计决策与架构图,请查看 docs/Smart Band.pdf。
Smart Band 最初基于 OpenVela (NuttX) 模拟器(Goldfish)开发,所有外设均使用模拟数据。决赛阶段团队将应用从模拟器迁移到真实硬件(全志 R528 芯片、Gemini-S1 开发板)。
Smart Band 的 HAL(硬件抽象层)位于 hal/ 目录,通过统一的伞形头文件 hal/hal.h 暴露给上层应用。各模块内部封装了具体的硬件操作,上层页面代码通过 HAL API 访问硬件,无需关心底层实现细节。
hal/
hal/hal.h
hal/ ├── hal.h # 伞形头文件(统一入口) ├── backlight.c/h # 背光控制 ├── clock.c/h # 系统时钟 ├── power.c/h # 电池电量 ├── power_mgr.c/h # 电源管理 ├── ble_notify.c/h # 蓝牙通知 ├── imu.c/h # 计步传感器 ├── particle_sensor.c/h # 心率传感器 ├── health_record.c/h # 健康数据持久化 └── storage.c/h # 底层二进制存储
应用入口 smart_band.c 的 smart_band_create() 按以下顺序初始化各模块:
smart_band.c
smart_band_create()
resource_init() → 字体/图片/样式加载 health_record_init() → 持久化存储 (/data/smart_band.db) notification_init() → 全局通知浮层 ble_notify_init() → BLE GATT 服务注册 pm_init() → 电源管理状态机
clock_set_value()
实现三态电源管理状态机,与背光 PWM 联动实现逐级降功耗:
PM_STATE_ACTIVE
PM_STATE_DIM
PM_STATE_SLEEP
pm_simulate_raise()
为支持硬件运行,对 OpenVela 官方代码中以下文件进行了修改:
/data/misc/bt/
bluetoothd
CONFIG_SYSTEM_NTPC
CONFIG_SYSTEM_ADBD
CONFIG_KVDB_SERVER
更多详细硬件适配设计与修改,请查看 docs/hardware_adaptation.md。
应用启动后进入主表盘界面,显示当前时间、日期、步数、心率和电池电量。
心率折线图数据存储在全局数组中,退出页面后重新进入数据依然保留。
运动入口页 (Sport) :显示 9 种运动类型列表,点击进入对应运动。
运动页面通用操作:
运动结束后计时 > 10 秒即可保存到 Activity Log。保存的记录包括运动类型、时长、卡路里。
最多保存 10 条记录,超出后自动淘汰最旧的。
"Meow~" "Purr~"
"Zzz..." "=w="
"Mmm~" "Stretch!"
动作播放期间点击无效,播放结束后自动恢复 idle 状态。
本项目详细的架构设计以及模块说明,请参考 docs/ 目录:
docs/
docs/Smart_Band.pdf
docs/Incremental document.pdf
docs/hardware_adaptation.md
docs/Final_materials.zip
Apache License 2.0
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
Smart Band
简介
Smart Band 是一个基于 OpenVela (NuttX) + LVGL + libuv 的智能手表演示应用,模拟小米手环的核心 UI 交互。
核心特性:
演示效果 (Demo Showcase)
更多功能页面展示,请查看 docs/Smart_Band.pdf
快速开始
本项目采用脚本化工程管理,通过工具链实现“更新(拉取)-配置-编译-部署”的一键闭环。
第一步:配置环境
详见 https://doc.openvela.com/document?id=201&version=trunk&language=cn 教程
第二步:克隆本项目
第三步:一键同步与配置
我们提供了一个集成脚本,它会自动执行以下任务:
首先需要 将脚本bu.sh移动到存放 openvela 所有源代码的根目录下 随后直接执行运行命令即可一键完成准备工作:
项目结构
核心设计概览 (Architecture Overview)
Smart Band 采用了 “页面导航栈” 与 “静态内存模型” 设计,核心设计要点如下:
push/pop机制,通过page.inc实现页面注册与路由解耦。PAGE_SCALE缩放宏,支持一套代码适配多分辨率屏幕。更多详细设计决策与架构图,请查看 docs/Smart Band.pdf。
硬件适配 (Hardware Adaptation)
Smart Band 最初基于 OpenVela (NuttX) 模拟器(Goldfish)开发,所有外设均使用模拟数据。决赛阶段团队将应用从模拟器迁移到真实硬件(全志 R528 芯片、Gemini-S1 开发板)。
目标硬件平台
适配总览
HAL 层架构
Smart Band 的 HAL(硬件抽象层)位于
hal/目录,通过统一的伞形头文件hal/hal.h暴露给上层应用。各模块内部封装了具体的硬件操作,上层页面代码通过 HAL API 访问硬件,无需关心底层实现细节。应用入口
smart_band.c的smart_band_create()按以下顺序初始化各模块:已适配模块概述
背光控制 (Backlight)
系统时钟 (Clock)
clock_set_value()也支持通过蓝牙从手机同步时间电源管理 (Power Manager)
实现三态电源管理状态机,与背光 PWM 联动实现逐级降功耗:
PM_STATE_ACTIVEPM_STATE_DIMPM_STATE_SLEEPpm_simulate_raise()可正常唤醒屏幕),待接入真实 IMU 传感器后即可激活蓝牙通知 (BLE Notify)
驱动层修改
为支持硬件运行,对 OpenVela 官方代码中以下文件进行了修改:
rcS.nsh 启动脚本
/data/misc/bt/,启动bluetoothd并开启 BLE 广播TPADC 触摸驱动
NTP 客户端
构建系统适配
CONFIG_SYSTEM_NTPC、CONFIG_SYSTEM_ADBD、CONFIG_KVDB_SERVER等配置项更多详细硬件适配设计与修改,请查看 docs/hardware_adaptation.md。
操作手册
启动与桌面导航
应用启动后进入主表盘界面,显示当前时间、日期、步数、心率和电池电量。
表盘 (Dialplate)
心率 (Heart Rate)
计步器 (Step Counter)
启动器 (Launcher)
运动模式 (Sport / Running / 及其他)
运动入口页 (Sport) :显示 9 种运动类型列表,点击进入对应运动。
运动页面通用操作:
运动记录 (Activity Log)
虚拟宠物 (Pet Cat)
"Meow~" "Purr~""Zzz..." "=w=""Mmm~" "Stretch!"秒表 (Stop Watch)
音乐控制 (Music)
手电筒 (Flashlight)
睡眠追踪 (Sleep)
设置 (Settings)
通知提醒
文档中心 (Documentation)
本项目详细的架构设计以及模块说明,请参考
docs/目录:docs/Smart_Band.pdf:项目目录结构详细说明与组件职责分析。docs/Incremental document.pdf:决赛相较于初赛新增实现内容说明。docs/hardware_adaptation.md:项目硬件适配文档。docs/Final_materials.zip:决赛材料压缩包(包含答辩材料、技术报告、演示材料)。许可证
Apache License 2.0