功能介绍:采用stm32单片机作为主控CPU,采用DHT11传感器采集温湿度,采用光敏传感器采集光照强度,通过按键设置温湿度、光照的阈值,当温度高于设置值,继电器开启散热,当湿度低于设置值,继电器开启加湿,当光敏值大于设置值,继电器打开进行补光,LCD1602显示相关数据,程序中文注释,新手容易看懂,文末有资料分享下载链接:
下面是实物演示视频和相关实物图片
72-基于stm32单片机农业大棚温湿度光照检测报警系统(程序+原理图+元件清单全套资料)


下面是程序部分展示(程序有中文注释,新手容易看懂)
程序部分展示:void ADC_Set(void){ADC_InitTypeDef ADC_InitStructure;//ADC结构体变量//注意在一个语句快内变量的声明要放在可执行语句的前面,否则出错,因此要放在ADC1_GPIO_Config();前面ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;//ADC1和ADC2工作在独立模式ADC_InitStructure.ADC_ScanConvMode = DISABLE; //使能扫描ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;//ADC转换工作在连续模式ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//由软件控制转换,不使用外部触发ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//转换数据右对齐ADC_InitStructure.ADC_NbrOfChannel = 1;//转换通道为1ADC_Init(ADC1, &ADC_InitStructure); //初始化ADCADC_RegularChannelConfig(ADC1, ADC_Channel_8, 1, ADC_SampleTime_28Cycles5);ADC_Cmd(ADC1, ENABLE);//使能ADC1ADC_SoftwareStartConvCmd(ADC1, ENABLE);}int wendu,shidu,guangqiang; //保存温度 湿度 光强int xiaoshi=70,fenzhong=20;// 湿度设定 光强设定//这里对按键进行扫描void anjiansaomiao(void){static u8_t k1,k2,k3,k4,k5;static u8_t K1Flag=0,K2Flag=0,K3Flag=0,K4Flag=0;//按键扫描,获取按键状态k1 = GPIO_ReadInputDataBit(GPIOB , GPIO_Pin_6);k2 = GPIO_ReadInputDataBit(GPIOB , GPIO_Pin_7);k3 = GPIO_ReadInputDataBit(GPIOB , GPIO_Pin_8);if(k1 == 0)//设置温度{wendu1++;if(wendu1>99) wendu1=1;}if(k2 == 0)//设置湿度{shidu1++;if(shidu1>99) shidu1=1;}if(k3 == 0)//设置光照{gm=gm+10;if(gm>500) gm=1;}}//中断优先级配置void NVICConfig(void){NVIC_InitTypeDef NVIC_InitStructure;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn; //中断源:[15:10],位于“stm32f10x.h”中NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; //抢占优先级:1NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //子优先级:1NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能中断通道NVIC_Init(&NVIC_InitStructure);}//定时器设置1void TimerConfig(TIM_TypeDef* TIMx,unsigned int time){TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_DeInit(TIMx);TIM_TimeBaseStructure.TIM_Period = time * 2; /* 自动重装载寄存器周期的值(计数值) *//* 累计 TIM_Period个频率后产生一个更新或者中断 */TIM_TimeBaseStructure.TIM_Prescaler= (4000- 1); /* 时钟预分频数 例如:时钟频率=72MHZ/(时钟预分频+1) */TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; /* 采样分频 */TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; /* 向上计数模式 */TIM_TimeBaseInit(TIMx, &TIM_TimeBaseStructure);TIM_ClearFlag(TIMx, TIM_FLAG_Update); /* 清除溢出中断标志 */TIM_ITConfig(TIMx,TIM_IT_Update,ENABLE);}
程序打开办法:特别注意:下载资料包以后一定要先解压!!!(建议解压到桌面上,文件路径太深会导致程序打开异常),解压后再用keil5打开。

原理图采用【AD】altium designer打开,文件中有安装包



本文介绍了基于STM32单片机的农业大棚温湿度光照检测报警系统,通过DHT11传感器和光敏传感器采集数据,利用按键设置阈值,实现过热、过低湿度和光照不足时的自动控制,以及LCD1602的数据显示。附带了详细的程序代码、原理图和下载资源。
7451

被折叠的 条评论
为什么被折叠?



