1. 项目背景与需求分析
冷链物流监控一直是食品医药行业的关键环节。传统人工记录温度的方式存在数据滞后、易篡改等问题,而市面上的通用监控设备往往价格昂贵且功能冗余。这个基于Qt C++开发的冷链箱监控系统,正是为解决这些痛点而生。
我在参与某生物制药企业的冷链运输项目时,发现他们使用的进口监控设备单台价格超过5000元,而且30%的功能根本用不上。这促使我萌生了开发一款轻量级专用监控系统的想法。系统需要满足几个核心需求:实时温度采集(精度±0.5℃)、异常报警(声光+短信)、数据本地存储(至少30天),以及最重要的一点——成本控制在千元以内。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件选型与架构设计
2.1 核心硬件配置
经过多次对比测试,最终确定的硬件方案如下:
- 主控芯片:STM32F103C8T6(性价比高,满足基本需求)
- 温度传感器:DS18B20(防水型,测量范围-55~+125℃)
- 通信模块:SIM800L(支持GSM短信报警)
- 存储模块:AT24C256(32KB EEPROM)
- 显示模块:2.4寸TFT LCD(用于本地状态展示)
特别注意:DS18B20需要做好防水密封处理,我在初期测试时就因为冷凝水渗入导致三个传感器短路损坏。
2.2 软件架构设计
系统采用典型的嵌入式分层架构:
code复制应用层(Qt GUI)
↓
业务逻辑层(数据处理/报警判断)
↓
驱动层(传感器/通信接口)
↓
硬件抽象层(HAL)
这种设计使得核心算法可以独立于硬件平台。例如当需要更换温度传感器时,只需修改驱动层代码,上层业务逻辑完全不受影响。
3. 关键功能实现细节
3.1 温度采集模块
DS18B20采用单总线协议,时序要求严格。以下是核心采集代码:
cpp复制float readTemperature() {
resetDS18B20(); // 复位设备
writeByte(0xCC); // 跳过ROM
writeByte(0x44); // 启动温度转换
delay(750); // 等待转换完成
resetDS18B20();
writeByte(0xCC);
writeByte(0xBE);
