基于STM32的温室大棚环境检测及自动浇灌系统设计

需要全部资料请私信我!

对应源码及文件:源码及文件下载

一、绪论

1.1 研究背景及意义

在传统农业灌溉模式下,监测系统通常分为两种,一是通过人工检测获得,二则是通过有线检测系统获得,前者的人工成本高、劳动强度大,而效率却相对较低,后者则会面临有线传输时信号衰减、架设线路困难等问题。同时,传统的人工灌溉不仅浪费人力资源,而且无法精准把握土壤温湿度,一定程度上造成了灌溉不均匀与水资源的浪费。而智能灌溉系统的出现有效的解决了这一系列问题。

智能灌溉系统是将物联网技术与农业技术这两者相结合,其具有现代化的田间数据采集系统,对农田中的空气温度、土壤湿度、光照强度等环境参数做到工业级的精准捕获,更高效地管理农业流程,同时该系统具备一个自动的灌溉系统,该系统根据所收集的数据做出响应,大大提高了水资源的利用和农作物的产量和品质,实现了农业生产的智能化、网络化和精准化。为此,本文给出一种基于物联网的自动浇灌系统。

1.2 研究内容

随着物联网技术蓬勃发展,对传统的农业带来巨大的挑战和机遇,基于物联网的智能农业越受到关注。本课题针对智能农业自动浇灌问题,基于嵌入式处理器平台,利用传感器技术和物联网通信技术,设计一种基于物联网的自动浇灌系统。在设计中:
(1)运用电路、传感器、物联网通信等相关工程原理,对植物生长环境参数采集、处理和分析,结合经济、安全等非技术因素,给出系统设计解决方案;
(2)根据解决方案,实现环境参数的信号检测、水阀及光强控制、无线通信电路、嵌入式处理器最小系统以及人机交互接口电路等系统硬件设计;
(3)对数据处理、数据传输及信息显示等功能进行嵌入式代码化编程,实现系统软件设计和整体调试;

1.3 功能设计

本课题采用传感器技术和物联网技术,并结合嵌入式开发平台设计了一种自动浇灌系统。可以实现对农作物生长环境的实时监控,并通过收集光照、环境温度、土壤湿度等数据,结合设置好的适宜农作物生长的环境阈值,实现自动灌溉、补光、通风等功能,达到省工省水的目的,切实实现农业灌溉智能化,本课题具有很强的实用性及巨大的市场空间。
① 监测植物生长的土壤温湿度、光照强度、环境温度;
② 控制水阀、风扇、补光灯等设备工作;
③ 可用手机APP显示数据并控制设备。

二、系统方案设计

2.1 总体方案设计

本课题针对智能农业自动浇灌问题,基于嵌入式处理器平台,利用传感器技术和物联网通信技术,设计一种基于物联网的自动浇灌系统,系统总体方案框图如图:
在这里插入图片描述
浇灌系统由三个传感器模块、单片机最小系统、三个外部设备和蓝牙模块组成,其中单片机最小系统以STM32F103C8T6单片机为核心控制器,STM32单片机实现对各个外设模块总体控制,负责处理从传感器采集到的数据信息,从而对各类不同信息进行相关操作,控制各个外设实现相关的功能。
外设模块其中包含温度检测模块,用于检测当前环境的温度;土壤湿度检测模块,用于获取当前土壤湿度;供电电路,给整个主机部分供电;水泵继电器,若土壤湿度小于湿度阈值,水泵继电器闭合,若土壤湿度小于土壤温度阈值,水泵继电器打开;风扇模块,继电器控制步进电机控制风扇闭合;显示模块,显示检测到的环境温度、土壤湿度、光照强度和设置的阈值;蓝牙模块,将检测到的数据通过该模块发送给移动端,也可通过该模块在移动端设置阈值。

三、系统硬件设计

3.1 STM32单片机最小系统

