基于STM32的空气质量检测仪

一个基于STM32的空气质量检测仪项目

项目地址

Maskbugzero/STM32-GP2Y1010AU

一个基于STM32的空气质量检测仪项目

硬件资源

  1. 战舰V3\精英STM32F103开发板
  2. GP2Y1010AU气体检测模块

实现功能

  • 室外粉尘颗粒数据获取及显示

连接方式

电路图

连接方式

主要代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
int main(void)
{
	char str[] = "";
	u16 PM = 0; 
	DHT11_Data_TypeDef DHT11_Data;
	
	delay_init();
	NVIC_Configuration();
	uart_init(115200);
	GP2Y_Adc_Init();  //ADC初始化     
	OLED_Init();
	OLED_ColorTurn(0);//0正常显示,1 反色显示
	OLED_DisplayTurn(0);//0正常显示 1 屏幕翻转显示

	OLED_Refresh();
	OLED_ShowString(2,2,"PM2.5:",16); 
	OLED_ShowString(12,20,"TEM:",16); 
	OLED_ShowString(12,38,"HUM:",16); 
	
	OLED_ShowString(90,2,"ug/m3",12); //PM2.5单位 ug/m3
	OLED_ShowChinese(100,20,0,16); //温度单位 ℃
	OLED_ShowChar(100,38,'%',16);  //湿度单位 %
	
	while(1)
	{
		/* 粉尘传感器获取数据*/
		PM = GetGP2YSingleValue();       //得到pm2.5值 
		if(PM < 10)
			sprintf(str, " %d ",PM);
		else if(PM < 100)
			sprintf(str, "%d ",PM);
		else
			sprintf(str, "%d",PM);
		OLED_ShowString(60,2,(u8 *)str,16);
		
		/* 温湿度传感器获取数据*/
		if( Read_DHT11(&DHT11_Data)==SUCCESS)
		{
			sprintf(str, "%d.%d ℃ ",DHT11_Data.temp_int,DHT11_Data.temp_deci);
			OLED_ShowString(60,20,(u8 *)str,16);
			sprintf(str, "%d.%d",DHT11_Data.humi_int,DHT11_Data.humi_deci);
			OLED_ShowString(60,38,(u8 *)str,16);
		}
		else
		{
			printf("Read DHT11 ERROR!\r\n");//读取数据失败,串口打印:Read DHT11 ERROR.
		}

		OLED_Refresh();
		delay_ms(1000);
	}
}

实验现象

实物图

使用 Hugo 构建
主题 StackJimmy 设计