【STM32项目】PM2.5监测系统

🤞大家好,这里是5132单片机毕业设计,今天给大家分享的是《基于STM32的PM2.5监测系统设计》

设备的详细功能见网盘中的文章《基于STM32的PM2.5监测系统设计》:

链接:https://pan.baidu.com/s/1uWSZX2zbZwy9sYwwnvyktQ?pwd=5132

提取码:5132

   目录

一、设计要求

二、系统功能

三、演示视频和实物

四、系统设计框图

五、软件设计流程图

六、原理图

七、主程序

八、总结

九、资料内容


 欢迎大家定制,非诚勿扰!


一、设计要求

 本设计系统以STM32F103C8T6单片机为基本核心,主要包括粉尘传感器采集模块,PM2.5传感器 GP2Y1014AU粉尘传感器,OLED显示模块,报警模块。单片机作为控制模块,显示屏作为显示模块。设计系统通过传感器电路检测 PM2.5粉尘信息,由 AD 模数转换,经过单片机的计算,最后在液晶上面显示。


二、系统功能

1. 灰尘传感器:实现对灰尘颗粒的感应。

2.A/D 转换电路:用于完成传感器输入模拟量转换成数字量

3.供电电路:实现对整体系统的供电。

4.单片机最小系统: AT89S52  作为微处理器,包含时钟电路,复位电路控制其他的设备。

5. 显示液晶:用于完成对系统测量值和报警值得显示。

6.按键电路:用于完成报警值参数调整的功能。7.报警电路:实现系统的报警。


三、演示视频和实物

D3-基于STM32的PM2.5监测系统设计

 


四、系统设计框图

五、软件设计流程图

 本系统采用 STM32F103C8T6作为单片机的微控制中心,软件系统的设计主要包括系统初始化模块、驱动传感器模块、AD 转换模块、PM2.5 计算 、OLED显示模块, 每个模块具有不可磨灭的作用发挥主要作用,STM32F103C8T6实现硬件设备的单片机控制通过软件检测显示PM2.5 值。


六、原理图

七、主程序

#include "stm32f10x.h" 
#include <string.h>
#include "sys.h"  
#include "delay.h"
#include "OLED.h"
#include "Key.h"
#include "OLED.h"
#include "Serial.h"
#include "LED.h"
#include "Buzzer.h"
//#include "AD.h"
#include "Buzzer.h"
#include "JiDianQi.h"
#include "MyRTC.h"
#include "gp2y1014au.h"
uint16_t RTC_Time1[] = {7, 0, 0};    
uint16_t RTC_Time2[] = {19, 0, 0}; 
uint16_t AD0,AD1,AD2,AD3;         
uint8_t KeyNum;      
uint16_t shi;           
u8 state=1;    
u8 state1=1;   
u8 state2=1;   
int main(void)     
{
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);   /
    delay_init();	   
	  SystemInit();
	  
	  Key_Init();   
		LED_Init();     
		OLED_Init(); 
		Buzzer_Init();
  
    JIDIANQI_Init();
	  MyRTC_Init();
	
			ADCX_Init();
			GP2Y_Init();

      OLED_ShowString(1, 4, "XXXX-XX-XX");
	   OLED_ShowString(2, 5, "XX:XX:XX");
		OLED_ShowString(3,1,"PM2.5:");
		OLED_ShowChinese(4,1,63);   //Ë®±ÃºÍ²¹¹â
		OLED_ShowChinese(4,2,64);
		OLED_ShowString(4,5,":");
		OLED_ShowChinese(4,4,13);   		
		
		Serial_Init();   
		
		JIDIANQI1_OFF();
    while (1)
    {	
			MyRTC_ReadTime();
		    OLED_ShowNum(1, 4, MyRTC_Time[0], 4);
	    	OLED_ShowNum(1, 9, MyRTC_Time[1], 2);
		    OLED_ShowNum(1, 12, MyRTC_Time[2], 2);
			OLED_ShowNum(2, 5, MyRTC_Time[3], 2);
		    OLED_ShowNum(2, 8, MyRTC_Time[4], 2);
	     	OLED_ShowNum(2, 11, MyRTC_Time[5], 2);
			
          KeyNum = Key_GetNum();              
			if (KeyNum == 1)    //Ò»¼ü¿ØÖƶàýÌå   PB10
			{
				delay_ms(20);
				if (KeyNum == 1)
				{
				    state++;
					if(state>1)
					{
							state=0;
					}
				} 
			}
			if(state==0)
			{
				 LED1_ON();             //¿ªÆôָʾµÆ
	             OLED_ShowChinese(4,8,12);
					   shi=Get_PM25_Average_Data();
						printf("\r\nPM2.5=%d\r\n",  shi); 		
						OLED_ShowNum(3, 10, shi, 2);    //oledÏÔʾ¹âÕÕÇ¿¶È
						OLED_ShowString(3, 12, "%");
				  if(shi>80)
					{
					     Buzzer_Turn();
						OLED_ShowChinese(4,4,12);
					}else
					{
					     Buzzer_OFF();
						OLED_ShowChinese(4,4,13);
					}
							}
			if(state==1)
			{
				 LED1_OFF(); 				 
				 Buzzer_OFF();
			 	 JIDIANQI1_OFF();
                OLED_ShowChinese(4,8,13);
			}
			}
}

八、总结

设计了一款PM25浓度检测及报警系统,本设计系统以STM32F103C8T6单片机为基本核心,主要包括粉尘传感器采集模块,PM2.5传感器 GP2Y1014AU粉尘传感器,OLED显示模块,报警模块。把测量值显示在显示器上,当检测浓度大于预设浓度时 LED 灯亮并且蜂鸣器报警。


九、资料内容