本次浇灌系统设计中,STM32单片机最小系统由单片机芯片STM32F103C8T6、晶振电路、复位电路、电源电路等部分组成。其原理图设计如图3.1所示。
单片机芯片选用STM32F103C8T6,该芯片是一款基于ARM Cortex-M内核STM32系列的32位的微控制器,其程序存储器容量是64KB,需要电压2V~3.6V,工作温度为-40°C ~ 85°C。计算性能方面卓越,出错率小、具有灵活的中断管理功能,价格适中。STM32F103C8T6广泛应用于电子设备中,具有复杂控制和算法的处理器。它的主要功能包括模拟数字转换(ADC)、定时器和中断控制器(TIM)、串行通信接口(USART)等功能。此外,它还拥有许多具有创新性和高性能的特性,如高速I/O端口、嵌入式硬件分支预测等,是一款成本低、功能强大的单片机芯片。
在这里插入图片描述

3.2 环境温度检测电路设计

环境温度传感器DS18B20模块测量农田周围环境的温度,模块具有3个引脚,其中两个分别接VCC和GND,最后一个引脚与单片机I/O口相连,传输数据。其原理图设计如图:
在这里插入图片描述
DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如不锈钢套管封装、TO-92封装和小轴DIP封装等,本次系统设计采用小轴DIP封装,此封装可适用于露天环境中温度较高的情况,契合农田环境的温度测量应用。本设计中封装后的DS18B20可用于检测农田环境的温度,工作精度较高,耐磨耐碰,体积小,使用方便,适用于各种狭小空间设备数字测温和控制领域。

3.3 土壤湿度检测电路设计

土壤湿度传感器YL-69模块检测盆栽的土壤湿度。YL-69是一个简单的土壤湿度传感器,是一种电容式传感器,主要使用的是湿敏电容。当环境的湿度发生改变时,会使得湿敏电容存在的环境中的介质发生改变,导致湿敏电容中的电容数值产生变化,电容的数值正比于湿度值。由于湿敏电容的灵敏度高、响应速度快、滞后量小,此外微小的体积、极低的功耗,使得湿敏电容很容易小型化和集成化。YL-69 采用CMOS工艺,可以确保其低功耗,同时还具有很高的可靠性和稳定性。传感器内部含有一个电容性聚合体湿度敏感元件和一个用能隙材料做成的温度传感器,在同一芯片上,与A/D转换器及串行接口电路实现连接。其原理图设计如图
在这里插入图片描述

3.4 光照强度检测电路设计

光照强度传感器模块检测农田中农作物所受到的光照强度。该模块选用光敏电阻5528,其原理图设计如图:
在这里插入图片描述
5528光敏电阻是一种基于半导体材料的光敏元件,其工作原理是通过外界光照强度对器件内部半导体材料的电荷载流子密度进行影响,从而改变器件的电阻值。当光照强度增加时,载流子密度增加,电阻值降低;反之,当光照强度减小时,载流子密度减小,电阻值升高。即通过不同阻值的电流来检测光照强度,测量光照强度范围为0-65535lx。

3.5 水泵控制电路设计

本系统的浇灌部分由一个JDQ-5继电器、小型抽水泵与驱动电路组成。在这个电路中,继电器JDQ-5用于控制外部高功率电器或电磁设备。将JDQ-5的控制电压与单片机的工作电压保持一致,即将JDQ-5的控制电压引脚与单片机的5V电源相连。当单片机输出的IO口电流较小时,无法直接驱动继电器,需要使用三极管等驱动器件进行缓冲放大,此时三极管型号选用S8050三极管,其是一款小功率NPN型硅管,集电极-基极电压最大可为40V,集电极电流为0.5A。当GPIO输出高电平时,NPN三极管导通,继电器线圈得到5V的供电,继电器吸合,触点闭合;当GPIO输出低电平时,NPN三极管截止,继电器线圈断电,继电器释放,触点断开。其原理图设计如图3.5所示。
在这里插入图片描述

3.6 风扇控制电路设计

本系统风扇模块部分由JDQ-5继电器、风扇和驱动电路组成,步进电机带动风扇旋转,其工作原理与上述水泵控制电路相似,原理图设计如图
在这里插入图片描述

3.7 灯光控制电路设计

本系统灯光模块部分由JDQ-5继电器、补光灯和驱动电路组成,继电器控制农田环境是否需要补光,其工作原理与上述水泵控制电路相似,原理图设计如图
在这里插入图片描述

