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
2
git clone https://github.com/zhangwei43721/LVGL-CarDashboard.git
cd LVGL-CarDashboard

方式一:在 PC 上编译和运行

1
2
3
4
5
6
7
8
# 配置项目
cmake -S . -B build

# 编译
cmake --build build -j12

# 运行
./bin/main

方式二:交叉编译并在 ARM 开发板上运行

1
2
3
4
5
6
# 确保你的工具链文件 (例如 arm.cmake) 已正确配置
# 使用工具链文件进行配置
cmake -S . -B build_arm -DCMAKE_TOOLCHAIN_FILE=arm.cmake

# 编译
cmake --build build_arm -j12

3. 部署到开发板

得益于静态链接,部署过程非常简单:

  1. 传输可执行文件: 将 bin/main一个文件传输到开发板的任意位置
  2. 赋予权限并运行:
    1
    2
    chmod +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 来下载 lvgllv_drivers

  • Q: 交叉编译失败?
    A: 请仔细检查你的工具链 CMake 文件,确保其中的编译器路径 (arm-linux-gcc 等) 是正确的。