|
|
近日學(xué)習(xí)STM32串口通信,手上又有現(xiàn)成的PM2.5傳感器和藍(lán)牙HC-06模塊,于是做了一個(gè)小型的空氣檢測(cè)并通過(guò)藍(lán)牙實(shí)時(shí)往手機(jī)發(fā)送的小系統(tǒng),并且通過(guò)L298N電機(jī)驅(qū)動(dòng)可以控制一個(gè)電機(jī)進(jìn)行空氣清新,因?yàn)殡姍C(jī)還沒(méi)到,而且空氣凈化的過(guò)濾器也沒(méi)有,所以我這個(gè)暫時(shí)只是一個(gè)簡(jiǎn)單的實(shí)現(xiàn)空氣凈化的模擬機(jī),具體的空氣過(guò)濾環(huán)節(jié)還請(qǐng)讀者自行設(shè)計(jì)。
這是我這次使用的傳感器圖片,在某寶上可以買到,100大洋左右
,
這是程序運(yùn)行的結(jié)果,天津這兩天空氣質(zhì)量太差了,學(xué)校寢室室內(nèi)濃度都100+
程序的話,我在這兒就不粘出來(lái)了,下載了那個(gè)包都能看見(jiàn),接線也在包里,四個(gè)按鍵的作用都有說(shuō)明,我在這兒就不一一解釋了,那個(gè)傳感器可以測(cè)PM2.5和PM10,一秒發(fā)送十個(gè)字節(jié),其中四個(gè)字節(jié)是有效的數(shù)據(jù),如果購(gòu)買傳感器的話,都會(huì)有的,具體實(shí)現(xiàn)的功能很簡(jiǎn)單,就控制電機(jī)轉(zhuǎn)的三個(gè)擋位,還有一個(gè)實(shí)時(shí)發(fā)送數(shù)據(jù)并自動(dòng)控制電機(jī)的擋位,如果想要PM10數(shù)據(jù)的讀者可自行設(shè)計(jì)一下。
剛?cè)腴T單片機(jī)沒(méi)多久,大神勿噴。
接線
電機(jī)PWM輸出→PF9
PM2.5傳感器TX→PA10
藍(lán)牙HC06RX→PA9
探索者四個(gè)按鍵功能
up→根據(jù)PM2.5數(shù)據(jù)自動(dòng)控制電機(jī)并實(shí)時(shí)上傳數(shù)據(jù)到藍(lán)牙串口
2→電機(jī)全速運(yùn)行
1→電機(jī)中速運(yùn)行
0→電機(jī)慢速運(yùn)行
單片機(jī)源程序如下:
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "led.h"
- #include "beep.h"
- #include "key.h"
- #include "lcd.h"
- #include "pwm.h"
- #include "exti.h"
- u8 MOTOR;
- int main(void)
- { u8 key; //保存鍵值
- u8 x=0;
- u8 t;
- u8 T1;
- u8 T2;
- float temp;
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置系統(tǒng)中斷優(yōu)先級(jí)分組2
- delay_init(168); //延時(shí)初始化
- uart_init(9600); //串口初始化波特率為115200
- LED_Init(); //初始化與LED連接的硬件接口
- KEY_Init(); //初始化與按鍵連接的硬件接口
- LCD_Init(); //初始化LCD FSMC接口
- EXTIX_Init(); //初始化外部中斷輸入
- TIM14_PWM_Init(2000-1,840-1);
- POINT_COLOR=RED; //畫筆顏色:紅色
- while(1)
- {
- POINT_COLOR=RED;
- LCD_ShowString(30,40,210,24,24,"The Air Purifier");
- LCD_ShowString(30,70,200,16,16,"PRPOTOTYPE TEST");
- LCD_ShowString(30,90,200,16,16,"TJUT");
- LCD_ShowString(30,180,200,16,16,"DATA:");
- LCD_ShowString(78,210,200,16,16,"PM2.5:000.0 ug/m^3"); //先在固定位置顯示小數(shù)點(diǎn)
- T1=USART_RX_BUF[1];
- T2=USART_RX_BUF[2];
- temp=(float)(T1+(T2*256))/10;
- if(MOTOR)
- {
- printf("\r\nPM2.5:");
- printf("%5.1f\r\n",temp);
- if (temp>200)
- TIM_SetCompare1(TIM14,1999);
- else
- TIM_SetCompare1 (TIM14,temp*10);
- }
- T2=temp;
- LCD_ShowxNum(126,210,T2,3,16,0);
- temp-=T2;
- temp*=10;
- LCD_ShowxNum(158,210,temp,1,16,0);
- LED0=!LED0;
- delay_ms(1000);
-
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
空氣凈化器(程序).7z
(336.7 KB, 下載次數(shù): 66)
2019-12-1 03:09 上傳
點(diǎn)擊文件名下載附件
主程序和功能介紹
|
評(píng)分
-
查看全部評(píng)分
|