四、系统软件设计

自动浇灌系统软件设计通过单片机核心控制,将采集到的环境温度、土壤湿度、光照强度实时显示在LCD1602液晶屏上,并将农田环境中的各项参数设定正常范围值,单片机核心控制器对数据进行分析处理后,若环境参数超出设定范围,则控制各模块运行;同时将检测到的数据通过无线通信模块传送到手机APP上,使手机也可以实时显示农田环境的数据,同时也可通过手机APP进行远程控制。

4.1 主程序设计

本次设计的自动浇灌系统将实现以下功能:采集农田生长环境中的温度、土壤湿度、光照强度,将采集到的数据显示在屏幕上,并通过无线通信模块将数据传输到手机APP上。若环境温度高于所设置的阈值,则打开风扇制冷,降低环境温度;若土壤湿度低于阈值,则打开水泵模块,抽水增加土壤湿度,使农作物处于适宜的土壤环境中;若光照强度低于阈值,则打开补光灯对环境进行补光。系统主程序设计流程图如图
在这里插入图片描述

五、系统调试

5.1 系统硬件调试

通过对浇灌系统的硬件进行调试,来检验系统的硬件电路能否正确地工作,具体包括以下五个部分:
(1)检查电路:组装好的电路要在通电之前仔细检查电路连线是否有错误,对照原理图按一定的顺序逐级检查。特别要注意电源与地是否有短路问题,集成电路和晶体管的引脚是否接错,轻轻拨动元器件观察其是否焊接牢固,以及能否实现期望的性能。确认后可以进行下一步骤。
(2)通电观察:上电前一定要调试好所需要的电源电压值,并确定电路板电源端没有短路现象后给电路通电,上电后先观察是否有异常现象,如冒烟、放电的声光、元器件发烫、异常气味等,如果有以上情况要立即切断电源,待排除故障后重新接通电源,随后测量每个集成块的电源引脚电压是否正常,以保证集成电路是否已通电工作。
在这里插入图片描述
(3)静态调试:不加入输入信号的情况下测量各级直流工作电压和电流是否正常。一般对晶体管和集成电路进行静态工作点调试。
(4)动态调试:加入输入信号观察电路输出信号是否符合要求,即各个传感器模块是否能正常工作。
(5)整体指标测试:对本次课题设计要求的计数指标进行测试并对测试数据进行分析,最后得出测试结论,以确定电路的技术指标是否符合设计要求。

5.2 系统运行测试

系统运行测试的目的在于处理整个系统在实际操作中发生的一些问题,如逻辑上的差错,以及对最后的结果与所期望的结果的一致性进行判定。在完成了硬件和软件的测试之后,就可以将该程序放入 MCU 进行调试。程序通电后,每个传感器模块开始正常工作,无线传输模块、LCD1602显示模块、风扇模块以及补光灯模块的工作现象如图5.7,5.8,5.9,5.10所示。
无线传输模块:单片机将数据通过蓝牙模块传输到手机APP上,此时手机APP可以实时监测农田的环境参数(光照强度5%,环境温度25℃,土壤湿度57%),且手机APP所显示的数据与LCD1602液晶显示屏中的数据一致。由下图APP界面可见,可通过手机APP设置农田环境参数的初始阈值,并可以控制或切换外部设备的工作状态,实现远程操控。
在这里插入图片描述
显示模块:单片机将传感器采集到的农田环境数据进行分析和处理后显示在LCD1602液晶屏上,实现农田环境参数的实时显示。
在这里插入图片描述
风扇模块:单片机将温度传感器DS18B20采集到的数据经过分析和处理后与提前设定的阈值相比,下图显示的是传感器捕获到的环境温度高于设定的阈值,此时风扇打开进入工作状态,当环境温度下降到适宜农作物生长的阈值时,风扇自动关闭。
在这里插入图片描述
补光灯模块:单片机将光敏电阻5528采集到的数据经过分析和处理后与提前设定的阈值相比,下图显示的是通过光敏电阻捕获到的光照强度低于设定的阈值,此时补光灯打开进入工作状态,当光照强度达到阈值时,补光灯会自动关闭。
在这里插入图片描述

