功能介绍:采用stm32单片机作为主控CPU,采用DHT11传感器采集温湿度,采用光敏模块采集当前的光照强度,通过按键设置温度和湿度的阈值,当温度大于阈值,风扇打开进行排气并且蜂鸣器报警,当湿度小于阈值,水泵打开抽水,当光照强度低于设置阈值,LED灯打开进行补光,文末有资料分享:
44-基于stm32单片机温室大棚温湿度光照自动抽水散热(程序+原理图+元器件清单全套资料)

程序打开办法:特别注意:下载资料包以后一定要先解压!!!(建议解压到桌面上,文件路径太深会导致程序打开异常),解压后再用keil5打开。

void KEY_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能PORTA,PORTE时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_1;//KEY0-KEY2
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入
GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA2,3,1
}
int main(void)
{
u32 sgp30_dat;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
delay_init();
uart_init(9600);
OLED_Init();
OLED_ColorTurn(0);
OLED_DisplayTurn(0);
OLED_ShowString(0,0,"TEMP:",16); OLED_ShowString(70,0,"C",16); OLED_ShowString(110,0,"%",16);
OLED_ShowString(0,16," SET:",16);
OLED_ShowString(0,32," LUX:",16);
OLED_ShowString(0,48," SET:",16);
OLED_Refresh();
DHT11_Init();
Adc_Init();
KEY_Init();
LED_Init();
LED=1;Q1=Q2=BEEP=1;
while(1)
{
if(KEY0==0)//按键设置光照阈值
{
gm_buf++;
if(gm_buf>300) gm_buf=50;
}
if(KEY1==0)//按键设置温度阈值
{
wendu++;
if(wendu>99) wendu=1;
}
if(KEY2==0)//按键设置湿度阈值
{
shidu++;
if(shidu>99) shidu=20;
}
gm=(3330-Get_Adc_Average(ADC_Channel_0,10))/10;//读取光敏
DHT11_Read_TempAndHumidity ( & DHT11_Data );//获取传感器温湿度
OLED_ShowNum(50,0,DHT11_Data .temp_int,2,16);//显示温度
OLED_ShowNum(90,0,DHT11_Data .humi_int,2,16);//显示湿度
OLED_ShowNum(50,16,wendu,2,16);//显示设置温度
OLED_ShowNum(90,16,shidu,2,16);//显示设置湿度
OLED_ShowNum(50,32,gm,3,16);//显示光照强度
OLED_ShowNum(50,48,gm_buf,3,16);//显示光敏设置值
OLED_Refresh();
if(DHT11_Data .temp_int>wendu) //温度大于设置
{
Q2=0;
BEEP=0;
}
else
{
Q2=1;
BEEP=1;
}
if(DHT11_Data .humi_int<shidu) //湿度小于设置
{
Q1=0;
}
else
{
Q1=1;
}
if(gm<gm_buf) LED=0;//光照小于设置
else LED=1;
下面是原理图文件展示:



本文介绍了一款基于STM32单片机的温室大棚监控系统,通过DHT11传感器监测温湿度,光敏模块检测光照强度,并利用按键设置阈值控制风扇、水泵和LED灯。程序包括主函数、按键初始化和温湿度光照处理逻辑。

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



