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


下面是程序部分展示(程序有中文注释,新手容易看懂)
部分程序展示://定时器设置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);}//定时器开关void TimerSW( TIM_TypeDef* TIMx, FunctionalState NewState ){TIM_SetCounter(TIMx,0);TIM_Cmd(TIMx,NewState);}char k6,k7;/*wendu,shidu,guangqiang,xiaoshi,fenzhong*/void Display(void){char xxx=0,yyy=0;//T1 温度WrByte1602(0,0,'T'); //.WrByte1602(0,1,'='); //.WrByte1602(0,2,AsciiCode[wendu%100/10]);WrByte1602(0,3,AsciiCode[wendu%10]);WrByte1602(0,4,' ');//T2 湿度WrByte1602(0,5,'H'); //.WrByte1602(0,6,'='); //.WrByte1602(0,7,AsciiCode[shidu%100/10]);WrByte1602(0,8,AsciiCode[shidu%10]);WrByte1602(0,9,' ');//T3 光强WrByte1602(0,10,'G'); //.WrByte1602(0,11,'='); //.WrByte1602(0,12,AsciiCode[guangqiang%1000/100]);WrByte1602(0,13,AsciiCode[guangqiang%100/10]);WrByte1602(0,14,AsciiCode[guangqiang%10]);WrByte1602(0,15,' ');xxx=0;yyy=1;//T6 湿度动作值WrByte1602(1,2,AsciiCode[wendu1%100/10]);WrByte1602(1,3,AsciiCode[wendu1%10]);WrByte1602(1,7,AsciiCode[shidu1%100/10]);WrByte1602(1,8,AsciiCode[shidu1%10]);WrByte1602(1,12,AsciiCode[gm%1000/100]);WrByte1602(1,13,AsciiCode[gm%100/10]);WrByte1602(1,14,AsciiCode[gm%10]);}int main(void){char i=0;float vol;//电压//时钟配置SystemInit();SystemCoreClockUpdate();//引脚配置GPIO_Configuration();//LCD1602初始化Init1602();NVICConfig();//RCC时钟开启RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);//定时器TimerConfig(TIM3,10);//定时器//开启定时器TimerSW(TIM3, ENABLE);//获取光敏电阻阻值,单位K欧ADC_Set();//DS1302数据编码格式需要进行转换PBout(5)=0;//LED灯亮//WriteDS1302Clock(time_buf);while (1){delay_ms(10);//计算光强vol = ADC_GetConversionValue(ADC1);vol = 10*(4095-vol)/vol;//根据阻值计算光强guangqiang = 285.6*pow(vol,-1.168)+0.1;//读取室内温度DHT11_receive(&shidu,&wendu);Display();//按键扫描anjiansaomiao();if(wendu%100>wendu1) Q1=0;else Q1=1;if(shidu%100>shidu1) Q2=0;else Q2=1;if(guangqiang>gm) Q3=0;else Q3=1;
程序打开办法:特别注意:下载资料包以后一定要先解压!!!(建议解压到桌面上,文件路径太深会导致程序打开异常),解压后再用keil5打开。

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


下面是资料包里面包含的相关文件展示

本文介绍了使用STM32单片机设计的农业蔬菜大棚温湿度光照采集控制系统,通过DHT11和光敏传感器监测环境参数,按键设置阈值,实现自动调节和报警。附带详细程序代码和原理图,适合新手学习。
7459

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



