基于stm32单片机的空气质量监测系统设计-PM2.5+气压+海拔高度+温度+湿度

 本设计的硬件构成:

STM32F103C8T6单片机最小系统板,LCD1602液晶屏,BMP180气压传感器,有源蜂鸣器,DHT11温湿度传感器,按键,GP2Y1010AUOF粉尘传感器,蓝牙模块组成。

功能介绍:

1、本设计可实时监测当前环境的温度、湿度、气压、海拔高度及PM2.5浓度;

2、LCD1602液晶屏有三个界面,第一界面当前温度值和湿度值,第二界面显示当前的气压值和海拔高度,第三个界面为显示当前的测到PM2.5浓度值;

3、使用GP2Y1010AUOF粉尘传感器实时检测空气中的PM2.5值并通过1602显示出来,检测更加准确。

4、当粉尘浓度值高于设定值时,蜂鸣器会发出声光报警;

5、通过蓝牙模块连接手机,可在手机APP上实时监控当前各个数据;

6、按键功能

(1)S1:切换界面;S2:设置键;S3:加一键;S4:减一键;

(2)通过S1键,可切换当前的显示界面;

(2)按S2:按下S2设置键, 依次进入预设PM2.5报警值的调节模式。

(3)按S2键,预设值加。

(4)按S3键,预设值减。

(5)设置成功后,按S4确定键退出,返回到正常模式。

主要物料清单及型号:

显示屏:LCD1602;

单片机:STM32F103C8T6;

温湿度传感器:DHT11;

蜂鸣器:5V有源蜂鸣器;

气压传感器:BMP180;

PM2.5传感器:GP2Y1010AUOF;

蓝牙模块:HC-05/06;

部分程序源码:

//=============================================================================
//函数名称:main
//功能概要:主函数
//参数说明:无
//函数返回:int
//============================================================================

int main(void)
{
    u8 ID = 0;
    u8 key=0;
    u8 buffer[5],i=10;
    u16 hum;
    u16 temp;
    u16 pm25;
    u8 LED_state=0;
    int ControlDelaytime=10;
    delay_init();         //延时函数初始化  
    LED_GPIO_Config();//初始化LED
    USART1_Config();
//    ADC_DMA_Init();
    BMP_Init();
    BMP_ReadCalibrationData();  
    KEY_Init();      //初始化按键
    //RTC_Init();
    Adc_Init();          //ADC初始化    
    TIM3_Int_Init(49,7199);//50ms  
    Lcd_GPIO_init();  //初始化lcd引脚
    Lcd_Init();      //初始化lcd屏幕
    BEEP=1;
  
  
    while (1)
    {
      key=KEY_Scan(0);  //得到键值
      KEY_Handle(key);
      if(time5ms>=100 && set==0)
      {
        time5ms=0;
        
        LED=LED_state;
        if(LED_state==0)
          LED_state=1;
        else
          LED_state=0;
        
        ID = BMP_ReadOneByte(0xd0);
        BMP_UncompemstatedToTrue();
        if (dht11_read_data(buffer) == 0)
        {
            hum = (buffer[0]<<8) + buffer[1] ;
            temp = (buffer[2]<<8) + buffer[3];
          
        }
        pm25 = Get_GP2Y_Average(20);  
        
        if(UI==0)
          display_dht11(temp,hum);
        else if(UI==1)
          display_pressure_altitude(bmp180.p,bmp180.altitude);
        else
          display_pm25(pm25);
        
        APP_data_refresh(temp,hum,bmp180.p,bmp180.altitude,pm25);    //刷新APP数据
      }
      
      if(set==0)
      {
        if(pm_alarm<pm25)
          BEEP=0;
        else
          BEEP=1;
      }
      

    }
}

资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值