LVGL 跨平台汽车仪表盘
这是一个基于 LVGL v8 图形库构建的、高仿真度的车载仪表盘项目。其核心设计理念是 “一次编码,到处运行” ,代码无需修改即可在 PC (Windows/Linux) 上进行快速开发与仿真,也能无缝交叉编译到嵌入式 ARM Linux 平台上高效运行。
得益于一个智能化的 CMake 构建系统和预置的依赖库,本项目实现了真正的 “开箱即用” ,极大地简化了开发和部署流程。
核心亮点
- 真正的跨平台: 一套代码,原生支持 Windows, Linux PC (SDL2) 和 嵌入式 ARM (Framebuffer)。
- 零配置构建: CMake 脚本会自动检测平台并修改 LVGL 配置,无需手动开关宏。
- 依赖自包含: 静态链接
freetype
等库,部署到开发板时只需单个可执行文件,无外部.so
依赖。 - 实时交互控制: 无需重新编译,即可通过控制台指令实时改变车速、转速、灯光等状态,极大提升调试效率。
想了解更多细节?请查看 功能特性详解。
🚀 快速上手
1. 环境准备
- 通用:
Git
,CMake
(3.5+),C/C++ 编译器
。 - PC (Linux): 安装 SDL2 开发库
sudo apt-get install libsdl2-dev
。 - PC (Windows): 无需额外安装,项目已内置 SDL2 库。
- 嵌入式 ARM: 准备好你的交叉编译工具链。
2. 克隆与构建
首先,克隆仓库(如果项目使用了 git submodules,请确保它们已被拉取):
1 | git clone https://github.com/zhangwei43721/LVGL-CarDashboard.git |
方式一:在 PC 上编译和运行
1 | # 配置项目 |
方式二:交叉编译并在 ARM 开发板上运行
1 | # 确保你的工具链文件 (例如 arm.cmake) 已正确配置 |
3. 部署到开发板
得益于静态链接,部署过程非常简单:
- 传输可执行文件: 将
bin/main
这一个文件传输到开发板的任意位置 - 赋予权限并运行:
1
2chmod +x ./main
./main
🎮 控制台指令
程序运行时,在终端输入以下命令并回车即可控制仪表盘:
- 开关类:
左转
,右转
,双闪
,远光
,近光
,安全带
- 数值设置:
速度 <0-220>
转速 <0-8000>
水温 <0-150>
油量 <0-100>
胎压 <位置> <数值>
(位置:左前
,右前
,左后
,右后
)
❔ 常见问题 (FAQ)
Q: PC 运行后没有出现窗口?
A: 请确保您已按要求安装了libsdl2-dev
(Linux) 或项目libs
目录完整 (Windows)。Q: 在开发板上运行提示
libfreetype.so: cannot open file
?
A: 这是旧版本部署方式的问题。在新版构建系统中,freetype
库是静态链接的,您无需也禁止拷贝任何.so
文件。请只部署main
可执行文件。Q: 为什么项目克隆后编译失败,提示找不到
lvgl.h
?
A: 很可能是你忘记了初始化 git 子模块。请运行git submodule update --init --recursive
来下载lvgl
和lv_drivers
。Q: 交叉编译失败?
A: 请仔细检查你的工具链 CMake 文件,确保其中的编译器路径 (arm-linux-gcc
等) 是正确的。