36-基于stm32单片机室内环境温湿度CO2光敏检测OLED显示源程序、原理图、PCB、元件清单实物制作

文章介绍了使用STM32单片机配合SGP30、光敏传感器和DHT11实现的室内环境监控系统,能实时显示CO2浓度、光照强度及温湿度,并通过继电器和蜂鸣器进行通风和报警。提供了完整的程序代码和硬件连接说明。

功能介绍:采用stm32单片机作为主控CPU,采用SGP30传感器采集CO2浓度,采用光敏传感器采集当前的光照强度,采用DHT11采集温湿度,并且将采集到的数据显示到OLED显示屏上面,当CO2浓度大于一定值(程序可调节),继电器打开风扇进行排气,当光照强度低于一定值时,蜂鸣器进行报警提醒,可以通过按键手动打开继电器进行风扇排气,文末有资料分享:

36-基于stm32单片机室内环境温湿度CO2光敏检测OLED显示(程序+原理图+PCB+元件清单全套资料)

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

int main(void)
{
	u32 sgp30_dat;
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
	delay_init();
	uart_init(9600);
	SGP30_Init();   //初始化SGP30
	delay_ms(100);
	SGP30_Write(0x20,0x08);
	sgp30_dat = SGP30_Read();//读取SGP30的值
	CO2Data = (sgp30_dat & 0xffff0000) >> 16;
	TVOCData = sgp30_dat & 0x0000ffff;	
	OLED_Init();
	OLED_ColorTurn(0);
	OLED_DisplayTurn(0);	
	OLED_ShowString(0,0,"TEMP:",16);   OLED_ShowString(70,0,"C",16);
	OLED_ShowString(0,16,"HUMI:",16); 	OLED_ShowString(70,16,"%",16);
	OLED_ShowString(0,32," CO2:",16);  OLED_ShowString(90,32,"PPM",16);
	OLED_ShowString(0,48," LUX:",16);
	OLED_Refresh();
	DHT11_Init();
	Adc_Init();
	LED_Init();
	LED=0;Q1=1;
	while(CO2Data == 400 && TVOCData == 0)
	{
		SGP30_Write(0x20,0x08);
		sgp30_dat = SGP30_Read();//读取SGP30的值
		CO2Data = (sgp30_dat & 0xffff0000) >> 16;//取出CO2浓度值
		TVOCData = sgp30_dat & 0x0000ffff;			 //取出TVOC值
		printf("正在检测中...\r\n");
		delay_ms(500);
	}
	while(1)
	{

		gm=4096-Get_Adc_Average(ADC_Channel_1,10);
		DHT11_Read_TempAndHumidity ( & DHT11_Data );//获取传感器湿度
		SGP30_Write(0x20,0x08);
		sgp30_dat = SGP30_Read();//读取SGP30的值
		CO2Data = ((sgp30_dat & 0xffff0000) >> 16)-400;//取出CO2浓度值
		TVOCData = sgp30_dat & 0x0000ffff;       //取出TVOC值
		printf("CO2:%dppm\r\nTVOC:%dppd\r\n",CO2Data,TVOCData);//蓝牙上传数据
		OLED_ShowNum(50,0,DHT11_Data .temp_int,2,16);//显示温度数据
		OLED_ShowNum(50,16,DHT11_Data .humi_int,2,16);//显示湿度
		OLED_ShowNum(50,32,CO2Data,4,16);//显示CO2
		OLED_ShowNum(50,48,gm,4,16);//显示gm
			OLED_Refresh();
		if(CO2Data>500) Q1=0;
		else Q1=1;
		
		if(CO2Data>500||gm<2000) 	LED=1;
		else LED=0;
		
		if(K1==0) Q1=0;
		//delay_ms(500);
	}
}

 下面是原理图展示:

百度云盘资料分享链接 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值