基于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
53
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);
}
}

实验现象

实物图


基于STM32的空气质量检测仪
https://blog.5772447.xyz/posts/f691db9d/
作者
Maskbugzero
发布于
2020年12月30日
许可协议