# 车载智能仪表项目 **Repository Path**: giao-shiyi/instrument_project ## Basic Information - **Project Name**: 车载智能仪表项目 - **Description**: 该仓库用来存放车载智能仪表项目 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2025-06-13 - **Last Updated**: 2025-11-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 开发工具: 虚拟机系统 :Ubuntu 18.04 代码工具:VScode 1.100.3 UI设计:squareline studio 1.4.2 图片设计:Photoshop 交叉编译工具:arm-linux-gcc 开发板连接工具:SecureCRT 开发语言:C语言 开发需求:1、完成智能车辆仪表各个界面的布局 2、在vscode的终端wsl上能够控制车载智能仪表的各个相关信息指示灯,完成各个界面的变量定义和数据更新反馈基础代码,完成用户数据输入方法使用多线程实现修改全局变量 3、能够切换车辆模式,并且在车载智能仪表中的行驶页面中记录到当前形式情况 4、车载智能仪表能够显示不同的相关车辆指示灯,比如车载智能仪表在夜间模式时能够显示夜视系统指示灯和雷达信号指示灯等。 5、在智能车辆仪表中的行驶页面中,长按页面确认键可清除当前记录 6、添加速度指针、转速度指针、冷却液温度指针和油量指针在输入相关指令后实现相应角度的转动,其运行动画自然流畅 最终版本 添加行驶页面中的累计行程等数据进行了自动更新,模拟了不同用户的使用情况 项目搭建过程:---------------------------------------------------------------------------// 2025-6-13 10:00,在gitee官网建立项目仓库 14:30,初步建立项目文件夹,并在文件夹中加入SquareLine Studio空白模板文件夹 14:58,将instrument_project项目文件夹中移植lvgl所需的驱动文件,并重新建立build文档并进入进行camke编译,之后进行make编译,运行程序时出现画面撕裂 16:44,经过排查调试发现lvgl驱动里的lv_drv_conf.h文件中的参数SDL_DOUBLE_BUFFERED开启时出现这种情况,当关闭该参数时模板文件能够正常运行 20:34,收集项目界面素材,为后续lvgl图库的编排做准备 2025-6-14 10:00,还在完善lvgl图库,运用ps软件进行图形处理以准备需要的图像 2025-6-15 09:50,在lvgl中加入中文字库调试是否能在pc端口正常显示,通过更改驱动文件参数后,在linux系统编译后能够正常显示,但是按钮中的文本在点击之后又出现了乱码,还得继续调试 11:25,修改代码调试以后初步完成测试代码汉字在按钮点击时出现乱码现象 14:25,测试代码界面能够正常显示中文且不出现乱码 17:25,初步搭建好车辆仪表主界面布局 2025-6-16 09:30,已完成智能车辆仪表主界面的布局规划 11:25,开始搭建智能车辆胎压监测界面布局 15:34,完成智能车辆胎压监测界面布局 20:30,上传今日编写的lvgl至gitee仓库 2025-6-17 11:27,完成lvgl各个界面的动态画面,先进一步完善其动态画面的延时 15:01,完成lvgl动态画面延时调整 15:47,完成智能车辆仪表的转向灯闪烁动态画面 17:02,完成智能车辆仪表指针的动态画面调整 2025-6-18 10:00,开始进行相关参数的全局变量配置,查阅参考资料并结合自身的开发需求进一步规划项目代码 14:20,进一步布局规划代码,初步构建了命令行控制线程(ui_main)、 全局状态变量池、状态检测(seechange())等框架 18:45,添加一个个相关功能,排查错误修复bug 2025-6-19 09:30,编写智能车载仪表盘的速度仪表指针算法,使其能够在相应的命令下转动到对应的位置 14:15,编写智能车载仪表盘的转速度仪表指针算法 19:39,编写智能车载仪表盘的冷却液温度指针算法 2025-6-20 09:23,编写智能车载仪表盘的油耗指针算法 14:06,将仪表上的四个指针进行调试修转动偏差 17:11,编写左右转向灯的动画 18:46,编写双闪灯动画,将双闪与左右转向灯之间建立状态互斥 20:45,进一步验证调试项目功能 2025-6-21 11:50,对行驶页面的累计行程、油耗等页面数据添加随机种子数,使得在重新进入页面后所有数据更新,模拟不同用户的用车情况 15:31,将程序烧录至开发板以其验证项目功能 17:01,进一步将所有动画函数进行优化 19:55,在开发板上调试动画 20:33,完成项目功能 ----------------------------------------------------------------------------------// 设计方案: 一、系统总体架构 分层设计: 硬件抽象层:FBdev配置显示和EvDev输入驱动 核心引擎层:LVGL图形库+自定义动画系统 业务逻辑层:仪表控制、灯光管理、车辆状态处理 交互层:命令行控制台+触摸事件处理 数据流: 传感器/控制命令 → 全局状态池 → 状态检测引擎 → LVGL渲染管线 → 硬件输出 二、核心功能模块 仪表指针系统 (1) 速度仪表: 量程:0-240km/h,对应0-2400°指针旋转 动画算法:基于角度差的动态时长计算(300-1200ms) 小角度优化:<5°变化时直接设置无动画 (2) 转速仪表: 非线性映射:500rpm=146°,8000rpm=2336° 方向感知动画:加速用ease-out曲线,减速用ease-in曲线 急加速处理:转速突变时自动延长动画时间 (3) 温度仪表: 线性转换:0℃=-450°,120℃=-570° 异常状态:>100℃触发红色刻度闪烁 灯光控制系统 转向灯: 500ms标准闪烁周期 状态互斥:双闪模式优先于单侧转向灯 动画同步:左右转向灯相位差180° 报警指示灯: 分级显示:普通(常亮)/紧急(2Hz闪烁) 28种状态编码:发动机、胎压、近光灯等 多模式管理系统 驾驶模式: 普通/环保/竞速/夜间/智能5种模式 模式切换动画:300ms渐隐效果 三、关键技术实现 动画优化技术 指针惯性效果:通过lv_anim_path_ease_out模拟物理惯性 多指针协同:转速表与速度表联动算法 动画中断处理:新指令立即终止进行中动画 实时控制技术 命令解析: 支持各个功能的控制指令 参数范围校验(如speed 0-240) 默认保持最后有效值 超限值特殊标记(如"---"显示) 图形渲染降级: 内存不足时关闭复杂动画 四、性能指标 实时性: 控制命令响应延迟:<100ms 动画帧率:≥30fps(800×480分辨率) ---------------------------------------------------------------------------// 项目使用说明 1、在vscode中进入到wsl,在wsl输入cmake -DCMAKE_C_COMPILER=/usr/local/arm/5.4.0/usr/bin/arm-linux-gcc ..(生成出ARM文件烧录至6818开发板,前提是build文件提前将X86文件删除,使得bulid文件是空白文件) 2、当生成cmake文件后,进行make编译,当编译完成后检查文件,输入file+项目名检测是否成功生成ARM文件 3、在vscode上连接SSH,成功连接后在wsl输入“scp 项目名称 root@192.168.**.***:/(开发板的文件夹名)” 4、SSH连接界面上,cd /文件夹 进入到工程文件夹中,找到已经项目文件,在界面输入./(项目文件),观察开发板情况 5、根据界面上的命令选项进行不同的功能测试 _