六、总结

本次自动浇灌系统通过传感器对农作物生长环境中的环境温度、土壤湿度、光照强度等信息进行收集,通过单片机核心控制器对采集到的数据进行分析和处理,实现对农作物生长环境的实时监测,并判断是否需要开启控制模块来将农田环境调整到农作物生长最适宜的环境条件。最后,蓝牙HC-06模块将传感器采集到的环境参数发送到手机APP上,在手机APP上实时显示数据,也可以通过手机APP实现对各控制模块的远程操控。
本次设计的自动浇灌系统虽然已普遍实现了所需的功能,但仍在较多方面存在不足,例如极寒露天环境时无法使农田环境升温来保证农作物处在适宜的生长条件下,且系统捕获的农田环境参数会存在误差,进而影响浇灌效果。另外浇灌系统与移动端的连接不是非常稳定,可能会导致系统故障或停机。针对以上问题,我会在之后的时间里挑选合适的加热设备投入应用,对比其他传感器选取更为精准的来替换,保证数据的准确性。并精进自己的无线传输技术,实现浇灌系统与移动端的稳定连接。

七、附录

视频展示:

基于stm32的温室大棚环境监测及自动浇灌系统设计

PCB设计:
在这里插入图片描述
部分代码:

#include "sys.h"
#include "adc.h"
#include "delay.h"
#include "lcd1602.h"
#include "ds18b20.h"
#include "timer.h"
#include "gpio.h"
#include "usart1.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>

#define STM32_RX1_BUF       Usart1RecBuf 
#define STM32_Rx1Counter    RxCounter
#define STM32_RX1BUFF_SIZE  USART1_RXBUFF_SIZE

unsigned int  light=0;
unsigned char temperature=0;
unsigned char setTempValue=35;        //温度设置值
unsigned int  setSoilMoisture=10;
unsigned char setLightValue=20;       //光照设置值
unsigned int  soilMoisture;           //土壤湿度

bool usart_send_flag = 0;
bool mode = 0;               //0是自动模式,1是手动模式
bool shuaxin  = 0;
bool shanshuo = 0;
bool sendFlag = 1;

unsigned char setn=0;//记录设置键按下的次数

void displayLight(void)//显示光照
{
		u16 test_adc=0;
	
	  /获取光线值
	  test_adc = Get_Adc_Average(ADC_Channel_8,10);//读取通道9的5次AD平均值
		light = test_adc*99/4096; //转换成0-99百分比
		light = light >= 99? 99: light; //最大只能到百分之99
	  if(light<=setLightValue && shanshuo)
		{
			  LCD_Write_Char(3,1,' '); 
				LCD_Write_Char(4,1,' '); 
		}
		else
		{
				LCD_Write_Char(3,1,light/10+'0'); 
				LCD_Write_Char(4,1,light%10+'0'); 
		}
}

void displaySoilMoisture(void)//显示土壤湿度
{

	   soilMoisture =100- (Get_Adc_Average(ADC_Channel_9,10)*100/4096);

		if(soilMoisture > 99)soilMoisture = 99;        //最大取百分之99

		 if(soilMoisture<=setSoilMoisture && shanshuo)
		{
			 LCD_Write_Char(9,0,' '); 
			 LCD_Write_Char(10,0,' ');
		}
		else
		{
			 LCD_Write_Char(9,0,soilMoisture/10+'0'); 
			 LCD_Write_Char(10,0,soilMoisture%10+'0');
		}
}

void displayTemperature(void)//显示温度
{
		temperature=ReadTemperature();
	  if(temperature>=setTempValue && shanshuo)
		{
			 LCD_Write_Char(12,1,' '); 
			 LCD_Write_Char(13,1,' ');
		}
		else
		{
			 LCD_Write_Char(12,1,temperature/10+'0'); 
			 LCD_Write_Char(13,1,temperature%10+'0');
		}
}

