【单片机毕业设计选题】基于单片机的智能牛奶保鲜箱设计

基于单片机的智能牛奶保鲜箱设计

摘要

随着生鲜乳品消费需求不断上升以及家庭对于食品品质关注程度提高,牛奶在短期存放期间的新鲜度保障以及安全防护渐渐变成了日常生活里不能被忽视的关键问题,传统的冷藏方式由于频繁开启和关闭,会引发温差干扰,很难精确掌握剩余的奶量,而且缺少对异常取用行为的识别能力,这暴露出了比较十分突出的不足之处。本方案把STM32F103C8T6当作核心处理单元,结合DS18B20温感元件、HX711压力传感模块以及震动检测装置,构建出一套针对家庭场景的智能保鲜装置,这个系统在运行的时候可实现内部温场的精确调控、牛奶存量的持续追踪,并且在出现非授权取用情况时马上触发告警机制。使用者可借助内置按键以及OLED界面来达成温度上下限的设定、制冷功能的启停操作以及配送记录的核验工作,该系统运用ESP8266无线通信模块,把当前的温湿度、称重数值以及异常事件同步上传至移动端,支持远距离查看以及状态干预,实测结果说明,箱体温控表现出稳定的性能,称重误差被控制在合理的范围之内,震动感应有迅速的反应,移动终端的数据刷新频率达到实时的程度,整体方案有实用性、可靠性以及成本方面的优势,为家庭乳品存储提供了高效、智能并且经济可行的解决办法。

**关键词:**STM32单片机;牛奶保鲜;温度控制;称重监测;远程报警

Abstract

With the continuous increase in the consumption of fresh dairy products and the growing household awareness of food safety, ensuring the freshness and safety of milk stored for a short time has become a very urgent issue. The traditional refrigerator storage method is affected by the temperature fluctuations caused by the frequent opening and closing of the door, lacks real-time feedback on the milk volume, and also cannot effectively monitor unauthorized access. This design takes the STM32F103C8T6 microcontroller as the core controller, integrates the DS18B20 temperature sensor, the HX711 pressure sensor, and the vibration sensor to construct a dedicated intelligent milk fresh-keeping box system. The system can achieve precise control of the internal temperature in real time, dynamically monitor the milk weight, and issue an alarm when unauthorized removal occurs.

****Keywords:****STM32 Microcontroller; Milk Preservation; Temperature Control; Weight Monitoring; Remote Alarm

