256-基于stm32单片机CO2氨气温湿度检测蓝牙上传(源程序+原理图+元件清单)

  一:功能介绍:

1、系统组成:采用stm32f103c8t6核心板+SGP30传感器+MQ137氨气传感器+DHT11温湿度传感器+OLED显示屏+蓝牙HC05模块+继电器+按键+水泵+风扇
2、通过DHT11传感器采集温湿度,显示到OLED上面;
3、通过MQ137传感器检测氨气浓度,显示到OLED上面;
4、通过SGP30传感器检测CO2浓度,显示到OLED上面;
5、当温度、湿度、CO2浓度大于对应的阈值(程序可以调整),打开风扇通风;
6、当温度低于阈值(程序可调),开启加热(LED灯模拟)
7、当湿度低于阈值(程序可调),打开水泵进行抽水;
8、可以通过按键手动打开风扇和水泵;
9、全部数据通过蓝牙模块上传到手机APP;

二:实物演示视频

256-基于stm32单片机CO2氨气温湿度检测蓝牙上传数据

三:程序代码展示(采用C语言编写,使用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," NH3:",16);  OLED_ShowString(90,48,"PPM",16);
	OLED_Refresh();
	Adc_Init();	DHT11_Init();
	LED_Init();
	LED=0;Q1=Q2=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");
	}
	while(1)
	{

		mq137=Get_Adc_Average(ADC_Channel_1,10)-280;
		if(mq137<0) mq137=0;
		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值

		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,mq137,4,16);//显示mq137
			OLED_Refresh();
		if(DHT11_Data .temp_int>25||DHT11_Data .humi_int>90||CO2Data>100||mq137>100) Q1=0;//温度湿度CO2过高 开风扇通风
		else Q1=1;
		
		if(DHT11_Data .temp_int<10) 	LED=0;//温度过低 开启加热  led灯模拟
		else LED=1;
		
		if(DHT11_Data .humi_int<30) 	Q2=0;//湿度低于30  开启洒水电机
		else Q2=1;
		
		if(K1==0) Q1=0;
		if(K2==0) Q2=0;
		printf("CO2:%dppm\r\n",CO2Data);//蓝牙上传数据
		printf("WENDU:%d C\r\nSHIDU:%d \r\n",DHT11_Data .temp_int,DHT11_Data .humi_int);//蓝牙上传数据
		printf("NH3:%dppm\r\n",mq137);//蓝牙上传数据
	}
}


四:原理图文件展示(采用AD(Altium Designer)打开)

 五:实物图展示:

六: 资料清单展示:

资料包百度网盘下载链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

电子工程DIY工作室

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

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

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

打赏作者

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

抵扣说明:

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

余额充值