基于STM32单片机的农业大棚环境(仿真+程序+仿真截图+软件 )
本文设计并实现了一套基于STM32单片机的农业大棚环境监控系统。该系统通过集成多种传感器(如温湿度传感器DHT11、光照传感器、土壤湿度传感器等),实时监测大棚内的光照强度、土壤湿度、温度和湿度等环境参数,并通过LCD1602液晶显示屏实时显示。用户可以通过按键设置报警阈值和修改温湿度阈值,系统根据设定的阈值自动控制补光电路和浇水电路,以实现大棚环境的智能化管理。该系统具有操作简单、功能丰富、稳定
基于STM32单片机的农业大棚环境监控系统研究

摘要:本文设计并实现了一套基于STM32单片机的农业大棚环境监控系统。该系统通过集成多种传感器(如温湿度传感器DHT11、光照传感器、土壤湿度传感器等),实时监测大棚内的光照强度、土壤湿度、温度和湿度等环境参数,并通过LCD1602液晶显示屏实时显示。用户可以通过按键设置报警阈值和修改温湿度阈值,系统根据设定的阈值自动控制补光电路和浇水电路,以实现大棚环境的智能化管理。该系统具有操作简单、功能丰富、稳定性高等特点,能够有效提高农作物的生产效率和质量,为现代农业的发展提供有力支持。
关键词:STM32单片机;农业大棚;环境监控;传感器;LCD1602
一、绪论
1.1 研究背景及意义
随着农业技术的快速发展,利用温室进行环境管理成为一种新兴的农业生产方式。温室环境智能监控系统可以实时采集温室内温度、湿度、光照等环境参数,对温室内的环境进行精准控制,有效管理温室内环境,保证农作物的良好生长。研究和构建温室环境智能监控系统,在提高农作物生产效率的同时,有助于增强农民的生产能力,提高农业可持续发展水平。
在传统的农业大棚管理中,农民主要依靠经验来判断大棚内的环境状况,并手动进行调节。这种方式不仅效率低下,而且难以保证调节的准确性和及时性,容易导致农作物生长不良,甚至减产。因此,开发一套基于STM32单片机的农业大棚环境监控系统具有重要的现实意义。该系统可以实时监测大棚内的环境参数,并根据设定的阈值自动控制相关设备,实现大棚环境的智能化管理,提高农作物的生产效率和质量,减少农民的劳动强度。
1.2 国内外研究现状
近年来,随着科技的发展,我国在智能农业方面取得了较大进展,技术已经渐渐成熟,智能农业技术也越来越应用于实践中,特别是温室环境智能监控系统在国内的应用日趋普及。许多企业和科研机构纷纷投入到智能农业领域的研究和开发中,推出了一系列具有自主知识产权的温室环境监控系统。这些系统在功能上不断完善,性能上不断提高,为现代农业的发展提供了有力的支持。
在国际上,智能农业技术也得到了广泛的应用和发展。一些发达国家如美国、日本、荷兰等,在温室环境监控系统的研究和应用方面处于领先地位。他们采用了先进的传感器技术、通信技术和控制技术,实现了对温室环境的精准监测和智能控制。例如,美国的温室环境监控系统可以通过互联网实现远程监控和控制,农民可以随时随地了解温室内的环境状况,并进行相应的调节。
然而,目前市场上的温室环境监控系统还存在一些问题。一方面,部分系统功能较为单一,只能监测少数几种环境参数,无法满足现代农业对环境监控的多样化需求。另一方面,一些系统的操作较为复杂,需要农民具备一定的专业知识和技能才能进行使用和维护,限制了其在大规模农业生产中的应用。因此,开发一套功能丰富、操作简单的基于STM32单片机的农业大棚环境监控系统具有重要的市场前景。
二、系统总体设计
2.1 系统架构
本系统主要由STM32F103单片机最小系统、PCF8591传感器模块、DHT11温湿度传感器、LCD1602液晶显示电路、光照检测电路、按键设置电路、指示灯电路、补光电路和浇水电路等组成。其系统架构如图1所示。
图1 系统架构图
STM32F103单片机最小系统作为系统的核心控制单元,负责接收各个传感器采集的数据,处理数据,并根据设定的阈值控制补光电路和浇水电路的工作。PCF8591传感器模块用于采集土壤湿度等其他模拟信号,DHT11温湿度传感器用于采集大棚内的温度和湿度数据,光照检测电路用于检测大棚内的光照强度。LCD1602液晶显示电路用于实时显示各个传感器采集的参数,按键设置电路用于设置报警阈值和修改温湿度阈值,指示灯电路用于指示系统的运行状态,补光电路和浇水电路用于根据系统的控制信号对大棚内的植物进行补光和浇水。
2.2 系统功能
- 环境参数监测:通过DHT11温湿度传感器实时监测大棚内的温度和湿度,通过光照检测电路实时监测大棚内的光照强度,通过PCF8591传感器模块采集土壤湿度等其他模拟信号。
- 阈值设置与报警:通过按键设置电路设置报警阈值和修改温湿度阈值。当监测到的环境参数超过设定的阈值时,系统通过指示灯电路发出报警信号。
- 数据显示:通过LCD1602液晶显示电路实时显示各个传感器采集的参数,包括土壤湿度、温湿度、光照强度等。
- 自动控制:根据设定的阈值自动控制补光电路和浇水电路的工作。当光照强度低于设定的阈值时,系统自动开启补光电路;当土壤湿度低于设定的阈值时,系统自动开启浇水电路。
三、硬件设计
3.1 STM32F103单片机最小系统
STM32F103单片机最小系统主要由单片机、晶振电路、复位电路三部分构成。STM32F103C8T6工作电压为2 - 3.6V(一般采用3.3V),内置64 - 128KBytes Flash,20KBytes SRAM,带有37个通用GPIO口(含特殊功能IO)。在最小系统板上主要连接晶振电路、复位电路、工作电源,以及配置BOOT启动方式。BOOT启动方式主要有三种,主闪存存储器启动、系统存储器启动、内置SRAM启动,对应的BOOT引脚状态。最常用的模式为主闪存存储器启动,即内部Flash启动,BOOT1 = 0,BOOT0 = x(x表示0或1均可)。内部Flash启动的地址为0x08000000。
STM32单片机内部自带一个8MHz的RC时钟,在符合设计需求的情况下,可通过程序在初始化时钟函数内,选择采用内部时钟。外部主时钟晶振主要作为供单片机内核的时钟源,官方推荐晶振电路主要参数如下:外部晶振为4 - 16MHz,常用8MHz。同样,RTC时钟在符合设计需求的情况下,可选用内部自带的40kHz RTC时钟,外部晶振32.768KHz主要作为单片机内部RTC时钟的时钟源。
复位电路由RC电路及按键构成,10k电阻及1uF电容组成的RC电路;STM32单片机复位引脚为低电平有效,复位电路的作用是使单片机复位引脚在上电时,确保复位引脚至少有1ms以上的低电平状态。复位按键的作用是当按键按下,复位引脚的被拉至低电平,单片机触发复位。
为了增加最小系统板的使用方便性,需增加稳压电路,将输入的+5V电源降压到+3.3V,给单片机最小系统电路供电。最小系统板上有两个LED灯,D1为+3.3V电源指示灯,如果板卡上电正常,D1灯常亮;如果D1不亮,则可能板卡电源异常。D2灯为程序状态指示灯,可供软件调试或者程序运行指示用。SWD接口为单片机的程序烧录、软件调试接口,使用ST - Link、或者JLink可通过SWD接口进行程序烧录或调试。USB电源接口采用了MicroUSB接口,最小系统板可通过USB接口连接至电脑上或者+5V电源适配器上,实现板卡的供电。
3.2 PCF8591传感器模块
PCF8591是一种集成电路,被设计用于与单片机的I2C总线接口,以实现4个模拟输入和一个模拟输出的功能。它支持多种电压范围,工作电压范围为2.5V到6V,能以单电源运行,并且可提供5V的参考电压,工作温度范围为-40°C到+85°C,适用于各种工业和消费级应用。
PCF8591具备I2C总线接口,这是一种由Philips公司开发的两线串行总线协议,用于微控制器与各种外围设备之间的连接。I2C总线通过两条线路传输数据,一条是串行数据线(SDA),另一条是串行时钟线(SCL),支持多主机和多从机配置,允许多个微控制器和外围设备进行通信。
PCF8591拥有4个模拟输入通道,这些通道可以用来读取各种传感器(如土壤湿度传感器等)的模拟信号,并将其转换为数字信号供微控制器处理。同时,它还带有一个模拟输出通道,可以通过数字信号控制输出模拟电压,用于驱动各种模拟设备。其A/D转换器部分能够将模拟信号转换为数字信号,D/A转换器部分则将数字信号转换回模拟信号。
在本系统中,PCF8591传感器模块用于采集土壤湿度等其他模拟信号,通过I2C总线与STM32F103单片机进行通信,将采集到的数据传输给单片机进行处理。
3.3 DHT11温湿度传感器
DHT11是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度测量技术,确保产品具有高可靠性和卓越的长期稳定性。DHT11能够检测空气中的温度和湿度,具有体积小、成本低、易于使用等特点,广泛应用于各种需要监测环境温湿度的场合。
DHT11传感器内包含一个电阻式湿度测量元件和一个热敏电阻(NTC),用于测量温度。其主要工作原理是利用这两个感测元件来测量空气中的温度和湿度。当DHT11工作时,通过单片机发送起始信号,DHT11会回应并开始测量,并通过数字信号输出其测量结果。
在本系统中,DHT11温湿度传感器用于实时监测大棚内的温度和湿度,通过单总线协议与STM32F103单片机进行数据通信,将采集到的温湿度数据传输给单片机进行处理。
3.4 LCD1602液晶显示电路
LCD1602是一种常用的字符型液晶显示器,广泛应用于各种嵌入式系统中用于数据显示。该模块由LCD控制器、驱动器、RAM、ROM和液晶显示器通过PCB板集成在一起形成完整的显示单元。对于标准配置下的LCD1602来说,通常具有14个引脚(不带背光功能),而带有背光版本则会有额外两个引脚共计16个。其中第3针可以通过外接可调电阻来调节对比度;当RS = 0时为命令状态,可以设置显示模式等功能;RW用来指定当前操作是读还是写;E作为脉冲触发信号,在下降沿时刻采样其他各条线上面的数据完成一次通信过程。
在本系统中,LCD1602液晶显示电路用于实时显示各个传感器采集的参数,包括土壤湿度、温湿度、光照强度等。通过并行接口与STM32F103单片机进行连接,单片机将采集到的环境参数数据发送给LCD1602进行显示。
3.5 光照检测电路
光照检测电路用于检测大棚内的光照强度。本系统采用光敏电阻作为光照检测元件,光敏电阻的阻值随光照强度的变化而变化。将光敏电阻与一个固定电阻组成分压电路,通过STM32F103单片机的ADC(模数转换器)引脚采集分压电路的电压值,根据电压值的变化来判断光照强度的变化。
3.6 按键设置电路
按键设置电路用于设置报警阈值和修改温湿度阈值。本系统采用独立按键与STM32F103单片机的GPIO引脚相连,通过按键的按下和释放来触发相应的中断或轮询操作,实现阈值的设置和修改。
3.7 指示灯电路
指示灯电路用于指示系统的运行状态。本系统采用LED灯作为指示灯,通过STM32F103单片机的GPIO引脚控制LED灯的亮灭,来指示系统是否正常工作、是否发生报警等情况。
3.8 补光电路
补光电路用于控制补光设备的工作。本系统采用继电器作为控制元件,通过STM32F103单片机的GPIO引脚控制继电器的通断,从而控制补光设备的开启和关闭。当光照强度低于设定的阈值时,单片机控制继电器闭合,接通补光设备的电源,实现补光功能。
3.9 浇水电路
浇水电路用于控制浇水设备的工作。本系统同样采用继电器作为控制元件,通过STM32F103单片机的GPIO引脚控制继电器的通断,从而控制浇水设备的开启和关闭。当土壤湿度低于设定的阈值时,单片机控制继电器闭合,接通浇水设备的电源,实现浇水功能。
四、软件设计
4.1 开发环境
本系统的软件开发环境采用STM32CubeIDE,库和中间件采用STM32 HAL库。STM32CubeIDE是一款集成开发环境,提供了代码编辑、编译、调试等功能,方便开发者进行软件开发。STM32 HAL库是STM32官方提供的一套硬件抽象层库,它封装了STM32单片机的底层硬件操作,使开发者可以更加方便地进行应用程序的开发。
4.2 模块化设计
将系统软件拆分为系统初始化、传感器数据采集、数据处理、数据显示、按键处理、自动控制等几个主要模块。这种模块化的设计方式有助于提高代码的可读性、可维护性和可扩展性,使得各个功能模块之间相互独立,便于开发人员进行开发和调试。
- 系统初始化模块:
该模块负责初始化STM32单片机的各个外设,包括GPIO、I2C、ADC、定时器等,以及初始化各个传感器和显示设备。在初始化过程中,会配置各个外设的工作参数,如GPIO的输入输出模式、I2C的通信速率、ADC的采样精度等。同时,还会对传感器和显示设备进行初始化操作,确保它们能够正常工作。例如,对于DHT11温湿度传感器,会发送初始化指令,等待传感器响应;对于LCD1602液晶显示电路,会设置显示模式、清屏等。 - 传感器数据采集模块:
该模块负责从DHT11温湿度传感器、PCF8591传感器模块和光照检测电路采集环境参数数据。在采集数据时,会按照各个传感器的通信协议和数据格式进行操作。对于DHT11温湿度传感器,会发送起始信号,等待传感器回应后,读取传感器输出的温湿度数据;对于PCF8591传感器模块,会通过I2C总线发送读取指令,获取传感器采集的模拟信号数据;对于光照检测电路,会通过ADC引脚采集分压电路的电压值,并根据电压值与光照强度的对应关系,计算出光照强度数据。采集到的数据会存储在相应的变量中,供后续处理使用。 - 数据处理模块:
对采集到的环境参数数据进行处理,如滤波、校准等,以提高数据的准确性和可靠性。在滤波处理方面,可以采用移动平均滤波算法,对连续采集到的多个数据进行平均计算,减少随机误差的影响。在校准处理方面,可以根据传感器的特性和实际测量情况,对采集到的数据进行修正。例如,对于温湿度传感器,可能会存在一定的测量误差,可以通过校准系数对采集到的温湿度数据进行修正,使其更接近实际值。处理后的数据会更新到相应的变量中,供数据显示和自动控制模块使用。 - 数据显示模块:
将处理后的环境参数数据发送给LCD1602液晶显示电路进行显示。在显示数据时,会按照LCD1602的显示格式和要求,将数据转换为相应的字符或数字,并发送到液晶显示屏上。例如,对于温度数据,会将其转换为带有小数点的字符串形式,并显示在液晶显示屏的指定位置。同时,还可以根据需要,显示其他相关信息,如系统状态、阈值设置等。通过数据显示模块,用户可以直观地了解大棚内的环境参数情况。 - 按键处理模块:
检测按键的按下和释放事件,根据按键的操作设置报警阈值和修改温湿度阈值。在按键检测方面,可以采用中断方式或轮询方式。采用中断方式时,当按键按下或释放时,会触发相应的中断服务程序,在中断服务程序中处理按键事件;采用轮询方式时,会在主循环中定期检测按键的状态。当检测到按键按下事件时,会根据按键的不同功能,进入相应的阈值设置或修改流程。例如,当按下设置温度阈值的按键时,会进入温度阈值设置界面,用户可以通过其他按键增加或减少阈值的大小,设置完成后,会将新的阈值保存到相应的变量中。 - 自动控制模块:
根据设定的阈值和环境参数数据,自动控制补光电路和浇水电路的工作。在自动控制过程中,会实时比较采集到的环境参数数据与设定的阈值。例如,对于光照强度,会将其与设定的光照阈值进行比较,当光照强度低于设定的阈值时,会控制补光电路开启,为大棚内的植物提供光照;当光照强度高于设定的阈值时,会控制补光电路关闭。对于土壤湿度,会将其与设定的土壤湿度阈值进行比较,当土壤湿度低于设定的阈值时,会控制浇水电路开启,为大棚内的植物浇水;当土壤湿度高于设定的阈值时,会控制浇水电路关闭。通过自动控制模块,可以实现对大棚内环境的智能化管理,提高农作物的生产效率和质量。
4.3 关键代码实现
以下是一个简化的代码框架,展示了系统初始化、传感器数据采集、数据处理、数据显示和自动控制等模块的关键代码。
#include "stm32f1xx_hal.h"
#include "dht11.h"
#include "pcf8591.h"
#include "lcd1602.h"
// 定义阈值变量
float temperature_threshold = 25.0;
float humidity_threshold = 60.0;
float light_threshold = 500.0;
float soil_humidity_threshold = 30.0;
// 系统初始化函数
void System_Init(void) {
// 初始化HAL库、系统时钟、GPIO、I2C、ADC等外设
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_I2C1_Init();
MX_ADC1_Init();
// 初始化传感器和显示设备
DHT11_Init();
PCF8591_Init();
LCD1602_Init();
}
// 传感器数据采集函数
void Sensor_Data_Collect(void) {
float temperature, humidity;
uint8_t light_value;
float soil_humidity;
// 采集温湿度数据
DHT11_Read(&temperature, &humidity);
// 采集光照强度数据
light_value = ADC_Read(); // 假设ADC_Read函数用于读取光照检测电路的ADC值
// 采集土壤湿度数据
soil_humidity = PCF8591_Read_Soil_Humidity(); // 假设PCF8591_Read_Soil_Humidity函数用于读取PCF8591采集的土壤湿度数据
}
// 数据处理函数
void Data_Process(void) {
// 这里可以添加滤波、校准等数据处理操作
}
// 数据显示函数
void Data_Display(void) {
char buffer[16];
// 显示温度
sprintf(buffer, "T:%.1fC", temperature);
LCD1602_Set_Cursor(0, 0);
LCD1602_Print(buffer);
// 显示湿度
sprintf(buffer, "H:%.1f%%", humidity);
LCD1602_Set_Cursor(0, 1);
LCD1602_Print(buffer);
// 显示光照强度
sprintf(buffer, "L:%d", light_value);
LCD1602_Set_Cursor(8, 0);
LCD1602_Print(buffer);
// 显示土壤湿度
sprintf(buffer, "S:%.1f%%", soil_humidity);
LCD1602_Set_Cursor(8, 1);
LCD1602_Print(buffer);
}
// 按键处理函数
void Key_Process(void) {
// 检测按键按下事件,根据按键操作设置阈值
// 这里省略具体的按键检测和阈值设置代码
}
// 自动控制函数
void Auto_Control(void) {
if (light_value < light_threshold) {
// 开启补光电路
HAL_GPIO_WritePin(LIGHT_RELAY_GPIO_Port, LIGHT_RELAY_Pin, GPIO_PIN_SET);
} else {
// 关闭补光电路
HAL_GPIO_WritePin(LIGHT_RELAY_GPIO_Port, LIGHT_RELAY_Pin, GPIO_PIN_RESET);
}
if (soil_humidity < soil_humidity_threshold) {
// 开启浇水电路
HAL_GPIO_WritePin(WATER_RELAY_GPIO_Port, WATER_RELAY_Pin, GPIO_PIN_SET);
} else {
// 关闭浇水电路
HAL_GPIO_WritePin(WATER_RELAY_GPIO_Port, WATER_RELAY_Pin, GPIO_PIN_RESET);
}
}
int main(void) {
System_Init();
while (1) {
Sensor_Data_Collect();
Data_Process();
Data_Display();
Key_Process();
Auto_Control();
HAL_Delay(1000); // 延时1秒
}
}
五、系统调试与测试
5.1 开发环境搭建
搭建STM32CubeIDE开发环境,配置STM32CubeMX项目并生成STM32CubeIDE项目,安装必要的库和驱动程序。确保开发环境能够正常编译、下载和调试代码。
### 4.2 模块化设计
将系统软件拆分为系统初始化、传感器数据采集、数据处理、数据显示、按键处理、自动控制等几个主要模块。这种模块化的设计方式有助于提高代码的可读性、可维护性和可扩展性,使得各个功能模块之间相互独立,便于开发人员进行开发和调试。
- 系统初始化模块:
该模块负责初始化STM32单片机的各个外设,包括GPIO、I2C、ADC、定时器等,以及初始化各个传感器和显示设备。在初始化过程中,会配置各个外设的工作参数,如GPIO的输入输出模式、I2C的通信速率、ADC的采样精度等。同时,还会对传感器和显示设备进行初始化操作,确保它们能够正常工作。例如,对于DHT11温湿度传感器,会发送初始化指令,等待传感器响应,在等待过程中,系统会设置一个超时机制,若超过一定时间传感器仍未响应,则会进行错误处理并尝试重新初始化;对于LCD1602液晶显示电路,会设置显示模式、清屏等,在设置显示模式时,会精确配置显示行数、字符格式等参数,以保证显示效果符合预期。 - 传感器数据采集模块:
该模块负责从DHT11温湿度传感器、PCF8591传感器模块和光照检测电路采集环境参数数据。在采集数据时,会按照各个传感器的通信协议和数据格式进行操作。对于DHT11温湿度传感器,会发送起始信号,等待传感器回应后,读取传感器输出的温湿度数据,在读取数据过程中,会进行多次校验,若校验不通过,则会重新读取数据,直到获取到准确的数据为止;对于PCF8591传感器模块,会通过I2C总线发送读取指令,获取传感器采集的模拟信号数据,在发送读取指令时,会严格按照I2C总线的通信时序要求进行操作,确保数据传输的准确性;对于光照检测电路,会通过ADC引脚采集分压电路的电压值,并根据电压值与光照强度的对应关系,计算出光照强度数据,在计算光照强度数据时,会考虑到电路的误差和光照强度与电压值之间的非线性关系,进行相应的修正和补偿。采集到的数据会存储在相应的变量中,供后续处理使用。 - 数据处理模块:
对采集到的环境参数数据进行处理,如滤波、校准等,以提高数据的准确性和可靠性。在滤波处理方面,可以采用移动平均滤波算法,对连续采集到的多个数据进行平均计算,减少随机误差的影响,同时,为了进一步提高滤波效果,还可以结合中值滤波算法,先对数据进行中值滤波,去除一些明显的异常值,然后再进行移动平均滤波;在校准处理方面,可以根据传感器的特性和实际测量情况,对采集到的数据进行修正。例如,对于温湿度传感器,可能会存在一定的测量误差,可以通过校准系数对采集到的温湿度数据进行修正,使其更接近实际值,校准系数可以通过在标准环境下进行多次测量和计算得到。处理后的数据会更新到相应的变量中,供数据显示和自动控制模块使用。 - 数据显示模块:
将处理后的环境参数数据发送给LCD1602液晶显示电路进行显示。在显示数据时,会按照LCD1602的显示格式和要求,将数据转换为相应的字符或数字,并发送到液晶显示屏上。例如,对于温度数据,会将其转换为带有小数点的字符串形式,并显示在液晶显示屏的指定位置,同时,会根据温度数据的范围和变化情况,设置不同的显示颜色或闪烁效果,以提醒用户温度是否超出正常范围;对于湿度数据,会以百分比的形式显示,并添加相应的单位标识;对于光照强度数据,会根据光照强度的等级,显示不同的图标或文字说明。此外,还可以根据需要,显示其他相关信息,如系统状态、阈值设置等。通过数据显示模块,用户可以直观地了解大棚内的环境参数情况。 - 按键处理模块:
检测按键的按下和释放事件,根据按键的操作设置报警阈值和修改温湿度阈值。在按键检测方面,可以采用中断方式或轮询方式。采用中断方式时,当按键按下或释放时,会触发相应的中断服务程序,在中断服务程序中处理按键事件,在中断服务程序中,会进行按键消抖处理,避免因按键机械振动而产生的多次触发;采用轮询方式时,会在主循环中定期检测按键的状态,在检测按键状态时,会设置一个检测周期,确保能够及时准确地检测到按键的操作。当检测到按键按下事件时,会根据按键的不同功能,进入相应的阈值设置或修改流程。例如,当按下设置温度阈值的按键时,会进入温度阈值设置界面,用户可以通过其他按键增加或减少阈值的大小,在设置阈值过程中,会实时显示当前设置的阈值,并且会限制阈值的设置范围,避免设置不合理的阈值。设置完成后,会将新的阈值保存到相应的变量中,并进行数据校验,确保阈值保存的正确性。 - 自动控制模块:
根据设定的阈值和环境参数数据,自动控制补光电路和浇水电路的工作。在自动控制过程中,会实时比较采集到的环境参数数据与设定的阈值。例如,对于光照强度,会将其与设定的光照阈值进行比较,当光照强度低于设定的阈值时,会控制补光电路开启,为大棚内的植物提供光照,在控制补光电路开启时,会设置一个延时机制,避免因光照强度的短暂波动而导致补光电路频繁开启和关闭;当光照强度高于设定的阈值时,会控制补光电路关闭。对于土壤湿度,会将其与设定的土壤湿度阈值进行比较,当土壤湿度低于设定的阈值时,会控制浇水电路开启,为大棚内的植物浇水,在控制浇水电路开启时,会根据土壤湿度的降低程度和浇水时间,合理控制浇水的量,避免浇水过多或过少;当土壤湿度高于设定的阈值时,会控制浇水电路关闭。通过自动控制模块,可以实现对大棚内环境的智能化管理,
5.3 软件调试
- 单步调试:使用STM32CubeIDE的调试功能,对系统软件进行单步调试,检查各个模块的代码执行情况,确保逻辑正确。
- 数据验证:对比传感器采集到的数据与实际环境参数,验证数据的准确性和可靠性。
- 功能测试:测试系统的各项功能,包括阈值设置、数据显示、自动控制等,确保系统能够按照设计要求正常工作。
5.4 数据分析
对采集到的环境参数数据进行分析,绘制温度、湿度、光照强度和土壤湿度随时间变化的曲线,观察数据的波动情况,验证系统的稳定性和准确性。同时,分析自动控制功能的效果,检查补光电路和浇水电路是否能够在合适的时间开启和关闭。
六、结论
本文设计并实现了一套基于STM32单片机的农业大棚环境监控系统。该系统通过集成多种传感器,实时监测大棚内的光照强度、土壤湿度、温度和湿度等环境参数,并通过LCD1602液晶显示屏实时显示。用户可以通过按键设置报警阈值和修改温湿度阈值,系统根据设定的阈值自动控制补光电路和浇水电路,实现了大棚环境的智能化管理。
在硬件设计方面,采用了STM32F103单片机最小系统作为核心控制单元,结合PCF8591传感器模块、DHT11温湿度传感器、光照检测电路等,实现了环境参数的准确采集。同时,设计了按键设置电路、指示灯电路、补光电路和浇水电路,满足了系统的功能需求。
在软件设计方面,采用模块化设计思想,将系统软件拆分为多个模块,便于开发和维护。使用STM32CubeIDE开发环境和STM32 HAL库进行软件开发,提高了开发效率。
经过系统调试与测试,该系统能够稳定运行,各项功能正常,能够准确监测大棚内的环境参数,并根据设定的阈值自动控制相关设备,有效提高了农作物的生产效率和质量。
未来,可以进一步拓展系统的功能,如增加无线通信模块,实现远程监控和控制;增加更多的传感器,监测更多的环境参数;优化自动控制算法,提高控制的精度和效率等,以更好地满足现代农业的发展需求。
参考文献
[1] 农作物温室环境智能监控系统研究背景意义及国内外现状
[2] stm32f103最小系统板详细介绍
[3] PCF8591模块的详细介绍与应用
[4] 温湿度传感器DHT11:单片机温湿度数据采集与显示
[5] lcd1602显示电路
更多推荐



所有评论(0)