摘 要
本文围绕基于单片机的金沙河粮仓环境监测系统展开设计与实现研究。系统以单片机为核心,集成 DHT11、MQ - 135 等传感器,可实时精准监测粮仓温湿度、气体成分等关键环境参数。借助 LoRa、ESP8266 实现数据的可靠传输与远程通信 ,OLED 屏实时显示数据,异常时通过声光报警与继电器控制及时响应。经测试,该系统能有效提升金沙河粮仓环境监测的智能化水平,保障粮食储存安全,为粮仓智能化管理提供了可行方案。
关键词:单片机;金沙河粮仓;环境监测;传感器;数据传输
第2章 总体方案设计
2.1 系统总体方案设计
本系统以实现金沙河粮仓环境参数实时、精准监测为核心目标,采用模块化设计思路,构建起由数据采集、数据处理、数据传输、人机交互及报警控制五大功能模块组成的完整体系[3]。
数据采集模块部署多种传感器,如 DHT11 温湿度传感器、MQ-135 气体传感器等,负责实时采集粮仓内温度、湿度、有害气体浓度等关键环境参数;数据处理模块以单片机为核心,对传感器采集的模拟信号进行 A/D 转换、滤波降噪、数据校准等处理,确保数据准确性;数据传输模块采用 LoRa 与 ESP8266 相结合的无线通信方案,LoRa 用于粮仓内部各监测节点与汇聚节点间的长距离、低功耗数据传输,ESP8266 则将汇聚后的数据通过 Wi-Fi 上传至云端服务器或远程监控终端;人机交互模块配备 OLED 显示屏,实时显示环境参数,方便现场管理人员快速获取信息;报警控制模块在单片机判断环境参数超过预设阈值时,触发声光报警装置,并联动继电器控制通风、除湿等设备,及时调节粮仓环境[4]。
系统整体架构通过各模块协同工作,实现粮仓环境数据从采集、传输到处理、反馈的闭环管理,有效提升监测效率与智能化水平[5]。
2.2 主要器件选型
2.2.1 单片机选型
考虑到系统对数据处理能力、功耗及成本的综合需求,选用 STC89C52 单片机作为主控芯片。该单片机基于 8051 内核,具备 8KB Flash 程序存储器、512B RAM,内置 3 个 16 位定时器 / 计数器与 8 路 10 位 A/D 转换器,能够满足传感器数据采集与处理需求。同时,其工作电压范围为 5V±10%,工作温度范围 - 40℃~85℃,适用于粮仓复杂环境,且开发成本低、资料丰富,便于系统开发与调试[6]。
2.2.2 传感器选型
温湿度传感器选用 DHT11,该传感器采用单总线数据传输,具有超快响应、测量准确、抗干扰能力强等特点,温度测量范围为 0℃ - 50℃,精度 ±2℃,湿度测量范围 20% - 90% RH,精度 ±5% RH,满足粮仓温湿度监测要求;气体传感器选用 MQ-135,对氨气、硫化物、苯系蒸汽等有害气体具有高灵敏度,可有效监测粮仓内因粮食霉变、虫害产生的有害气体,其输出信号为模拟电压,便于与单片机的 A/D 转换接口连接[7]。
2.2.3 通信模块选型
无线通信部分,LoRa 模块选用 SX1278,其工作在 433MHz 频段,通信距离可达数公里,且具备低功耗、高灵敏度特性,适合粮仓大面积、多节点的内部数据传输;ESP8266 作为 Wi-Fi 通信模块,支持 STA、AP、STA+AP 三种工作模式,可实现与路由器或云端服务器的稳定连接,传输速率最高可达 150Mbps,满足数据快速上传需求[8]。
2.2.4 显示与报警器件选型
显示屏采用 0.96 英寸 OLED 模块,其具有自发光、视角广、对比度高、响应速度快等优点,可通过 I²C 接口与单片机连接,实现低功耗、高清晰的数据显示;报警装置选用蜂鸣器与 LED 灯组合,蜂鸣器在环境异常时发出高分贝警报,LED 灯同步闪烁,形成声光双重报警,确保异常情况及时被发现[9]。
第3章 硬件设计
3.1 单片机最小系统设计
单片机作为整个粮仓环境监测系统的核心控制部件,其最小系统的稳定运行至关重要。本系统选用 STC89C52 单片机,其最小系统主要由电源电路、时钟电路、复位电路和下载电路组成[10]。
图3-1 单片机最小系统原理图
3.1.1 电源电路
电源电路为单片机及其他硬件模块提供稳定的工作电压。采用 5V 直流电源供电,通过滤波电容去除电源中的杂波干扰,确保电源的稳定性。在电源输入端并联一个大容量的电解电容(如 100μF)和一个小容量的陶瓷电容(如 0.1μF),以滤除不同频率的干扰信号[11]。
3.1.2 时钟电路
时钟电路为单片机提供精确的时钟信号,保证单片机各部件的协调工作。采用 11.0592MHz 的晶振与两个 30pF 的电容组成并联谐振电路,连接到单片机的 XTAL1 和 XTAL2 引脚。晶振产生的时钟信号经过单片机内部的时钟电路处理后,为单片机的指令执行和数据处理提供时间基准[12]。
3.1.3 复位电路
复位电路用于在系统上电或出现异常时,将单片机恢复到初始状态。采用上电复位和手动复位相结合的方式,通过一个电容和一个电阻组成的积分电路实现上电复位,同时设置一个复位按键,在需要时手动触发复位操作。当按下复位按键时,单片机的 RST 引脚被拉高,持续一段时间(一般为 2 个机器周期以上),单片机内部的寄存器和程序计数器被清零,系统重新开始运行。
3.1.4 下载电路
下载电路用于将编写好的程序代码下载到单片机中。采用串口下载方式,通过 MAX232 电平转换芯片将计算机的 RS - 232 电平转换为单片机所能接受的 TTL 电平,实现计算机与单片机之间的数据通信。将 MAX232 芯片的 TXD 和 RXD 引脚分别与单片机的 RXD 和 TXD 引脚相连,通过串口通信协议将程序代码传输到单片机的 Flash 存储器中。
3.2 传感器模块设计
3.2.1 温湿度传感器
选用 DHT11 温湿度传感器来实时监测粮仓内的温度和湿度。DHT11 是一款数字式温湿度传感器,采用单总线通信协议,具有体积小、成本低、响应速度快等优点。其数据引脚与单片机的一个 I/O 引脚相连,单片机通过向该引脚发送起始信号来启动数据采集过程。DHT11 在接收到起始信号后,会将采集到的温湿度数据以数字信号的形式发送给单片机。单片机通过解析接收到的数字信号,提取出温度和湿度值,并进行相应的处理和显示[13]。
图3-2 温湿度传感器原理图
3.2.2 气体传感器
为了监测粮仓内的有害气体浓度,选用 MQ - 135 气体传感器。MQ - 135 对氨气、硫化物、苯系蒸汽等有害气体具有较高的灵敏度。该传感器输出的是模拟电压信号,其大小与被测气体的浓度成正比。将传感器的输出引脚连接到单片机的 A/D 转换引脚,单片机通过内部的 A/D 转换器将模拟电压信号转换为数字量,然后根据传感器的特性曲线将数字量转换为对应的气体浓度值[14]。
图3-3 气体传感器原理图
3.3 数据传输模块设计
3.3.1 LoRa 模块
LoRa 模块用于实现粮仓内部各监测节点与汇聚节点之间的长距离、低功耗数据传输。选用 SX1278 LoRa 模块,该模块工作在 433MHz 频段,具有高灵敏度、低功耗、抗干扰能力强等优点。LoRa 模块通过 SPI 接口与单片机进行通信,单片机将采集到的传感器数据封装成特定的数据包,通过 SPI 接口发送给 LoRa 模块。LoRa 模块将数据包进行调制后,以无线方式发送出去。在接收端,LoRa 模块接收到无线信号后,进行解调和解码,将数据包通过 SPI 接口传输给单片机。
图3-4 Lora通信原理图
第4章 软件设计
4.1 软件总体设计
4.1.1 设计目标
本软件设计旨在构建一套适配金沙河粮仓环境监测硬件系统的智能化程序体系。核心目标是实现粮仓环境参数的实时、精准采集与处理,保障数据传输的稳定性和可靠性,同时提供便捷高效的人机交互体验与智能控制功能。通过对温湿度、气体浓度、等参数的监测与分析,及时发现粮仓环境异常情况,联动硬件设备进行环境调节,最大程度降低粮食因环境因素导致的霉变、虫害等风险,为粮食安全储存提供有力的技术支撑,助力粮仓管理向智能化、自动化方向升级。
4.1.2 分层架构设计
数据采集层负责与各类传感器进行通信,按照设定的采样周期获取温湿度、气体浓度等环境参数。针对不同传感器的通信协议,编写对应的驱动程序,确保数据采集的准确性和稳定性。
数据处理层对采集到的原始数据进行预处理,包括滤波、校准、单位转换等操作,以提高数据质量。同时,对处理后的数据进行分析,判断环境参数是否超出预设阈值,为后续的决策提供依据。
数据传输层通过 LoRa 和 ESP8266 等无线通信模块,将处理后的数据发送到远程监控中心或云端服务器。实现数据的可靠传输,具备数据加密、重传机制等功能,以应对复杂的通信环境。
人机交互层提供直观的用户界面,通过 OLED 显示屏实时显示环境参数和系统状态。支持按键输入,允许用户进行参数设置、历史数据查询等操作。
控制决策层根据环境参数和预设的控制策略,自动控制通风、除湿等设备的运行。当环境参数异常时,触发声光报警装置,并及时通知管理人员。
图4-1 总体模块结构图
4.1.3 软件流程设计
系统上电后,软件首先进入初始化阶段。单片机初始化包括设置 I/O 口的输入输出模式、配置定时器与中断系统、初始化 A/D 转换模块等操作,为后续程序运行搭建基础环境。传感器初始化则根据不同传感器的特性,进行通信协议配置、参数设置等操作,确保传感器处于正常工作状态。通信模块初始化包括 LoRa 模块和 ESP8266 模块的参数配置,使其能够建立稳定的无线连接。显示屏初始化设置显示模式、清屏等操作,准备好数据显示界面。
完成初始化后,软件进入主循环。在主循环中,按照设定的时间间隔依次执行数据采集、数据处理、数据传输、人机交互和控制决策等任务。数据采集任务启动各传感器驱动程序,获取环境参数;数据处理任务对采集数据进行滤波、校准和阈值判断;数据传输任务将处理后的数据发送至远程监控中心;人机交互任务检测按键输入并更新显示屏内容;控制决策任务根据数据处理结果控制设备运行和报警。同时,系统通过中断服务程序处理紧急事件,如按键按下触发的中断、通信模块接收到数据触发的中断等,确保系统能够及时响应外部事件,提高系统的实时性和可靠性。
图4-2 总体流程图
4.2 数据采集程序设计
4.2.1 温湿度传感器数据采集
DHT11 温湿度传感器的数据采集依赖于严格的单总线通信时序。在程序实现中,首先通过单片机的 I/O 口向传感器发送一个低电平起始信号,持续时间一般为 18ms 左右,用于唤醒传感器。随后将 I/O 口设置为输入模式,等待传感器响应。传感器在接收到起始信号后,会拉低总线电平 80μs 作为应答信号,单片机检测到该应答信号后,开始准备接收数据。
数据接收过程中,传感器依次发送 40 位数据,每一位数据的传输由 50μs 的低电平起始位和高电平数据位组成。高电平持续时间不同代表不同的数据值,高电平持续 26 - 28μs 表示数据 “0”,高电平持续 116 - 118μs 表示数据 “1”。单片机通过精确计时 I/O 口的电平变化,逐位读取数据。读取完成后,将湿度整数部分、湿度小数部分、温度整数部分、温度小数部分相加,与校验和进行比较,若相等则说明数据有效,将温湿度数据存储到指定的内存地址;若不相等,则认为数据错误,重新发起一次数据采集请求。通过这种严谨的数据采集与校验机制,确保获取到准确的粮仓温湿度数据。
图4-3温湿度数据采集流程图
第5章 实现与测试
5.1 硬件制作
5.1.1 单片机最小系统制作
准备 STC89C52 单片机等元器件。将单片机插入插座,确保引脚接触良好。电源电路用 100μF 电解电容和 0.1μF 陶瓷电容滤波,接 5V 电源,去除杂波。时钟电路用 11.0592MHz 晶振及两个 30pF 电容构成并联谐振,接单片机相应引脚提供时钟。复位电路采用上电和手动复位结合,10μF 电解电容与 10kΩ 电阻串联,接 RST 引脚等实现复位。通过 MAX232 芯片连接下载电路,完成制作。
5.1.2 传感器模块制作
温湿度传感器选择 DHT11,VCC 接 5V,GND 接地,DATA 经 4.7kΩ 上拉电阻连单片机 I/O 引脚。
气体传感器使用MQ – 135,用MQ - 135 的 VCC 接 5V,GND 接地,AOUT 连单片机 A/D 引脚,DOUT 按需连 I/O 引脚。电源端串 100Ω 电阻,并联 10μF 和 0.1μF 电容保护与稳压。
5.1.3 数据传输模块制作
LoRa 模块选择 SX1278,VCC 接 3.3V,GND 接地,相关引脚连单片机 SPI 引脚,DIO0 连 I/O 引脚接收中断信号,天线接口接天线增强信号。
ESP8266 模块,VCC 接 3.3V,GND 接地,TXD、RXD 与单片机对应引脚相连串口通信,CH_PD 接 3.3V。可焊接在扩展板预留接口。
5.1.4 人机交互模块制作
OLED 显示屏使用0.96 英寸 OLED 的 VCC 接 3.3V,GND 接地,SCL、SDA 连单片机 I²C 引脚,固定在塑料壳内排线连接。
按键输入模块包括四个独立按键,一端经 10kΩ 电阻接 3.3V,另一端连 I/O 引脚,并联 0.1μF 电容消抖,安装在按键板排线连接。
5.1.5 报警控制模块制作
声光报警电路是蜂鸣器经 NPN 三极管(如 S8050)驱动连单片机 I/O 引脚,三极管基极经 220Ω 电阻连接,LED 灯连接方式类似。
继电器控制电路是5V 继电器线圈一端经 220Ω 电阻连单片机 I/O 引脚,另一端接 5V 电源,常开触点接设备电源,实现设备启停控制。
图5-1 单片机实物图
文章底部可以获取博主的联系方式,获取源码、查看详细的视频演示,或者了解其他版本的信息。
所有项目都经过了严格的测试和完善。对于本系统,我们提供全方位的支持,包括修改时间和标题,以及完整的安装、部署、运行和调试服务,确保系统能在你的电脑上顺利运行。