void displaySetValue(void)
{
		if(setn == 1)
		 {
				LCD_Write_Char(7,1,setSoilMoisture/10+'0'); 
			  LCD_Write_Char(8,1,setSoilMoisture%10+'0');
		 }
		 if(setn == 2)
		 {
				LCD_Write_Char(7,1,setTempValue/10+'0'); 
			  LCD_Write_Char(8,1,setTempValue%10+'0');
		 }
		 if(setn == 3)
		 {
				LCD_Write_Char(7,1,setLightValue/10+'0'); 
			  LCD_Write_Char(8,1,setLightValue%10+'0');
		 }
}

void keyscan(void)
{
	if(KEY1 == 0) //模式切换按键
	{
	 	delay_ms(10); //消抖
		if(KEY1 == 0)
		{
		 	while(KEY1 == 0); //等待按键松开
			BEEP=0;
			setn ++;
			 if(setn == 1)
			 {
					LCD_Write_String(0,0,"set the Moisture");//显示字符串
					LCD_Write_String(0,1,"       00%      ");
			 }
			 if(setn == 2)
			 {
					LCD_Write_String(0,0,"  set the Temp  ");//显示字符串
					LCD_Write_String(0,1,"       00 C     ");
				  LCD_Write_Char(9,1,0xdf);
			 }
			 if(setn == 3)
			 {
					LCD_Write_String(0,0,"  set the Light ");//显示字符串
					LCD_Write_String(0,1,"       00%      ");
			 }
			 if(setn == 4)
			 {
					LCD_Write_String(0,0,"  set the mode  ");//显示字符串
					LCD_Write_String(0,1,"       ZD       ");
				  if(mode==0)LCD_Write_String(7,1,"ZD");else LCD_Write_String(7,1,"SD");
			 }
			 displaySetValue();
			 if(setn >= 5)
			 {
					setn = 0;
				  LCD_Write_String(0,0,"Moisture:  %    ");//显示字符串
					LCD_Write_String(0,1,"Gx:  % Temp:   C");
					LCD_Write_Char(14,1,0xdf);
				  if(mode==0)LCD_Write_String(13,0,"ZD");else 
### 回答1: 近年来,智能温室大棚已经成为现代农业的一个重要领域。为了提高种植效率和质量,温室大棚需要在不断地优化和改进,其中一个重要的方向就是智能化的浇灌检测系统。 基于stm32智能浇灌检测系统可以实现定时、定量的浇灌,适应不同作物的需求。在系统中,stm32可通过测量温度、湿度等参数,判断大棚环境状态,并根据不同植物的需求进行浇水和施肥。此外,系统也可以监测大棚中的CO2浓度,在CO2浓度过低时及时补充二氧化碳,提高植物的光合作用效率。 系统中的stm32还可以实现数据的采集和存储,方便管理和分析。同时,通过手机App等无线通信方式,可以远程控制、监测大棚,实现智能化的管理。 基于stm32智能浇灌检测系统,不仅能提高温室大棚的种植效率和质量,还能降低浇灌的人力成本,提高作业效率。随着技术的不断进步和应用推广,这一系统将在未来的温室大棚中发挥更加重要的作用,为现代化农业的发展做出贡献。 ### 回答2: 温室大棚智能浇灌检测是一种集成了传感器、执行器、单片机等技术的智能化生态环境监测系统,可实现对温室内各项参数(如温度、湿度、光照等)进行实时监测和控制。目前基于STM32控制芯片的温室大棚智能浇灌检测技术已有相当的研究和应用。 该系统可通过传感器实时监测土壤温湿度、空气温湿度、CO2浓度等参数,达到精准的环境检测结果。根据这些数据,系统可以自动调整浇水、通风等控制环节,使大棚内部环境保持最佳状态。此外,该系统还能及时检测异常情况,如温度过高、湿度过低等,从而避免损失事故的发生。 系统的主控芯片选用的STM32,其性能强大、运算速度快、功耗低,可满足复杂控制算法的需求。另外,该芯片可支持多种通信协议,如I2C、USART等,可方便地与外部设备进行接口通信。 温室大棚智能浇灌检测技术对农业生产带来了很大的便捷性,它可实现科学的精准浇灌、优化的环境控制,能够提高农作物的产量和品质,为现代化农业生产提供了有效的技术手段。
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Svan.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值