[第一章 绪论](#第一章 绪论)

[1.1 选题背景及其意义](#1.1 选题背景及其意义)

[1.2 国内外研究现状](#1.2 国内外研究现状)

[1.2.1 国内研究现状](#1.2.1 国内研究现状)

[1.2.2 国外研究现状](#1.2.2 国外研究现状)

[1.3 本文主要内容](#1.3 本文主要内容)

[1.4 本文结构安排](#1.4 本文结构安排)

[第二章 系统总体设计方案](#第二章 系统总体设计方案)

[2.1 系统需求分析](#2.1 系统需求分析)

[2.2 系统总体设计方案](#2.2 系统总体设计方案)

[2.3 主要模块选型](#2.3 主要模块选型)

[2.3.1 主控芯片选择](#2.3.1 主控芯片选择)

[2.3.2 显示模块的选择](#2.3.2 显示模块的选择)

[2.3.3 温度传感器的选择](#2.3.3 温度传感器的选择)

[2.3.4 称重模块的选择](#2.3.4 称重模块的选择)

[2.3.5 通信模块的选择](#2.3.5 通信模块的选择)

[2.3.6 电机驱动模块的选择](#2.3.6 电机驱动模块的选择)

[2.4 本章小结](#2.4 本章小结)

[第三章 系统硬件设计](#第三章 系统硬件设计)

[3.1 单片机最小系统电路](#3.1 单片机最小系统电路)

[3.2 温度采集电路设计](#3.2 温度采集电路设计)

[3.3 重量检测电路设计](#3.3 重量检测电路设计)

[3.4 显示电路设计](#3.4 显示电路设计)

[3.5 无线通信电路设计](#3.5 无线通信电路设计)

[3.6 制冷驱动电路设计](#3.6 制冷驱动电路设计)

[3.7 按键与报警电路设计](#3.7 按键与报警电路设计)

[3.8 震动检测电路设计](#3.8 震动检测电路设计)

[第四章 系统软件设计](#第四章 系统软件设计)

[4.1 主程序设计](#4.1 主程序设计)

[4.2 温度采集子程序设计](#4.2 温度采集子程序设计)

[4.3 重量采集子程序设计](#4.3 重量采集子程序设计)

[4.4 按键处理子程序设计](#4.4 按键处理子程序设计)

[4.5 无线通信子程序设计](#4.5 无线通信子程序设计)

[4.6 制冷控制子程序设计](#4.6 制冷控制子程序设计)

[4.7 本章小结](#4.7 本章小结)

[第五章 系统测试与分析](#第五章 系统测试与分析)

[5.1 系统整体测试](#5.1 系统整体测试)

[5.2 系统功能测试](#5.2 系统功能测试)

[5.2.1 温度采集与控制功能测试](#5.2.1 温度采集与控制功能测试)

[5.2.2 称重模块精度测试](#5.2.2 称重模块精度测试)

[5.2.3 震动报警功能测试](#5.2.3 震动报警功能测试)

[5.2.4 无线通信功能测试](#5.2.4 无线通信功能测试)

[5.3 本章小结](#5.3 本章小结)

总  结

参考文献

[致 谢](#致 谢)

[附件2 源程序](#附件2 源程序)

1 绪论

1.1 选题背景及其意义

随着生活节奏加快以及健康观念提升,牛奶这种含有丰富优质蛋白和钙元素的饮品,正慢慢变成家庭餐桌上较为稳定的搭配,为了方便使用又保证安全,许多家庭会选择大量购买牛奶,并且集中放置在家用冰箱里面,然而这样的常规储存方式存在比较突出的问题:冰箱门不断开关,使得内部温度变化很大,很难一直保持牛奶所需要的低温状态,这就促使微生物活性变高,缩短了牛奶的保质期。用户对于冰箱内牛奶剩余量的了解非常不清楚,经常会出现"以为还有,实际已空"或者"误以为已耗尽却仍存"这种认识上的偏差,造成了资源的浪费。在育儿家庭或者多人共同居住的环境当中,牛奶被非授权人员私自取用的情况经常发生,由于缺少有效的行为追踪机制,很容易引发家庭成员之间的矛盾,也会造成食物不必要的损耗,针对这些实实在在存在的使用方面的困境,研发一款融合精准温控、动态称重、防越权取用以及远程可视化的专用牛奶保鲜装置,这契合实际需求,又有一定的应用价值。这款产品依靠多类传感元件以及无线传输技术,把原本静态的冷藏容器转变为有感知能力并且能进行互动响应的智能载体,促使家庭食品管理从被动守候转变为主动干预,为优化日常饮食结构、减少食物浪费提供可行的技术途径。

1.2 国内外研究现状

1.2.1 国内研究现状

国外在环境参数调控体系的建模以及前沿控制算法探索方面起步较早且领先,理论积累相当丰富,Mingqiu Zhang团队在2022年针对工业场景下的温湿度联动机制展开了系统的分析,揭示了多输入多输出系统里变量之间动态交互的深层规律,为构建解耦控制路径奠定了认知基础1。Hui Li等人在2025年关注室内温湿耦合环境,提出一种融合模糊自适应机制的PD调节策略,依靠模糊规则实时调整参数值,提高了系统应对非线性变化与环境波动的稳定性和适应性,该方法在牛奶保鲜箱面对多变室温条件时有良好的实用性参考价值2。上述这些工作都朝着建立更有感知能力和响应能力的温控架构方向发展,在更广泛的智能仓储领域,海外学者也在不断推动传统装置朝着数字化、联网化方向转变。谢志庆在2024年对LED照明产品结构的革新路径做了深入探讨,虽然没有直接涉及存储系统,但其对功能整合与用户交互体验的重新思考,反映出消费类电子设备向智能互联演进的内在趋势7。石慧在2025年围绕人工智能时代的技术实践进行批判性反思,指出在系统开发中要兼顾自动执行与人为介入之间的张力,这一观点为手机APP远程操控逻辑的设计提供了深层次的思维支持8。总体而言,国际研究更侧重于控制底层机理的突破以及系统层级的网络化重构,其成果为当前方案在控制精细度与模块协同方面的优化给予了有力支持。

1.2.2 国外研究现状

国内针对特定物品智能存储场景展开的技术探索正处于不断深入的状态,逐渐形成了一些有实践价值的途径,杜沐青在2022年关注恒温箱温度调节方面的问题,采用了预估模糊PID控制模型,可有效处理系统存在的时滞特性以及非线性响应,使得温度维持能力和动态适应性得到提高3。王淏在2025年借助AT80C51单片机构建了农业温控系统,该系统融合了温感监测和环境调节机制,为小型密闭空间的温度管理提供了投入较少且响应较快的可行模式4。开春晴于2025年全面梳理了电子技术在农业机械电气控制里的渗透路径,明确指出传感器网络的协同部署以及闭环控制策略在促使设备实现自主决策过程中的关键作用,为多源信息融合架构的构建提供了理论支撑5,刘晚春和李永会在同年对无线网络化控制系统的演进趋势给予归纳,着重分析其在数据时效性、链路鲁棒性以及安全防护方面的突破进展,为本项目中无线通信模块的选型以及容错机制设计提供了实际依据6。李志文和李璐基于STM32平台研发出了有身份识别、环境反馈以及异常预警功能的智能枪械储藏装置,其权限验证逻辑与事件触发机制对牛奶保鲜箱中防止未经授权取用以及及时告警功能的设计有着直接的启发意义9。赵壮志在2023年完成了高精度恒温恒湿控制箱的研发工作,他在控制算法精细化处理以及箱体热工结构优化方面所取得的成果,为本系统温湿度协同调控能力的提高提供了可以再次运用的技术途径10,蒋婷菊团队于2023年基于STM32搭建了恒温水槽控制系统,他们在用户界面响应以及PID参数自整定方面的实践经验,对于本系统中温度显示与制冷行为的动态调节有着清晰的参考意义11。郭晓姿在2022年把多变量解耦模糊控制方法引入到果蔬保鲜监控体系当中,提出了针对温湿度耦合干扰的独立调节策略,为复杂环境下的多参量同步控制提供了全新的技术角度12。许翻凡在2020年针对半导体制冷器开展了恒温控制箱的研发工作,其驱动电路的拓扑构型以及散热结构的热传递路径,为当前制冷模块的参数匹配和电路架构搭建提供了实证方面的参考依据14,鞠昊翀团队在同一时期构建了以单片机为核心的牦牛肉冰点保鲜装置,借助温度传感网络的布设方式以及闭环控制策略的动态响应机制,为乳品在低温环境下的稳定保存提供了可行的路径15。总体来说,我国在专用恒温储存设备方向已经形成了从控制策略迭代到实际工况适配的完整研究链条,不过聚焦于家庭级牛奶存储场景,并且融合重量实时检测与异常入侵预警功能的集成化方案目前还比较少。

1.3 本文主要内容

从家庭牛奶储存这一具体场景着手,围绕STM32F103C8T6主控单元构建了一体化保鲜装置,该装置融合了环境感知、动态调控以及远端联动等多种能力,系统依靠DS18B20来精准读取箱内的温度场,借助HX711持续监测牛奶质量变化所引发的重量波动情况,并且引入震动元件以捕捉非授权取用行为的物理特征表现。在执行这个环节当中,DRV8833驱动电路承担着调控半导体制冷模块工作状态的任务,它会和板载按键以及OLED屏共同构成本地交互路径,这样就可支持用户自行设定温度临界值并且开展人工干预,从程序方面来看,构建了并发调度结构,该结构可以同步完成传感数据采集、决策判断、界面刷新以及异常提示等动作。系统内部配备了ESP8266无线单元,借助它可以实现本地采集信息向云端的传输,还配套开发了移动端应用,借助该应用能够远程获取存储状态并且接收预警通知,整个方案充分考虑到了稳定性、安全性以及操作便利性。

1.4 本文结构安排

本文的组织结构如下:第一章着重关注课题的现实动因以及该领域现有的探索情况,全面梳理研究脉络,清晰界定核心任务的边界范围,第二章围绕系统整体架构展开工作,依据实际需求来搭建框架,针对核心部件的可行方案进行多维度的比对和权衡考量,第三章深入到硬件层面,逐项详细解析以单片机为核心的最小系统、传感信号采集的路径、执行机构驱动的机制以及数据交互接口的电路结构与连接逻辑。第四章呈现软件实现的路径,借助主控程序结构以及各功能单元的子流程图来揭示执行顺序与控制逻辑,第五章构建实验平台,对系统各项性能指标完成实测工作,并且对所得数据进行归因分析,结尾部分归纳技术实践所取得的成效以及现存的短板,提出后续优化有可能的技术路径。

2 系统总体设计方案

2.1 系统需求分析

面对家庭环境里牛奶存放时遇到的温变干扰、存量模糊以及安全方面的风险,该系统需要拥有四类关键的能力,在环境感知这一方面,装置可持续获取箱体内部的温度情况,其工作区间是0℃到50℃,误差控制在±0.5℃以内,以此保证冷藏条件一直处在2~6℃这个理想区间,重量信息则是借助动态传感来达成的,最大承载量能达到2kg,最小可辨识单位为1g,这样可以精确掌握剩余奶量以及消耗的趋势。对于非正常的扰动,系统可捕捉到保鲜箱在没有授权开启或者被外力移动时所产生的振动特征。在控制策略方面,要是温度超过了预先设定好的界限,制冷元件就会依据阈值做出响应,开启或者停止运行,以此来维持箱内温场的稳定状态,一旦检测到出现异常震动的情况,声光告警会在1秒的时间内开始激活,用户可借助本地的物理按键对温度预警区间进行调节,并且可以马上查阅当前的温态以及重量读数。该系统会借助Wi-Fi模块把温度、重量以及报警事件持续不断地上传到终端设备,支持移动端接收这些信息并且远程发送调控指令,整体架构依靠数据采集机制、逻辑决策路径、交互反馈接口以及无线传输链路共同协同运作。

2.2 系统总体设计方案

依据功能实现的目标,该平台将STM32F103C8T6作为控制中枢,把感知、决策、驱动以及人机交互这四个层级融合起来,构建出一体化的硬件架构体系,整体结构布局可参考图2-1。

图2-1 系统总体框架设计图

在感知环节当中,整合了DS18B20数字温感元件、HX711称重模块以及振动检测装置,可实时捕捉到保鲜箱内部的温湿度以及物理扰动方面的信息,中枢控制依靠STM32F103C8T6微控制器来承担,它负责数据融合分析、逻辑决策以及多模块调度等工作,以此保证系统响应有实时性和准确性。执行单元配备了DRV8833驱动的半导体冷却元件、状态指示LED以及声光报警装置,可完成温度调节、运行状态反馈以及异常提示等操作。在人机交互方面,运用了尺寸为0.96寸的OLED显示单元,并且搭配了五组独立按键,以此达成本地信息的呈现以及操作参数的调整,通信路径借助ESP8266 Wi-Fi芯片构建起来,可支持与移动端应用之间的双向数据流转,一方面把现场运行状况上传到远程服务器,另一方面接收用户下发的调控命令,各个层级之间凭借标准化接口和协议进行联动,形成一个可动态响应并且自我调节的闭环运行架构。

2.3 主要模块选型

对于系统的关键部分,全面考虑性能表现、投入规模以及实施节奏等方面,开展多方案的横向评估工作,最终确定最优配置。

2.3.1 主控芯片选择

方案一:以STC89C52单片机作为控制核心,此器件源自8051架构,经过广泛的应用,技术路径较为稳定,开发资源丰富,成本控制良好,芯片内部有8KB Flash空间以及256字节RAM,配有三个定时/计数单元以及一个支持双向通信的串行接口,对于基础层级的自动化操作需求而言,它的处理能力以及资源分配已经可以胜任。

方案二:选用基于ARM Cortex-M3架构的STM32F103C8T6微控制器,其工作频率最高能达到72MHz,内部存储空间设置为64KB Flash和20KB RAM,并且有3路USART通信接口、2个I2C总线模块、2个SPI协议支持单元以及多达37个通用输入输出端口,在多任务调度以及多源传感数据协同处理的情况下,此芯片表现出不错的实时响应能力和资源调配灵活性。它的实际硬件形态如图2-2所示。

图2-2 STM32F103C8T6单片机实物图

结论:该系统需要同时接收来自温度、重量以及振动这三类传感器的输入信息,驱动OLED屏幕显示相关数据,实现Wi-Fi传输操作并且执行制冷调节工作,整个任务较为密集,对于响应时效有着明确的要求,STC89C52在运算强度方面以及资源分配方面存在着一定的局限性,在面对多重并发逻辑时很难维持稳定的运行状态。与之相比,STM32F103C8T6有更强的算力,拥有更完备的外设配置,其中多路串行通道以及硬件I2C的支持是其突出特点,以及更大的存储空间,它能够全面承载当下的功能链路,还可以为后续的功能拓展提供足够的缓冲空间,最终确定采用STM32F103C8T6作为核心控制器。

2.3.2 显示模块的选择

方案一:LCD1602屏幕被选来使用,它有双行显示功能,每一行可容纳16个字符,并且工作能耗比较低,成本也相对低廉,驱动逻辑也比较简洁,不过它的字符库受到ASCII编码体系的限制,没办法直接呈现中文内容或者图像元素,使得信息表达形式比较单一。

方案二:选用了0.96寸OLED显示单元,它自身的发光特性使得画面呈现出鲜明的视觉效果,有良好的对比度,而且厚度非常小,视角覆盖范围较为广泛,呈现效果也比较稳定,它的显示区域是128×64像素,可以呈现文本信息,还可以准确渲染中文、数值以及基础图形元素,借助I2C协议连接,只需要两根信号线就能完成与单片机的数据交互,这大大释放了I/O端口的使用空间。该器件的实际形态如图2-3所示。

图2-3 0.96寸OLED显示屏实物图

结论:该系统需要在本地以直观的方式呈现出温度、重量以及设定阈值等中文数据,然而LCD1602在信息承载能力方面表现欠佳,0.96寸OLED能够完整地覆盖信息展示的需求,它所采用的I2C通信接口也有利于与STM32进行连接,并且其能耗相对较低,这符合整体低功耗架构的逻辑要求。经过评估后决定采用0.96寸OLED作为人机交互界面。

2.3.3 温度传感器的选择

方案一:此次选用DS18B20作为温度检测元件,其基于单总线协议,仅仅占用一个I/O端口便可和MCU进行数据交互,它的工作区间范围是-55℃到+125℃,在-10℃至+85℃这个区间内,测温误差可被控制在±0.5℃以内,它内部有ADC模块,可以直接生成数字量输出,不需要依赖额外的电路,而且对来自外界的电磁干扰有比较强的抑制能力。

方案二:在本系统里选用 NTC 热敏电阻当作温度检测元件,这种器件的阻值呈现出十分突出的随温度变化的特性,在电路当中需要和一个定值电阻一起构成分压结构,让 ADC 去读取输出电压,之后依靠查表法或者非线性算法来还原温度数据,不过测量结果的稳定性欠佳,而且对外部电磁干扰比较敏感。

结论:在保障牛奶贮存期间温控精度方面,系统需要依靠一种有较高准确度以及较强稳定性的测温方式,DS18B20可直接输出数字信号,省去了外部模数转换步骤,它的接口简单,分辨率良好,大大降低了硬件布局以及程序逻辑的复杂性,与之相比,基于NTC的传感架构存在线路繁杂、测量偏差较大等不足之处。最终选定采用DS18B20作为温度感知元件。

2.3.4 称重模块的选择

方案一:依据电阻应变原理的压力传感元件和HX711芯片共同协作,重量信号经过它之后转变为细微的电压波动,HX711是24位高精度模数转换器件,内部有稳压电路以及时钟发生器,拥有双差分输入路径,有良好的噪声抑制能力和测量稳定性,可以直接借助类I2C的串行协议和MCU构建通信链路。

方案二:利用通用压力传感器和MCU内部ADC共同协作,系统的结构较为简单,不过大多数内置ADC仅仅支持12位采样,其量化粒度比较粗糙,对于微弱信号需要依靠外部仪表放大器来提高,整体电路的布局较为复杂,最终输出的精度表现以及动态稳定性明显不如专用传感芯片方案。

结论:牛奶剩余量的检测对于精度以及一致性有着极为严格的要求,HX711和电阻应变式传感器相结合的技术在称重系统里已经得到了验证,它的可靠性是经得起考验的,凭借24位分辨率能够实现每克级别的测量能力,这种性能足够让当前方案顺利运行,最终做出的决策是把HX711当作核心称重单元来使用。

2.3.5 通信模块的选择

方案一:基于ESP8266 Wi-Fi芯片所构建的嵌入式系统,该芯片内部集成有完整的TCP/IP协议栈,有低功耗以及强兼容性的特性,依靠AT命令来达成参数设置,经由串行接口和MCU建立起通信链路,可达成设备与远端服务器或者移动终端的数据同步,适用于跨越地理区位的实时状态监测需求。

方案二:所选用的是HC-05蓝牙模块,此模块依靠串行接口来传输数据,整体能耗方面有较好的表现,而且在配对过程中十分便捷,不过它的通信范围一般不会超过10米,并且通信模式大多局限于点对点结构,没有直接接入网络的能力,进行数据交互以及实现远程操控时需要依赖物理空间的近距离支持。

结论:用户对于牛奶箱运行状态的远端感知有着需求,这促使设备有了联网的能力,ESP8266 Wi-Fi模块借助无线链路把实时数据传送到云平台,让终端访问者在拥有网络连接的情况下可及时获取设备信息,蓝牙模块由于通信半径受到限制,很难承担跨区域的持续监测任务,最终选择ESP8266作为无线传输的核心方案。

2.3.6 电机驱动模块的选择

方案一:选择DRV8833作为驱动方案,此器件有内置双路H桥结构,可对两台直流电机或者单个步进执行元件进行管理,其运行电压区间保持在2.7V至10.8V之间,每个通道的最大输出电流达到1.5A,内部设有过流检测以及温度超限防护机制,依靠接收基础PWM信号便可调节转速与转向状态。

方案二:此次选用L298N作为驱动单元,此器件属于典型的H桥结构,有承载更高电流负载的能力,在其运作的时候需要搭配外部续流二极管来稳定电流路径,整体尺寸相对较大,工作过程中存在较为十分突出的导通压损,特别是在低电压场景之下能量损耗较为明显。

结论:驱动半导体制冷片所需要的电源仅为5V/1A量级,DRV8833的输出性能足够覆盖这一工况,该器件在空间占用以及外围布局方面有着出色的表现,其能效水平比较高,适合应用于紧凑型或者轻量化装置的场景,与之相比,L298N虽然有较强的驱动能力,然而结构较为庞大,并且能量转化效率较低,对于当前系统来说会存在资源浪费的情况。经过综合考量,最终决定选用DRV8833作为制冷模块的驱动方案。

2.4 本章小结

对系统在温控精度、重量检测、安全防护以及远程数据交互等方面的需求进行了详细分析,明确了各项性能的边界以及运行的条件,基于这些实际的限制情况,构建起以STM32F103C8T6作为核心的整体制控架构,形成了包含感知层、决策层、执行层、人机交互层以及信息传输层的结构化布局,使得各层级的功能边界和组成关系可清晰地呈现出来。对于主控单元、显示单元、温度传感单元、称重传感单元、无线通信单元以及动力驱动单元,进行了多方案的技术可行性评估工作,全面考虑了稳定性、响应速度以及成本等多方面因素,经过综合分析后,确定选用STM32F103C8T6、0.96寸OLED、DS18B20、HX711、ESP8266以及DRV8833作为核心部件,这种配置在可靠性与功能覆盖之间达成了平衡状态,为后续的电路实现以及程序逻辑开发奠定了有实际可行性的技术基础。

3 系统硬件设计

智能牛奶保鲜箱所拥有的物理架构是依靠硬件系统来达成的,依据第二章所提出的整体框架内容,针对各个功能单元的电路工作机制、接口协议以及与STM32主控芯片之间的互联逻辑展开系统的剖析。

3.1 单片机最小系统电路

STM32F103C8T6芯片的最小工作单元是系统稳定运行的基础所在,其内部结构包含了电源管理、时钟生成、复位控制以及程序更新机制等部分,输入电压为5V直流,经过U1 AMS1117-3.3稳压模块转换成3.3V输出,这能够契合STM32主控单元的需求,还可以让板载其余3.3V逻辑器件正常运作。时钟系统运用了8MHz与32.768kHz这两种频率源,其中8MHz晶振搭配C43与C44各30pF的负载电容,形成有高稳定性的高速时钟网络,经由内部PLL倍频处理之后,系统的最高运行频率可达72MHz,32.768kHz晶振则专门用于实时时钟模块的时间基准校准。复位路径采用RC结构,由R46与C56构成,其输出NRST端直接连接到芯片NRST引脚,当SW16被按下时,系统便会进入初始化状态,程序加载依靠SWD双线接口,只需要SWDIO、SWCLK与GND三根线路便可完成固件写入与实时调试,大大减少了对外部I/O资源的占用。启动模式由BOOT0与BOOT1引脚共同决定,当前配置中BOOT0接地,系统会优先从主Flash区域读取并执行用户程序,该最小系统架构在实际运行过程中呈现出良好的可靠性与环境适应能力,具体情况如图3-1所示。

图3-1 单片机最小系统电路原理图

依据系统功能布局情况,STM32F103C8T6的I/O端口进行了重新规划,使其与实际应用相匹配,DS18B20的传感数据线连接到了PA8,HX711称重模块的DOUT端口连接至PB12,而SCK时钟线则配置在了PB13,OLED屏幕的I2C通信路径里,SCL时钟线固定在了PA11,SDA数据线对应的是PA12。ESP8266无线通信单元采用USART3接口进行启用操作,该接口的TX端连接至PB10,RX端则对接PB11,DRV8833驱动芯片的使能引脚被设定为PA0,状态指示LED安装在PB0,震动传感器的数字输出端接入PB6,在板上设置了五组独立按键,这些按键的输入通道分别对应映射到PC15、PC14、PC13以及PB4。蜂鸣器的控制权归属于PB5,经过全面综合考量之后完成了最终的布线工作。

3.2 温度采集电路设计

为了可对保鲜箱内的温场达成精准感知,系统挑选了DS18B20作为温度检测元件,此器件和STM32F103C8T6单片机的接口十分简洁,仅仅依靠一条数据线便可同时达成供电以及信息交互,单总线架构大幅减少了主控单元对I/O端口的占用,它的VDD端连接3.3V电源,GND端接地,DQ引脚承担数据收发任务,直接连接到PA8引脚。为了保证通信链路可以可靠运行,在DQ线上并联一个4.7kΩ上拉电阻,连接到3.3V电源,这个电阻在总线处于空闲状态的时候维持高电平,并且为传感器在寄生电源模式下提供必要的工作电流。当单片机没有参与通信的时候,PA8会被设置成输入状态,这样总线就会自然而然地保持高电平,在执行温度读取的过程当中,单片机按照单总线协议来生成复位信号以及时序间隙,DS18B20会根据这些情况作出相应,并且回传对应的二进制温度值,依靠DS18B20所有的数字输出特性,整个信号处理环节不需要额外的模拟调理电路,物理量可直接转化成数字信号,这有效地提高了系统的抗噪声能力以及测量分辨率。温度采集结构如图3 - 2所示。

图3-2 DS18B20温度采集电路原理图

3.3 重量检测电路设计

在压力测量这个环节中,采用了电阻应变式传感元件,并且搭配了HX711模数转换芯片,这样做是为了提高牛奶质量称重的灵敏度以及稳定性,当外力作用于传感器结构的时候,其内置的惠斯通电桥就会产生微小的电压偏移,从而生成毫伏量级的差分输出,这种信号强度非常低,很难被普通的单片机直接捕捉到。HX711是一种面向精密称重场景开发的24位A/D转换器件,它内部集成了可以调节增益的低噪声放大单元,能够对原始微弱信号进行有效的提高处理,该模块的E+与E-端口为传感器提供了恒定的激励电源,而A+与A-端口则接入了差分信号源,形成了闭环反馈路径。它和STM32F103C8T6之间的交互是依据时钟与数据双线机制来进行的,SCK脚连接到PB13,承担着发送同步时钟脉冲的任务,DOUT脚连接到PB12,在时钟的驱动作用下按照位的方式传输24位的转换结果,单片机借助主动控制PB13输出时钟的节奏,并且持续关注PB12的电平变化情况,以此来实现对重量数值的逐位采集。HX711把模拟前端和数字处理部分进行了深度融合,极大地减少了外围电路的复杂程度,使得整个方案在性能和成本这两方面达成了良好的平衡状态,系统的重量采集结构可参见图3-3。

图3-3 HX711称重模块电路原理图

3.4 显示电路设计

为了方便用户在本地随时了解保鲜箱的工作情况以及关键数据,系统配备了一块0.96英寸的OLED显示单元,此模块是基于SSD1306驱动芯片,采用I2C总线模式运行,它的通信结构由时钟线SCL和数据线SDA一起组成,只需要两根引脚就能让主控端和显示屏之间进行信息交换,大大降低了对STM32F103C8T6芯片I/O端口的占用,还优化了板级布线的复杂程度。在实际进行接线操作的时候,OLED的VCC端连接的是3.3V电源,其GND端是接地的,SCL端接入的是PA11引脚,该引脚作为时钟同步源,而SDA端对应的是PA12引脚,此引脚承担着主控与屏幕之间命令以及数据双向传递的任务,单片机借助硬件或者模拟I2C机制,依次下发初始化指令、显存写入内容以及画面刷新请求,使得系统所获取到的温度读数、牛奶质量、制冷模式等运行信息可以在界面上得到直观呈现。整个显示方案的结构较为紧凑,响应速度较快,可有效地支撑人机交互过程中信息反馈的效率,电路布局可参见图3-4。

图3-4 OLED显示模块电路原理图

3.5 无线通信电路设计

为了实现数据在远端进行传输以及与移动端展开实时互动,系统采用了ESP8266 Wi-Fi模组,这个部件以独立通信协处理器的形式参与到整个架构当中,依靠串行通道和STM32F103C8T6主控单元达成信息交互,ESP8266的VCC端要连接上恒定的3.3V电源,GND端则要和系统的地线连接在一起,以此保证电位保持一致。它的URXD和UTXD分别承担着接收和发送的任务,可支持与单片机之间的双向数据流动。具体的布线方案是这样的:UTXD端口连接到STM32的PB11,也就是USART3_RX,而URXD端口连接到PB10,即USART3_TX,形成了典型的串口反向接驳结构,这种结构符合标准的串行通信协议,单片机借助USART3通道发送按照AT指令格式的操作指令,这些指令用于设置模组的运行状态、接入指定的Wi-Fi网络并且建立TCP会话,同时,从云平台反馈回来的信息也会凭借这个通道返回到主控芯片。这条路径成为了系统内外部信息流转的核心枢纽,直接为远程状态观测能力提供了支持,无线通信拓扑结构可参考图3-5。

图3-5 ESP8266 Wi-Fi模块接口电路原理图

3.6 制冷驱动电路设计

此系统选取了半导体制冷片当作执行元件,依靠DRV8833双路H桥驱动芯片来精确控制它的工作状态,这款芯片拥有两组独立的H桥结构,每一组都可驱动一台直流电机或者电磁类负载,由于半导体制冷片本身是电流型器件,要进行制冷和制热模式的切换就需要双向电流,而本方案只是实现单向制冷功能,只使用DRV8833中的一个H桥通道。在电路布局上,VCC端口连接5V电源为芯片内部逻辑以及功率路径供电,GND端直接连接地线。控制信号IN1和IN2分别连接到STM32F103C8T6的PA0引脚,借助对这两个输入端电平的配置,可以动态地改变OUT1与OUT2的输出状态,当PA0输出高电平并且IN2处于低电平时,H桥的上臂与下臂会同时导通,形成电流路径让制冷片开始工作,要是IN1和IN2都处于低电平,那么H桥就会断开,输出呈现高阻抗状态,制冷过程也就终止了,和传统的三极管或者继电器方案相比,采用专用驱动芯片可有效地提高电流输出的稳定性以及响应效率,还可以避免主控单元因为反向电压冲击而受到损害。制冷回路结构如图3-6所示。

图3-6 DRV8833制冷片驱动电路原理图

3.7 按键与报警电路设计

人机交互以及安全提示机制借助按键输入路径和蜂鸣器反馈回路来达成,输入端设置了五组独立的轻触元件,每个开关的一端固定连接到地,而另一端直接连接至STM32F103C8T6的GPIO端口,具体的映射关系如下:SW6即功能键接入PC15,SW7也就是增益键接PC14,SW8是减量键接PC13,SW17是配送触发键连PB4。其中SW6承担着界面跳转以及指令确认的功能,SW7和SW8用于动态地调整数值,SW17则会激活配送提醒的逻辑,在软硬件协同设定的过程中,对应的引脚被设置成上拉输入状态,当没有触发的时候维持高电平,一旦按键接触,就会形成地线短路,电平转变为低电平。单片机依据电平跃变来识别,以此捕捉操作指令的产生,报警部分运用有源蜂鸣器,借助NPN型三极管S8050达成驱动功能,PB5输出端经过1kΩ限流电阻连接到三极管基极,蜂鸣器正极连接5V电源,负极接入集电极,发射极接地,当PB5输出高电平时,三极管进入饱和区,蜂鸣器通电发出声音,相反,当PB5为低电平时,三极管关闭,蜂鸣器停止工作。这种结构依靠微弱控制电流来调节较大负载电流,保证了报警信号的稳定反应,按键布局以及报警结构如图3-7所示。

图3-7 按键与蜂鸣器报警电路原理图

3.8 震动检测电路设计

为了应对未经授权的取物行为,系统采用了基于振动响应的传感单元,这个单元结构里面包含一个弹性触点开关以及配套的阈值判断电路,在静止状态下触点是分离的,输出端DO保持高电平,一旦出现振动扰动,弹性元件会短暂闭合,使得DO产生短暂的低电平跳变,供电方面,VCC端接入3.3V电源,GND端连接地线,DO作为数字输出端口,直接连接到STM32F103C8T6芯片的PB6引脚。PB6被指定为外部中断输入通道,且设定为下降沿敏感模式,当保鲜箱出现位移或者遭受外力冲击的时候,传感器输出的低电平信号会立刻触发该中断,在中断响应期间,控制器会迅速驱动蜂鸣器发出警报,同时把事件信息传递到OLED屏幕进行呈现,并且借助Wi-Fi模块远程发送,以此来达成对异常行为的即时反馈。整个检测路径凭借极简的结构达成安全防护的目标,不依靠复杂的逻辑运算,有反应速度快、运行稳定的特点,振动检测结构如图3-8所示。

图3-8 震动传感器接口电路原理图

4 系统软件设计

智能控制逻辑要得以落实,需要依靠软件体系的精心搭建,在Keil uVision5平台之上,运用C语言来编写程序,充分调动STM32标准外设库里的API接口,以此提高编码效率并让结构变得清晰,整个系统的结构依照分层的理念,把硬件交互、核心算法以及数据传输划分成独立的层级来进行协同运行。系统软件由主控流程、温度感知单元、质量检测单元、用户输入响应、OLED状态呈现、制冷策略执行、异常告警管理以及Wi-Fi数据交互等多个功能单元共同给予支持,各个部分之间达成动态联动以及信息传递,各部分之间实现动态联动和信息传递。

4.1 主程序设计

在系统启动阶段,首先开展HAL库环境搭建工作,对时钟体系进行配置,并且对外设稳定性实施延时等待操作,之后按照特定顺序依次激活OLED显示、ESP8266无线通信、DS18B20温度传感、HX711称重单元、按键与LED蜂鸣器的GPIO接口,以及系统滴答定时器的初始化工作,当初始化工作全部完成之后,程序便进入持续运行的主循环当中,在此期间以非阻塞模式周期性地触发多项功能任务。每隔500毫秒,系统就会同步获取温度以及重量的数据,并且执行类似于PID的温控策略,要是实测温度超过了预设的上限,制冷元件就会马上启动,反过来的话就停止运行,系统会持续监控按键的动作以及震动传感器所引发的中断事件,及时对用户的交互以及异常告警做出响应,在通信方面,程序会持续验证Wi-Fi模块的联结状态,一旦连接成功,就会立刻把最新采集到的温度、重量信息以及报警状态经由串口转发到ESP8266,由它来完成云端数据的推送。整个主程序的执行路径如图4-1所示。

图4-1 主程序流程图

4.2 温度采集子程序设计

温度采集子程序依靠单总线协议从DS18B20传感器获取温度信息,该程序的执行过程很大程度上依赖于对GPIO引脚工作模式以及时间延迟的精确控制,PA8引脚被设置为开漏输出,首先将它拉低持续480微秒来发出复位信号,接着释放总线并转变为输入状态,同时等待传感器反馈的存在脉冲响应,在确定存在脉冲之后,系统依次发送跳过ROM指令和温度转换指令,等待大约750毫秒让传感器完成内部采样。之后再次发起复位以及存在脉冲检测,接着写入读暂存器命令,按照位逐一获取16位原始数据,其中前5位是符号位,后11位对应分辨率为0.0625℃的精度数值,最终,这个原始数据经过算法处理变成可直接用于显示的浮点格式,整个流程借助严密的时间序列管理,保证了读取过程的稳定性和准确性。流程逻辑结构如图4 - 2所示。

图4-2 温度采集子程序流程图

4.3 重量采集子程序设计

重量采集子程序依靠模拟I2C时序从HX711芯片获取24位原始AD值,然后将其转化为可解读的重量数值,HX711芯片的通信结构包含数据线DOUT和时钟线SCK,当内部AD转换完成时,DOUT会从高电平转变为低电平,这表明数据可以被读取,一旦检测到这种状态变化,程序就会向SCK输出时钟脉冲,在每个脉冲的上升沿捕获DOUT的一位数据,经过24次读取后形成完整的二进制补码。为了达成下一轮采样的任务,系统需要再次发出一个时钟周期,当获取到初始AD值之后,程序会执行滑动平均滤波操作,以此来减弱环境干扰所引发的波动,最终依据前期标定得到的线性比例因子,也就是单位重量对应AD值的变化数值,把滤波结果减去零点偏移量,接着除以这个比例系数,如此便可得出当前重量,其单位是克。整个过程实现了物理质量向数字化量的精确映射,流程逻辑如同图4-3所示。

图4-3 重量采集子程序流程图

4.4 按键处理子程序设计

按键响应机制依据GPIO电平的实时监测或者中断事件,对用户输入行为进行动态捕捉,五个按键所对应的引脚都设置为外部中断输入,其响应条件是电平下降,以此保证操作有即时性,当按键被物理按压时,引脚就会产生跳变信号,激活相应的中断处理函数,为了防止机械接触引发的瞬态波动导致误判,在中断响应中嵌入一段10至20毫秒的延迟周期来滤除噪声。延迟结束后再次读取引脚状态,要是仍然维持低电平就判定为有效按键事件,并且识别出具体是哪一个按键被触发了。对于"模式/设置"键而言,系统会进行运行模式的切换或者进入配置界面,在设置模式当中,"加"与"减"键用于调节当前参数值,像是设定温度阈值或者定时周期,还会同步更新内存里全局变量的数值,"配送"键的功能是设置一个标志位,让主循环向手机端APP发起配送提醒请求。所有合法的操作都会凭借OLED屏幕实时呈现出来,该按键响应逻辑结构如图4-4所示。

图4-4 按键处理子程序流程图

4.5 无线通信子程序设计

基于STM32的USART3外设,无线通信子程序依靠AT指令集和ESP8266模块进行交互,以此达成指令下发以及响应数据的解码任务,在系统启动的时候,串口按照顺序传输"AT"、"AT+CWMODE=2"等指令,让ESP8266转变为AP工作模式并且建立起本地Wi-Fi热点,接着执行"AT+CIPMUX=1"与"AT+CIPSERVER=1,8080",激活TCP服务监听在8080端口。在主循环阶段,程序持续对串口输入队列展开扫描,判断是否存在来自手机APP的连接尝试或者数据包到达的情况。当检测到有效信息时,像是用户端所发送的控制命令,系统便会启动解析逻辑,从中分离出关键操作标识,然后动态调整运行参数,比如强制启动制冷功能或者更新温度阈值设定,此时,要是系统生成新的状态信息,像实时温度、称重数值或者异常报警标志,主流程就会触发数据封装机制,把它们转化为标准字符串格式,借助"AT+CIPSEND=..."指令链路发送至ESP8266,由其负责广播给所有已接入客户端。该通信路径的执行逻辑如图4-5所示。

图4-5 无线通信子程序流程图

4.6 制冷控制子程序设计

制冷控制子程序的运行机制是围绕着温度阈值的动态判断来开展的,它还兼容了人工干预的即时调节方式,系统设置了一个全局变量tempup,用来记录用户设定的最高允许温度,在主循环执行期间,会实时读取ds18b20_temp所反映出的当前环境温度,当处于自动运行状态的时候,系统会把这个数值和tempup进行比较,要是检测到实际温度超出了预设范围,就会凭借PA0端口发送高电平信号,从而激活DRV8833驱动模块,让制冷片开始工作。相反地,当温度下降到或者低于设定数值时,就切断PA0输出,使得制冷片停止运转,为了防止因为温度出现波动而造成频繁启动和停止的情况,程序里加入了微小的滞后差值来让响应过程更加平稳,用户可借助手机应用程序或者本地物理按键进入手动控制阶段,在这个状态之下,原本的温度判断路径被中断,制冷片的开启与关闭行为直接依据操作指令来决定。这样的结构保证了系统在正常工作状况下有稳定的恒温特性,同时也给予了使用者在特殊情形下灵活调节的能力,相关控制逻辑的执行路径如图4-6所示。

图4-6 制冷控制子程序流程图

4.7 本章小结

本章聚焦于智能牛奶保鲜箱系统的软件架构,借助Keil MDK平台以及C语言来搭建开发体系,运用模块化结构来组织代码逻辑,在整体流程里,主程序凭借非阻塞轮询机制来进行统筹调度,各个功能单元依据硬件特性分别完成温度读取、重量检测、按键识别、无线数据交互以及制冷动作控制等工作。温度采集模块可实时感知环境的变化情况,重量采集模块可以捕捉容器的负载状况,按键响应模块可捕捉用户的操作意图,无线通信模块可实现远端指令的接收以及状态的上报,制冷控制模块会根据预设条件驱动执行机构,整个流程在逻辑闭环的情况下进行运作,从原始信号的获取一直到指令的执行形成了连续的链条。该系统依靠流程图以及执行路径的说明,把分散的硬件接口融合成一个统一的运行框架,支撑起本地操作反馈以及远程动态监管的综合能力,最终实现智能温控、人机互动以及远程可视化的功能目标。

5 系统测试与分析

为了检验系统是否可达成预先设定的功能表现以及性能目标,搭建了一个全面覆盖整个流程的实验环境,针对智能牛奶保鲜箱开展了多维度且有深度的验证工作,测试范围包含硬件单元运行状态的确认、软件逻辑路径准确性的核验,以及整机协同工作时的联动调试。

5.1 系统整体测试

系统运行验证着重关注各功能单元于实际环境中的联动状况以及抗干扰能力,程序经过编译之后被导入到STM32主控芯片,并且完成了供电操作,电源状态指示灯呈现出稳定的发光状态,OLED面板顺利加载了初始画面并且完成了界面刷新工作,ESP8266模块自动开始激活,生成预先设定名称的无线网络环境,终端设备接入之后借助TCP调试工具连接到了指定服务器地址与通信端口。DS18B20传感器于不同温场当中被进行部署,手机端以及OLED屏上的温度数据会同步实现更新,并且响应趋势是一致的,多组质量存在差异的砝码放置在称重平台上,系统反馈出来的数值和实际负载相匹配的情况良好,对保鲜箱外壁施加震动这一动作时,蜂鸣装置会即刻发出声响,移动端也会接收到对应的告警提示。远程借助手机应用下达"开启制冷"的命令后,制冷元件会随即开始启动,其冷端的触感可较为明显地感觉到温度出现下降,完整的测试装置结构如图5-1所示。

图5-1 系统整体测试实物图

在持续进行48小时通电运行的这段时间里,系统一直都处于正常的工作状态,没有出现意外的宕机情况或者重启事件,各个功能模块运行得十分流畅,这充分说明硬件接线是准确的,软件执行也是可靠的,整体架构有实施的可能性。

5.2 系统功能测试

5.2.1 温度采集与控制功能测试

测试目的:在DS18B20采集温度数据这一场景当中,系统会按照预先设定好的阈值来判定制冷片的启停状况,这种控制行为是否合理已经经过了实际运行情况的验证。

测试步骤:

  1. 当按键出现动作时会触发对温度上限阈值的调整操作,而设定值则被设定为10.0℃。

  2. 把保鲜箱放置在大约25℃的常温环境里,这个时候采集OLED屏以及手机APP端的温度读数,对制冷片的运行状况展开监测。

  3. 把冷藏饮料放置到保鲜箱里之后,静置20分钟,记录下它的温度随着时间变化的趋势,同时监测制冷片在环境温度降到10.0℃以下时的响应表现。

测试结果:初始温度稳定在25.3℃,此时制冷片开始响应并启动工作,饮料投入之后,OLED界面所呈现的温值逐渐下降,当读数降低到9.8℃的时候,制冷片便停止运行,随后温度慢慢上升,一直到10.2℃时,制冷片再次被激活,温度变化的轨迹如图5-2所示,实验数据汇总在表5-1中。

图5-2 OLED显示屏温度数据显示图

表5-1 温度控制功能测试表

|---------|---------|------|------------|------|
| 设定阈值(℃) | 初始温度(℃) | 制冷状态 | 到达阈值后温度(℃) | 制冷状态 |
| 10.0 | 25.3 | 开启 | 9.8 | 关闭 |
| 5.0 | 9.5 | 开启 | 5.1 | 关闭 |

5.2.2 称重模块精度测试

测试目的:在针对HX711称重模块开展的测控实验里,该模块的测量精度以及线性响应特性都经过了系统的检验,最终得出的结果契合了牛奶余量监测场景所要求的实际需求。

测试步骤:

  1. 在上电的那一刻,此时称重平台并没有承载任何物料,系统便开始启动零点自适应调节功能。

  2. 把质量分别为100g、500g、1000g以及1500g的标准砝码放置在托盘的中央位置区域,以此来达成负载布局的要求。

  3. OLED界面所呈现的称量数值会被采集起来,之后与标准砝码对应的质量进行比较,从而得出误差值。

测试结果:在不同负载状况下所得到的检测结果和实际质量呈现出高度契合的态势,在1500g的工况当中,偏差达到了3g,而全局测量的波动被控制在了±3g的范围之内,这与预先设定的技术指标是相符的,关于测试流程可参见图5-3,详细的数值记录在表5-2中。

图5-3 称重模块精度测试图

表5-2 称重模块精度测试表

|-----------|---------|---------|------|
| 标准砝码质量(g) | 实测重量(g) | 绝对误差(g) | 相对误差 |
| 100 | 101 | +1 | 1.0% |
| 500 | 502 | +2 | 0.4% |
| 1000 | 998 | -2 | 0.2% |
| 1500 | 1503 | +3 | 0.2% |

5.2.3 震动报警功能测试

测试目的:当震动传感器对冲击以及位移变化进行感知的过程中,报警机制所有的稳定性得到了相应的验证。

测试步骤:

  1. 在系统处于维持稳定运行状况的这一阶段,蜂鸣器会开始被激活。

  2. 手指开始于保鲜箱表面进行轻触动作,随后压力逐渐慢慢递增。

  3. 轻轻触摸保鲜箱的边缘部分,该保鲜箱就会顺着桌面缓缓滑动。

  4. 当出现敲击或者位移这类动作的时候,会持续监测蜂鸣器是不是会立刻发出声音,以及OLED屏是不是能够同步显示出预警提示。

测试结果:在轻触动作的情况下,传感器会出现误判的情况,然而当敲击强度达到中等或者更高程度的时候,蜂鸣器会快速发出声音,其反应时长处于低于100毫秒的状态,当保鲜箱出现被推动从而引发位移的情况时,报警机制就会随之启动,它的响应过程较为稳定且可以测量,手机端的应用能够实时捕捉到这种状态的变化,系统对于异常行为的识别能力呈现出良好的即时性和准确性,切实有效地抑制了非授权取用行为的出现。

5.2.4 无线通信功能测试

测试目的:在实际的运行过程当中,ESP8266和手机端应用之间的数据交互呈现出了较为良好的连通性以及响应时效。

测试步骤:

  1. 当手机接入由系统所生成的Wi-Fi网络之后,便开启TCP通信应用来执行连接的操作。

  2. 当注视手机所呈现的显示界面时,会持续对系统所传输的温感以及载荷相关信息展开监测工作,其更新的周期大致处于2秒上下。

  3. 当手机APP发出"开启制冷"指令之后,系统会作出相应反应,并对保鲜箱内部的制冷片是否存在工作状态展开检测。

  4. 当手机放置在距离保鲜箱15米之外的相邻空间,并且处于间隔两道墙体之后的情况下,针对数据接收状态展开再次监测工作。

测试结果:在距离处于小于10米并且不存在物理障碍的场景当中,通信链路维持着平稳状态,信息传输没有出现中断的情况,当距离拓展至15米并且存在墙体遮挡的时候,信号幅值呈现出衰减的趋势,然而接收端依旧可以捕捉到有效的数据,仅仅表现为更新速率有轻微的降低,远程操控指令的反馈过程几乎是即时的,系统响应没有明显的滞涩表现。终端设备的数据获取情况可参见图5-4。

图5-4 手机APP数据接收与指令下发界面图

5.3 本章小结

智能牛奶保鲜箱系统的功能架构以及关键部件的表现都经由了系统的验证,其结构的合理性以及运行的稳定性得到了确认,在温度调节这一环节当中,DS18B20传感单元和制冷执行机构共同联动运作,箱体内部的温场可以精确地维持在用户预先设定的区间范围之内,从而实现持续且稳定的恒温环境。HX711称重单元的检测偏差被控制在了±3g以内,这完全能够契合日常牛奶存量的动态监控需求。震动检测机制有快速响应异常扰动的能力,一旦识别出非授权取用行为就会触发预警动作,ESP8266通信单元运行状况良好,数据包可以稳定地传输到移动端,远程操作指令也能准确无误地送达终端设备,在实际运行过程中,该套系统没有出现功能失常或者响应延迟的情况,各个模块的协同表现契合设计的初衷,为家庭场景里牛奶的长期、安全存储提供了一种切实可行的技术途径。

总结

在家庭牛奶保鲜的实际场景当中,依据STM32单片机构建了一套智能保鲜箱的解决方案,该系统整合了温感监测、质量传感、振动识别、本地反馈、无线交互以及自动化调节等诸多能力,在硬件架构成型之际,配套程序逻辑完成了编排,使得箱体内部温度可动态地维持在牛奶推荐保存的范围之内,波动幅度被控制在合理的阈值范围内。称重单元凭借高灵敏度实现了牛奶存量的实时捕捉,用户无需等到耗尽才会察觉到空瓶问题。当振动检测机制介入之后,箱体拥有了物理入侵预警的能力,这使得误取风险得到了一定程度的降低,依靠ESP8266 Wi-Fi功能,终端可经由手机应用远程获取当前的环境数据,在出现异常情况的时候能够及时得到警报,使用体验有了十分突出的改善,全系统历经多轮功能验证以及稳定性分析,各个子单元运行状况较为平稳,性能参数都符合预先设定的目标,这证实了该结构在实际部署过程中的可行性与适应性,为家庭场景下的食品类智能储藏提供了一条有经济性且可靠的可行途径。

虽然该系统已经实现了基本的运行目标,不过还是存在可以进行优化的地方,在温控策略方面,目前采用的方案是依靠二值切换机制,这就导致温度在设定的区间之内出现了震荡的情况,要是把基于反馈的PID调节逻辑引入进来,并且用PWM信号来动态调整制冷元件的输出,那么就有希望得到更加细致、稳定的温度维持效果。针对乳品质量判识这一环节,现在仅仅是完成了质量传感,没有对产品的来源或者品类有辨识的能力,把视觉解析或者射频标签识别手段结合起来使用,就可以实现对奶源属性的自动获取,并且依据这个建立起保质周期数据库,提前发出临近失效批次的预警,移动端交互功能目前还处于比较初级的状态,之后可以升级成支持动态趋势可视化的交互界面,同时把云端服务接口打通,完成数据的持久化以及高级行为建模,这样能够提高人机协作的灵活性以及决策支持水平。

参考文献

01 Mingqiu Zhang,Liyu Jin,Jisheng Zhang,Bo Zhang.Analysis and Research on Coupling Characteristics of Temperature and Humidity Control System Based on Industrial ProcessJ.Smart Systems and Green Energy,2022,4(1):

02 Hui Li,Hao Yang,Suli Zhang,Jiahao Miao.Research on indoor temperature and humidity coupling system based on fuzzy adaptive PD controlJ.Journal of Physics: Conference Series,2025,2963(1):

03 杜沐青.基于预估模糊PID的恒温箱温度控制系统优化设计D.导师:吴庆定.中南林业科技大学,2022.

04 王淏.基于AT80C51单片机的智能化温室灌溉和温度调控系统构建J.中国农机装备,2025,(03):47-49.

05 开春晴.电子技术在农业机械电气控制中的有效运用J.当代农机,2025,(02):54-55.

06 刘晚春,李永会.无线网络化控制系统:简要介绍及最新进展J.工矿自动化,2025,51(01):1-10.

07 谢志庆.LED照明灯具结构设计创新探析J.中国机械,2024,(29):8-11.

08 石慧.人工智能时代的辩证思考J.现代商贸工业,2025,(08):69-70+158.

09 李志文,李璐. 基于STM32的智能枪械存储柜J.电子设计工程,2024,32(06):57-61.DOI:10.14022/j.issn1674-6236.2024.06.012.

10 赵壮志.高精度恒温恒湿控制箱研制D.合肥工业大学,2023.DOI:10.27101/d.cnki.ghfgu.2023.002890.

11 蒋婷菊,时梦茹,陈军,等. 基于STM32的恒温水槽控制系统设计与实现J.现代农业装备,2023,44(01):29-35.

12 郭晓姿.多变量解耦模糊控制在果蔬保鲜智能监控系统中的应用D.河北科技师范学院,2022.DOI:10.27741/d.cnki.ghbkj.2022.000240.

13 杨振南. 单片机在茶叶生产中的应用J.福建茶叶,2020,42(09):17-18.

14 许翻凡.基于半导体制冷器的恒温控制箱设计与实现D.武汉工程大学,2020.DOI:10.27727/d.cnki.gwhxc.2020.000227.

15 鞠昊翀,高红梅,王辉. 单片机的牦牛肉冰点保鲜系统设计与实现J.科技创新导报,2020,17(01):112-113+115.DOI:10.16660/j.cnki.1674-098X.2020.01.112.

时光飞逝,4年的学习生涯即将画上句号,在开始撰写这款基于单片机的智能牛奶保鲜箱方案之际,心中充满了深深的感激之情。

在课题刚开始探索的时候,王安老师凭借扎实的学术视野以及敏锐的问题洞察力,一直参与到研究路径的调整以及方向的确定之中,面对各种主控芯片的技术特征比较,他引领我深入分析它们在实时响应、功耗表现以及外围接口兼容性这些方面的不同之处,最后把STM32F103C8T6确定为核心处理单元。硬件联调阶段,当温度采样出现波动、称重单元出现数据失稳的情况时,他没有直接给出结论,而是和我一起回溯电路拓扑结构,找出信号干扰源,并且提供可行的优化策略。在撰写文章的过程当中,每一份文本都经由其多次反复推敲,不管是章节之间衔接的流畅程度,还是表述的准确精确性,每一个细节之处都进行了细致入微的打磨,他对于科研秉持着缜密严谨的作风,拥有深厚扎实的技术积累,并且呈现出平和从容不迫的沟通态度,这为我提供了方法论方面的参考依据,还在无形之中塑造了我对专业实践的理解体系,成为我在未来职业发展进程中无法替代的精神指引标志。

实验室里的伙伴们一直都在为彼此的成长之路给予支持,在项目推进的过程当中,我们经常会针对逻辑架构展开较为深入的交流,一同去梳理运行过程里出现的异常节点,有一次Wi - Fi模块出现了连接中断的情况,张明帮助我定位到了串口参数设置存在偏差,特别发现了波特率值有误配的问题。那些一起面对故障、反复进行参数验证的夜晚,解决了技术方面的难题,还沉淀下了十分珍贵的协作记忆。

在此我由衷地感谢我的双亲,在多年的时光里,他们一直都在背后默默支持着我的求学道路,凭借无声的陪伴为我营造了一个安心的港湾,依靠坚定的信念赋予了我不断前行的力量,每当我的心情陷入低落或者对未来的方向感到迷茫的时候,他们的一句问候总会让我重新燃起继续努力的勇气。而这份研究最终得以实现,其根源就存在于你们日复一日的守护以及付出的心血之中,我也要向每一位曾经给予过我关怀和帮助的人表达我最为诚挚的敬意。

附件1 系统总电路

附件2 源程序

智能牛奶保鲜箱的核心控制逻辑存在于main.c文件里,其程序执行流程是由PLC来驱动的,而梯形图则是作为逻辑表达的基础依据。

在代码文件中包含 STM32F10x 的头文件,以此来访问该系列单片机的相关功能和资源。

在程序中包含了名为 oled_IIC 的头文件,该头文件与 OLED 模块的 IIC 驱动相关。

在代码文件中包含 ds18b20 的头文件。

#include "hx711.h"

在程序中引入了 esp8266 头文件,该头文件包含了与 ESP8266 模块相关的函数和定义,为

/* 全局变量 */

The variable current_temperature is of the float type, and its initial value is set to 0.0.

The current weight is set to 0.0.

The temperature threshold is set to 10, and the unit is degrees Celsius.

uint8_t cooling_enable is defined as 0, which is a flag indicating whether the cooling function is enabled.

alarm_flag is defined as a variable of type uint8_t, which is used to store the value of the alarm flag. Initially, it is set to 0, indicating that there is currently no alarm state. This variable can be used in subsequent program

There is a variable named delivery_flag of type uint8_t, which is initialized to 0, and its function is to serve as a flag for delivery notifications.

/* 按键引脚定义 */

The macro definition KEY_MODE_PIN is set to GPIO_Pin_15, which is PC15.

The macro definition KEY_UP_PIN is used to define the pin number of the key that is pressed upward, and it is specifically defined as GPIO_Pin_14.

The macro definition KEY_DOWN_PIN is used to define the pin of the key that is pressed down, which is set as the pin number 13 on port C.

The macro definition KEY_DELIVERY_PIN is used to define the pin number of the key delivery, which corresponds to the fourth pin of port B, that is, PB4.

#define KEY_VIB_PIN GPIO_Pin_6//PB6这个是震动传感器的引脚定义。

/* 制冷控制引脚 */

The definition of the macro COOL_CTRL_PIN is GPIO_Pin_0, which corresponds to the PA0 pin.

/* LED指示灯引脚 */

将LED_PIN定义为GPIO_Pin_0,也就是PB0这个引脚。

/* 蜂鸣器引脚 */

The definition of the #define BEEP_PIN is GPIO_Pin_5, which corresponds to the PB5 pin.

/* 函数声明 */

The function of the GPIO configuration is to perform a series of operations to set up the GPIO pins. This includes initializing the corresponding GPIO port, setting the working mode of the pin (such as input or output), and configuring the pull-up or pull

TIM2的配置函数被定义为void TIM2_Configuration(void),该函数的主要作用是针对TIM2定时器进行一系列的初始化和配置操作,从而使其能够按照预定的要求正常工作。

The function of configuring the USART3 is to perform the relevant configuration work for the USART3 on the STM32 chip, such as setting the baud rate, data format, and enabling the corresponding interrupt. This configuration is crucial for ensuring that the USART3 can

编写一个函数用于配置外部中断,该函数专门用来对外部中断进行相关设置和配置。

int main(void)

{

/* 系统初始化 */

SystemInit();

The function of GPIO configuration is called to perform the configuration operation of the GPIO.

The function of configuring TIM2 is called.

对USART3进行配置操作。

对EXTI进行配置的操作。

/* 外设模块初始化 */

OLED_Init();

DS18B20_Init();

HX711_Init();

ESP8266_Init();

/* 显示初始界面 */

OLED_Clear();

The function OLED_ShowString is called with the parameters of 0, 0, and "Milk Fresh Box", which will display the text "Milk Fresh Box" at the position specified by the coordinates 0, 0 on the OLED display.

The OLED display function is called to output the string "System Ready" at position (0, 2).

/* 主循环 */

while(1)

{

每隔500毫秒便会完成一次数据的获取工作,并且将这些数据同步更新到界面呈现部分。

Timer_cnt is a static variable of type uint32_t, which is initially set to 0.

TIM_GetCounter(TIM2)与timer_cnt的差值减去500后进行判断。

{

Timer_cnt is equal to the counter value obtained from TIM2.

/* 读取温度 */

The current temperature is obtained by calling the function DS18B20_GetTemp to get the temperature value of the DS18B20 temperature sensor.

/* 读取重量 */

The current weight is obtained by calling the function HX711_GetWeight to get the current weight.

/* 自动温度控制 */

如果当前的温度高于设定的阈值的话就会触发相应的处理程序。

{

对 GPIOA 的 COOL_CTRL_PIN 进行设置操作,使其处于开启制冷的状态。

cooling_enable = 1;

}

else

{

对GPIOA的COOL_CTRL_PIN进行复位操作,以此来关闭制冷功能。

cooling_enable = 0;

}

/* 更新OLED显示 */

The function OLED_ShowString is called with the parameters 0, 4, and "Temp: . C", which displays a string of text on the OLED display. The first parameter 0 indicates the starting position of the text on the screen, where 0 usually means the first

The function OLED_ShowNum is called to display the current temperature value on the OLED screen, where the parameter 48 represents the row number of the OLED screen, 4 represents the column number, (int)current_temperature is the temperature value to be displayed converted into an integer type, and 2 is the number of digits of the temperature value.

The function OLED_ShowNum was called with the parameters 72, 4, the value of ((current_temperature - (int)current_temperature)*10), and 1.

The OLED display function is called to output the string of weight in grams at the position (0, 6).

The OLED display function is called to display the current weight information on the OLED display module, where 48 is the row number of the display area, 6 is the column number of the display area, (int)current_weight is the data to be displayed, and 4 is the number of digits of the data.

/* WiFi数据发送 */

The ESP8266_SendData function is called to send the current temperature, current weight and alarm flag data.

}

/* 检测配送按键 */

如果GPIO读取输入数据位的KEY_DELIVERY_PIN等于0,那么就执行后续的操作。

{

Delay_ms(20); // 消抖

如果读取GPIOB引脚上KEY_DELIVERY_PIN对应的输入数据位的值为0,则执行后续代码。

{

delivery_flag = 1;

调用ESP8266_SendDelivery函数来发送快递信息。

当GPIO读取输入数据位GPIOB的KEY_DELIVERY_PIN等于0时,会等待其释放。

}

}

当出现震动情况的时候,蜂鸣器便会立刻发出警示性的声音。

if(alarm_flag)

{

对 GPIOB 进行操作,将 BEEP_PIN 这个引脚设置为高电平状态。

Delay_ms(3000);

对GPIOB的BEEP_PIN进行复位操作,使其处于低电平状态。

alarm_flag = 0;

}

}

}

振动状态监测依靠外部中断来驱动,当中断发生之时会立刻激活相应的响应机制。

对于EXTI9_5_IRQHandler这个函数而言,它在系统中承担着关键的责任,当外部中断9至5的某个特定中断被触发时,该函数便会自动运行,其主要作用在于对中断事件

{

如果外部中断线6的中断状态不是复位,那么就会执行后续代码。

{

将 alarm_flag 的值设置为 1,以此来触发报警机制。

对EXTI_Line6的中断待处理标志位进行清除操作,即调用EXTI_ClearITPendingBit函数并传入EXTI_Line6作为参数。

}

}

串口3的中断服务函数可用来捕获无线网络所传输的数据流。

USART3的中断服务函数会进行相应的处理操作。

{

如果USART3的接收中断标志位不为复位状态,则会执行相应的操作。

{

将接收到的数据存储在名为rec_data的变量中,该变量的数据类型为uint8_t,并且是通过调用USART3的接收数据函数来获取数据。

对传入的控制命令展开解析工作,像是对温度设定界限加以调整等操作。

如果rec_data等于0x01那么上调温度阈值。

{

如果温度阈值小于30,那么就让温度阈值加一。

}

如果rec_data等于0x02那么下调温度阈值。

{

如果temp_threshold大于零,那么就让temp_threshold减去一。

}

对USART3的USART_IT_RXNE中断标志位进行清除操作。

}

}

相关推荐
lancyu1 小时前
# Agent Loop:AI Agent 的唯一直心骨
开发语言·javascript·人工智能
zx_741484811 小时前
【计算机视觉入门】基于 OpenCV 的银行卡号识别综合案例
人工智能·opencv·计算机视觉
龙虾PRO1 小时前
2026 Headless CMS实操指南:区别传统与解耦CMS,落地全渠道内容复用
人工智能
fīɡЙtīиɡ ℡1 小时前
RAG优化
人工智能
语音之家1 小时前
多方言ASR自蒸馏:学会方言,不忘普通话
人工智能·消融实验·方言 sft
禁默1 小时前
2026年Mac被控远控深度测评横评:六大主流远程软件哪款更能打
人工智能·远程
AR-26710-1 小时前
机器学习复习Day1——线性回归编程作业
人工智能·机器学习
呆呆敲代码的小Y1 小时前
10 分钟搞懂 cua:开源 AI 操作电脑基础设施,附 Python 沙箱与 Agent 上手代码
人工智能·python·开源·ai agent·awesome·llm应用·cua
工具分享1 小时前
带店托管必用爆单AI选品,一人公司轻松掌握
人工智能·python