第二章:系统总体架构——四层架构设计与系统指标定义
大家好,我是你们的老朋友。今天咱们聊聊整个系统的骨架——四层架构设计。
做嵌入式系统这么多年,我最大的体会就是:架构设计决定了项目的生死。你想想看,如果一开始架构没搭好,后面改起来那叫一个痛苦。我曾经在一个项目里,就因为采集端和传输端的接口没定义清楚,最后联调时整整折腾了两周……嗯,从那以后,我每次做系统设计,第一件事就是把架构图画清楚。
2.1 四层架构总览
我们这个热成像系统,说白了就是四个环节:采集 → 传输 → 接收 → 显示。每一层各司其职,又紧密配合。
核心思路:每一层只做自己的事,层与层之间通过标准接口通信。这样后期维护、升级都方便。
我习惯用一张图来展示整体架构,你看下面这个 SVG 图,一目了然:
这张图我画了很多遍才满意。每一层之间的箭头,代表的是数据流的方向。注意,数据是单向流动的,但控制指令可以反向传递。
2.2 采集端设计
采集端是整个系统的起点。说白了,就是传感器把热辐射变成数字信号。
我个人习惯把采集端拆成三个子模块:
- 传感器驱动:负责初始化 MLX90640,配置刷新率、分辨率等参数
- 数据读取:通过 I2C 总线读取 768 个像素点的原始温度数据
- 预处理:做坏点补偿、温度换算、数据格式转换
小提示:MLX90640 的 I2C 时钟频率建议不要超过 400kHz。我之前试过 1MHz,结果数据经常出错,后来查手册才发现最高只支持 400kHz。
采集端的关键指标:
| 指标名称 | 目标值 | 说明 |
|---|---|---|
| 帧率 | ≥ 8 FPS | MLX90640 最高支持 64Hz,但实际受 I2C 速度限制 |
| 分辨率 | 32×24 像素 | 768 个温度点,每个点 16 位精度 |
| 温度范围 | -40℃ ~ 300℃ | 工业级应用场景 |
| 采集延迟 | < 50ms | 从传感器触发到数据就绪 |
2.3 传输端设计
传输端是系统的"血管"。数据能不能及时、完整地送到接收端,全靠这一层。
我建议采用这样的传输流程:
- 数据打包:把 768 个温度值加上帧头、帧尾、校验码
- 分包发送:如果数据量太大,拆成多个小包发送
- 重传机制:丢包了怎么办?加个超时重传
注意:WiFi 环境下丢包是常态。我曾经在工厂车间测试,WiFi 信号被金属设备干扰,丢包率高达 15%。后来加了重传机制才解决问题。
传输端的关键指标:
| 指标名称 | 目标值 | 说明 |
|---|---|---|
| 传输速率 | ≥ 200 kbps | 每帧约 1.5KB,8FPS 需要约 12KB/s |
| 丢包率 | < 0.1% | 通过重传和校验保证 |
| 传输延迟 | < 100ms | 端到端延迟,含网络抖动 |
| 协议开销 | < 20% | 包头、校验等额外数据占比 |
2.4 接收端设计
接收端是系统的"中转站"。它负责把网络上的数据收下来,整理好,再交给显示端。
接收端要做三件事:
- 网络监听:开一个 UDP 或 TCP 端口,等着数据来
- 数据校验:检查 CRC,发现错误就请求重传
- 帧重组:把分片的数据拼成一整帧
这里有个坑,我踩过:接收缓冲区要够大。如果缓冲区太小,数据来了没地方放,就会丢帧。我一般设成 3~5 帧的容量。
经验值:接收端缓冲区建议设为 10KB,可以缓存约 6 帧数据。这样即使网络偶尔抖动,也不会丢帧。
2.5 显示端设计
显示端是用户直接看到的界面。说白了,就是把温度数据变成彩色图像。
显示端的工作流程:
- 温度映射:把 -40~300℃ 映射到 0~255 的灰度值
- 伪彩色处理:用调色板把灰度变成彩色(比如铁红、彩虹等)
- 图像渲染:把 32×24 的像素点插值放大到屏幕分辨率
- GUI 显示:显示实时画面、温度数值、温度标尺等
显示端的关键指标:
| 指标名称 | 目标值 | 说明 |
|---|---|---|
| 显示帧率 | ≥ 8 FPS | 与采集帧率匹配 |
| 显示延迟 | < 200ms | 从采集到显示的总延迟 |
| 伪彩色模式 | ≥ 3 种 | 铁红、彩虹、白热等 |
| 温度精度 | ±1℃ | 显示的温度数值误差 |
2.6 系统整体指标定义
最后,我们把整个系统的指标汇总一下。这些指标是项目验收的硬标准:
| 指标类别 | 指标名称 | 目标值 | 测试方法 |
|---|---|---|---|
| 性能指标 | 系统帧率 | ≥ 8 FPS | 连续采集 100 帧,计算平均帧率 |
| 端到端延迟 | < 300ms | 从传感器触发到屏幕显示的时间差 | |
| 温度精度 | ±1.5℃ | 与黑体辐射源对比测试 | |
| 可靠性指标 | 连续运行时间 | ≥ 72 小时 | 不间断运行,无死机、无数据中断 |
| 数据完整率 | ≥ 99.9% | 发送 10000 帧,统计接收到的完整帧数 | |
| 接口指标 | 通信接口 | WiFi / 以太网 | 支持两种方式切换 |
| 显示接口 | HDMI / LVDS | 支持 1080p 输出 |
我的建议:这些指标在项目启动前就要定好。我见过太多项目,做到一半才发现指标定得太高,根本实现不了。所以,指标要合理,要有余量。
好了,这一章的内容就到这里。四层架构和系统指标,是整个项目的"宪法"。后面每一章的设计,都要围绕这个架构来展开。
公众号:蓝海资料掘金营,微信deep3321