Add implementation report and demo video Co-Authored-By: Claude Opus 4.7 noreply@anthropic.com
Add implementation report and demo video
Co-Authored-By: Claude Opus 4.7 noreply@anthropic.com
这是一个运行在 openvela/NuttX 上的智能手环原生应用示例,主程序位于 openvela_app/smart_band。应用使用 C + LVGL 实现,面向手环/小屏设备展示 表盘、健康数据、传感器接入、页面切换和轻量小应用。
openvela_app/smart_band
本仓库只提交智能手环应用本身,不包含 openvela SDK、NuttX、LVGL、模拟器、 交叉编译工具链等上游系统代码。评审或复现时,请把本目录复制到已有 openvela 工程的 packages/demos/smart_band_basic 位置后编译运行。
packages/demos/smart_band_basic
/dev/uorb/sensor_hrate0
/dev/uorb/sensor_step_counter0
openvela_app/smart_band/ openvela 原生应用源码,可复制到 packages/demos openvela_app/smart_band/apps/ 每个小应用的独立实现文件 openvela_app/smart_band/include 公共头文件、模型和图标声明 openvela_app/smart_band/assets 项目图标与演示图片资源 demo/ 浏览器静态演示页面,便于无模拟器时录屏 docs/ openvela 复现说明与演示说明 scripts/ 模拟器传感器滚动验证脚本 tests/ 本机基础逻辑测试 LICENSE 本仓库原创代码和资源的开源许可证 NOTICE 项目声明、资产声明和上游边界说明 THIRD_PARTY_NOTICES.md 第三方依赖声明
已验证的目标环境:
vendor/openvela/boards/vela/configs/goldfish-arm64-v8a-ap
需要启用的 openvela/NuttX 能力:
GRAPHICS_LVGL
LV_USE_NUTTX
LV_USE_NUTTX_LIBUV
SENSORS
UORB
LVX_USE_DEMO_SMART_BAND_BASIC
假设 openvela 根目录为 $OPENVELA_ROOT,本仓库目录为 $OPENVELA_ROOT/workspaces/smart-band-demo。
$OPENVELA_ROOT
$OPENVELA_ROOT/workspaces/smart-band-demo
本仓库提供了一个复现 skill:
skills/openvela-smart-band-reproduce/SKILL.md
推荐复现流程:
git clone https://github.com/open-vela/.claude.git .claude
帮我搭建 openvela 开发环境
这会交给 open-vela 官方 .claude/skills/openvela-quickstart 流程处理依赖安装、 仓库初始化、同步、编译和首次模拟器启动。
.claude/skills/openvela-quickstart
bash scripts/reproduce_openvela_demo.sh --openvela-root "$OPENVELA_ROOT"
这个脚本会同步 smart_band 到 openvela、启用配置、构建 goldfish arm64,并打开 浏览器演示页:
smart_band
http://127.0.0.1:8765/demo/index.html
脚本还会把本仓库的复现 skill 安装到:
$OPENVELA_ROOT/.claude/skills/openvela-smart-band-reproduce
因此后续在 openvela 根目录中,也可以直接使用该 skill 继续复现或排查。
mkdir -p "$OPENVELA_ROOT/packages/demos/smart_band_basic" rsync -a --delete \ "$OPENVELA_ROOT/workspaces/smart-band-demo/openvela_app/smart_band/" \ "$OPENVELA_ROOT/packages/demos/smart_band_basic/"
apps/packages
mkdir -p "$OPENVELA_ROOT/apps/packages/demos/smart_band_basic" rsync -a --delete \ "$OPENVELA_ROOT/workspaces/smart-band-demo/openvela_app/smart_band/" \ "$OPENVELA_ROOT/apps/packages/demos/smart_band_basic/"
cd "$OPENVELA_ROOT" ./build.sh vendor/openvela/boards/vela/configs/goldfish-arm64-v8a-ap menuconfig
在配置中打开:
LVX_USE_DEMO_SMART_BAND_BASIC=y LVX_DEMO_SMART_BAND_BASIC_PRIORITY=100 LVX_DEMO_SMART_BAND_BASIC_STACKSIZE=32768
如果当前 openvela 版本不会自动扫描 packages/demos 子目录,需要在上层 Kconfig 和 Make/CMake 入口中手工包含 packages/demos/smart_band_basic。本应用目录内 已经提供 Kconfig、Make.defs、Makefile 和 CMakeLists.txt。
packages/demos
Kconfig
Make.defs
Makefile
CMakeLists.txt
在 openvela 根目录执行:
./build.sh vendor/openvela/boards/vela/configs/goldfish-arm64-v8a-ap -j2
如果需要清理后完整编译:
./build.sh vendor/openvela/boards/vela/configs/goldfish-arm64-v8a-ap distclean -j2 ./build.sh vendor/openvela/boards/vela/configs/goldfish-arm64-v8a-ap -j2
本地开发时,如果模拟器启动目录使用 cmake_out/vela_goldfish-arm64-v8a-ap,可在 构建后复制产物:
cmake_out/vela_goldfish-arm64-v8a-ap
mkdir -p cmake_out/vela_goldfish-arm64-v8a-ap cp nuttx/nuttx cmake_out/vela_goldfish-arm64-v8a-ap/nuttx for f in vela_system.bin vela_data.bin vela_ap.bin nuttx.bin nuttx.hex; do [ -f "nuttx/$f" ] && cp "nuttx/$f" "cmake_out/vela_goldfish-arm64-v8a-ap/$f" done
启动 goldfish 模拟器:
./emulator.sh cmake_out/vela_goldfish-arm64-v8a-ap \ -skin xiaomi_smart_screen_10 \ -skindir "$OPENVELA_ROOT/prebuilts/emulator/skins/"
进入 NuttShell 后运行:
如果使用开发板,完成烧录后在串口 shell 中执行同样的命令:
应用启动后会尝试打开以下设备:
/dev/uorb/sensor_hrate0 心率 /dev/uorb/sensor_step_counter0 计步 /dev/uorb/sensor_accel0 加速度,计步不可用时用于推导步数 /dev/uorb/sensor_ambient_temp0 环境温度 /dev/uorb/sensor_temp0 温度备用路径 /dev/uorb/sensor_humi0 相对湿度 /dev/charge/goldfish_battery 电池容量和充电状态
传感器读取策略:
可用脚本滚动模拟器传感器,验证 UI 是否随传感器变化:
SMART_BAND_ROLL_LOOPS=4 SMART_BAND_ROLL_DELAY=2 \ scripts/roll_emulator_sensors.sh
<
-
+
-1m
+1m
Start/Pause
Reset
本仓库包含一个不依赖 openvela 的 Python 基础测试,用于验证模型规则:
python3 tests/test_watch_model.py
该测试覆盖时间格式、页面切换、模拟数据范围和步数目标调整。
应用对常见失败路径做了保护:
smart_band_main.c
sensor_bridge.c
sensor_ambient_temp0
sensor_temp0
本仓库已补充以下合规文件:
LICENSE
NOTICE
THIRD_PARTY_NOTICES.md
重要边界:
openvela_app/smart_band/assets/generated_icons
openvela Smart Band Demo — 基于 openvela 原生应用框架(C + LVGL)的智能手环演示项目
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
openvela Smart Band Demo
这是一个运行在 openvela/NuttX 上的智能手环原生应用示例,主程序位于
openvela_app/smart_band。应用使用 C + LVGL 实现,面向手环/小屏设备展示 表盘、健康数据、传感器接入、页面切换和轻量小应用。本仓库只提交智能手环应用本身,不包含 openvela SDK、NuttX、LVGL、模拟器、 交叉编译工具链等上游系统代码。评审或复现时,请把本目录复制到已有 openvela 工程的
packages/demos/smart_band_basic位置后编译运行。功能概览
/dev/uorb/sensor_hrate0;步数优先读取/dev/uorb/sensor_step_counter0,不可用时从加速度变化推导;读不到传感器时 保留模型兜底值,保证页面仍可展示。目录结构
环境要求
已验证的目标环境:
vendor/openvela/boards/vela/configs/goldfish-arm64-v8a-ap。需要启用的 openvela/NuttX 能力:
GRAPHICS_LVGLLV_USE_NUTTXLV_USE_NUTTX_LIBUVSENSORSUORBLVX_USE_DEMO_SMART_BAND_BASIC接入 openvela 工程
假设 openvela 根目录为
$OPENVELA_ROOT,本仓库目录为$OPENVELA_ROOT/workspaces/smart-band-demo。一键复现 Skill
本仓库提供了一个复现 skill:
推荐复现流程:
这会交给 open-vela 官方
.claude/skills/openvela-quickstart流程处理依赖安装、 仓库初始化、同步、编译和首次模拟器启动。这个脚本会同步
smart_band到 openvela、启用配置、构建 goldfish arm64,并打开 浏览器演示页:脚本还会把本仓库的复现 skill 安装到:
因此后续在 openvela 根目录中,也可以直接使用该 skill 继续复现或排查。
apps/packages镜像目录,也同步一份:在配置中打开:
如果当前 openvela 版本不会自动扫描
packages/demos子目录,需要在上层 Kconfig 和 Make/CMake 入口中手工包含packages/demos/smart_band_basic。本应用目录内 已经提供Kconfig、Make.defs、Makefile和CMakeLists.txt。编译
在 openvela 根目录执行:
如果需要清理后完整编译:
本地开发时,如果模拟器启动目录使用
cmake_out/vela_goldfish-arm64-v8a-ap,可在 构建后复制产物:运行
启动 goldfish 模拟器:
进入 NuttShell 后运行:
如果使用开发板,完成烧录后在串口 shell 中执行同样的命令:
传感器来源
应用启动后会尝试打开以下设备:
传感器读取策略:
可用脚本滚动模拟器传感器,验证 UI 是否随传感器变化:
操作说明
<返回应用中心。-和+调整目标步数。-1m、+1m修改倒计时时间,Start/Pause控制运行,Reset恢复到 05:00。本机基础测试
本仓库包含一个不依赖 openvela 的 Python 基础测试,用于验证模型规则:
该测试覆盖时间格式、页面切换、模拟数据范围和步数目标调整。
基本异常处理说明
应用对常见失败路径做了保护:
smart_band_main.c检查 LVGL 是否重复初始化、显示设备是否创建成功、UI 是否创建成功。sensor_bridge.c对空指针、传感器打开失败、读取不到数据、电池 ioctl 失败进行容错。sensor_ambient_temp0,失败后尝试sensor_temp0。开源协议与合规
本仓库已补充以下合规文件:
LICENSE:本项目原创代码和项目资源使用 MIT License。NOTICE:说明项目归属、提交边界、图标资源和未包含的上游系统部分。THIRD_PARTY_NOTICES.md:列出运行或构建所依赖的第三方项目及其许可证口径。重要边界:
openvela_app/smart_band/assets/generated_icons, 为项目自有资源;没有复制第三方商标、品牌图标或示例仓库的图片。LICENSE和NOTICE为准。相关文档