找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4604|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

用STM32F4做一個實時監(jiān)測PM2.5的系統(tǒng)源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:591243 發(fā)表于 2019-11-30 20:05 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
       近日學(xué)習(xí)STM32串口通信,手上又有現(xiàn)成的PM2.5傳感器和藍(lán)牙HC-06模塊,于是做了一個小型的空氣檢測并通過藍(lán)牙實時往手機發(fā)送的小系統(tǒng),并且通過L298N電機驅(qū)動可以控制一個電機進(jìn)行空氣清新,因為電機還沒到,而且空氣凈化的過濾器也沒有,所以我這個暫時只是一個簡單的實現(xiàn)空氣凈化的模擬機,具體的空氣過濾環(huán)節(jié)還請讀者自行設(shè)計。
      這是我這次使用的傳感器圖片,在某寶上可以買到,100大洋左右 ,

      這是程序運行的結(jié)果,天津這兩天空氣質(zhì)量太差了,學(xué)校寢室室內(nèi)濃度都100+




      程序的話,我在這兒就不粘出來了,下載了那個包都能看見,接線也在包里,四個按鍵的作用都有說明,我在這兒就不一一解釋了,那個傳感器可以測PM2.5和PM10,一秒發(fā)送十個字節(jié),其中四個字節(jié)是有效的數(shù)據(jù),如果購買傳感器的話,都會有的,具體實現(xiàn)的功能很簡單,就控制電機轉(zhuǎn)的三個擋位,還有一個實時發(fā)送數(shù)據(jù)并自動控制電機的擋位,如果想要PM10數(shù)據(jù)的讀者可自行設(shè)計一下。
      剛?cè)腴T單片機沒多久,大神勿噴。

接線
  電機PWM輸出→PF9
PM2.5傳感器TX→PA10
    藍(lán)牙HC06RX→PA9
探索者四個按鍵功能
up→根據(jù)PM2.5數(shù)據(jù)自動控制電機并實時上傳數(shù)據(jù)到藍(lán)牙串口
2→電機全速運行
1→電機中速運行
0→電機慢速運行

單片機源程序如下:
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"
  5. #include "beep.h"
  6. #include "key.h"
  7. #include "lcd.h"
  8. #include "pwm.h"
  9. #include "exti.h"


  10. u8 MOTOR;
  11. int main(void)
  12. { u8 key;           //保存鍵值
  13.         u8 x=0;
  14.         u8 t;
  15.         u8 T1;
  16.         u8 T2;
  17.         float temp;
  18.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置系統(tǒng)中斷優(yōu)先級分組2
  19.         delay_init(168);                //延時初始化
  20.         uart_init(9600);        //串口初始化波特率為115200
  21.         LED_Init();                                  //初始化與LED連接的硬件接口
  22.         KEY_Init();       //初始化與按鍵連接的硬件接口
  23.         LCD_Init();           //初始化LCD FSMC接口
  24.         EXTIX_Init();       //初始化外部中斷輸入
  25.         TIM14_PWM_Init(2000-1,840-1);
  26.         POINT_COLOR=RED;      //畫筆顏色:紅色  
  27.         while(1)
  28.         {
  29.                 POINT_COLOR=RED;
  30.                 LCD_ShowString(30,40,210,24,24,"The Air Purifier");       
  31.                 LCD_ShowString(30,70,200,16,16,"PRPOTOTYPE TEST");
  32.                 LCD_ShowString(30,90,200,16,16,"TJUT");

  33.                 LCD_ShowString(30,180,200,16,16,"DATA:");             
  34.         LCD_ShowString(78,210,200,16,16,"PM2.5:000.0 ug/m^3");        //先在固定位置顯示小數(shù)點
  35.                 T1=USART_RX_BUF[1];            
  36.                 T2=USART_RX_BUF[2];
  37.                 temp=(float)(T1+(T2*256))/10;
  38.                 if(MOTOR)
  39.                 {
  40.                         printf("\r\nPM2.5:");
  41.                         printf("%5.1f\r\n",temp);
  42.                         if (temp>200)
  43.                         TIM_SetCompare1(TIM14,1999);                       
  44.       else
  45.                 TIM_SetCompare1        (TIM14,temp*10);
  46.                 }
  47.                 T2=temp;                           
  48.                 LCD_ShowxNum(126,210,T2,3,16,0);
  49.     temp-=T2;
  50.     temp*=10;   
  51.     LCD_ShowxNum(158,210,temp,1,16,0);   
  52.                 LED0=!LED0;         
  53.                 delay_ms(1000);
  54.                
  55.                 }
  56.         }
復(fù)制代碼

所有資料51hei提供下載:
空氣凈化器(程序).7z (336.7 KB, 下載次數(shù): 66)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:591243 發(fā)表于 2019-11-30 20:09
自己上傳個程序自己手賤點了下載,被扣了5個積分。。。。虧死了

板凳
ID:121238 發(fā)表于 2019-12-1 22:29 | 只看該作者
good,謝謝
回復(fù)

使用道具 舉報

地板
ID:63317 發(fā)表于 2019-12-2 16:30 | 只看該作者

感謝分享 下載了
回復(fù)

使用道具 舉報

5#
ID:46999 發(fā)表于 2019-12-7 16:15 | 只看該作者
感謝分享 先留個爪
回復(fù)

使用道具 舉報

6#
ID:903077 發(fā)表于 2021-4-22 20:21 | 只看該作者
問一下,這是PM2.5的哪個的模塊呢,GP2Y1014嗎
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表