第二章:系统总体架构——四层架构设计与系统指标定义

大家好,我是你们的老朋友。今天咱们聊聊整个系统的骨架——四层架构设计。

做嵌入式系统这么多年,我最大的体会就是:架构设计决定了项目的生死。你想想看,如果一开始架构没搭好,后面改起来那叫一个痛苦。我曾经在一个项目里,就因为采集端和传输端的接口没定义清楚,最后联调时整整折腾了两周……嗯,从那以后,我每次做系统设计,第一件事就是把架构图画清楚。

2.1 四层架构总览

我们这个热成像系统,说白了就是四个环节:采集 → 传输 → 接收 → 显示。每一层各司其职,又紧密配合。

核心思路:每一层只做自己的事,层与层之间通过标准接口通信。这样后期维护、升级都方便。

我习惯用一张图来展示整体架构,你看下面这个 SVG 图,一目了然:

热成像系统四层架构图 采集端(采集层) MLX90640 传感器 → I2C 读取 → 数据预处理 → 缓存 传输端(传输层) 数据打包 → 校验 → WiFi/以太网 → 发送 接收端(接收层) 网络接收 → 解包 → 校验 → 数据重组 → 存储 显示端(显示层) 伪彩色映射 → 图像渲染 → GUI 显示 → 交互控制

这张图我画了很多遍才满意。每一层之间的箭头,代表的是数据流的方向。注意,数据是单向流动的,但控制指令可以反向传递。

2.2 采集端设计

采集端是整个系统的起点。说白了,就是传感器把热辐射变成数字信号。

我个人习惯把采集端拆成三个子模块:

  • 传感器驱动:负责初始化 MLX90640,配置刷新率、分辨率等参数
  • 数据读取:通过 I2C 总线读取 768 个像素点的原始温度数据
  • 预处理:做坏点补偿、温度换算、数据格式转换

小提示:MLX90640 的 I2C 时钟频率建议不要超过 400kHz。我之前试过 1MHz,结果数据经常出错,后来查手册才发现最高只支持 400kHz。

采集端的关键指标:

指标名称 目标值 说明
帧率 ≥ 8 FPS MLX90640 最高支持 64Hz,但实际受 I2C 速度限制
分辨率 32×24 像素 768 个温度点,每个点 16 位精度
温度范围 -40℃ ~ 300℃ 工业级应用场景
采集延迟 < 50ms 从传感器触发到数据就绪

2.3 传输端设计

传输端是系统的"血管"。数据能不能及时、完整地送到接收端,全靠这一层。

我建议采用这样的传输流程:

  1. 数据打包:把 768 个温度值加上帧头、帧尾、校验码
  2. 分包发送:如果数据量太大,拆成多个小包发送
  3. 重传机制:丢包了怎么办?加个超时重传

注意: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 显示端设计

显示端是用户直接看到的界面。说白了,就是把温度数据变成彩色图像。

显示端的工作流程:

  1. 温度映射:把 -40~300℃ 映射到 0~255 的灰度值
  2. 伪彩色处理:用调色板把灰度变成彩色(比如铁红、彩虹等)
  3. 图像渲染:把 32×24 的像素点插值放大到屏幕分辨率
  4. GUI 显示:显示实时画面、温度数值、温度标尺等

显示端的关键指标:

指标名称 目标值 说明
显示帧率 ≥ 8 FPS 与采集帧率匹配
显示延迟 < 200ms 从采集到显示的总延迟
伪彩色模式 ≥ 3 种 铁红、彩虹、白热等
温度精度 ±1℃ 显示的温度数值误差

2.6 系统整体指标定义

最后,我们把整个系统的指标汇总一下。这些指标是项目验收的硬标准:

指标类别 指标名称 目标值 测试方法
性能指标 系统帧率 ≥ 8 FPS 连续采集 100 帧,计算平均帧率
端到端延迟 < 300ms 从传感器触发到屏幕显示的时间差
温度精度 ±1.5℃ 与黑体辐射源对比测试
可靠性指标 连续运行时间 ≥ 72 小时 不间断运行,无死机、无数据中断
数据完整率 ≥ 99.9% 发送 10000 帧,统计接收到的完整帧数
接口指标 通信接口 WiFi / 以太网 支持两种方式切换
显示接口 HDMI / LVDS 支持 1080p 输出

我的建议:这些指标在项目启动前就要定好。我见过太多项目,做到一半才发现指标定得太高,根本实现不了。所以,指标要合理,要有余量

好了,这一章的内容就到这里。四层架构和系统指标,是整个项目的"宪法"。后面每一章的设计,都要围绕这个架构来展开。


公众号:蓝海资料掘金营,微信deep3321