找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3753|回复: 4
打印 上一主题 下一主题
收起左侧

用STM32F4做一个实时监测PM2.5的系统源程序

[复制链接]
跳转到指定楼层
楼主
       近日学习STM32串口通信,手上又有现成的PM2.5传感器和蓝牙HC-06模块,于是做了一个小型的空气检测并通过蓝牙实时往手机发送的小系统,并且通过L298N电机驱动可以控制一个电机进行空气清新,因为电机还没到,而且空气净化的过滤器也没有,所以我这个暂时只是一个简单的实现空气净化的模拟机,具体的空气过滤环节还请读者自行设计。
      这是我这次使用的传感器图片,在某宝上可以买到,100大洋左右

      这是程序运行的结果,天津这两天空气质量太差了,学校寝室室内浓度都100+




      程序的话,我在这儿就不粘出来了,下载了那个包都能看见,接线也在包里,四个按键的作用都有说明,我在这儿就不一一解释了,那个传感器可以测PM2.5和PM10,一秒发送十个字节,其中四个字节是有效的数据,如果购买传感器的话,都会有的,具体实现的功能很简单,就控制电机转的三个挡位,还有一个实时发送数据并自动控制电机的挡位,如果想要PM10数据的读者可自行设计一下。
      刚入门单片机没多久,大神勿喷。

接线
  电机PWM输出→PF9
PM2.5传感器TX→PA10
    蓝牙HC06RX→PA9
探索者四个按键功能
up→根据PM2.5数据自动控制电机并实时上传数据到蓝牙串口
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);//设置系统中断优先级分组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");        //先在固定位置显示小数点
  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.         }
复制代码

所有资料51hei提供下载:
空气净化器(程序).7z (336.7 KB, 下载次数: 66)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:591243 发表于 2019-11-30 20:09
自己上传个程序自己手贱点了下载,被扣了5个积分。。。。亏死了

板凳
ID:121238 发表于 2019-12-1 22:29 | 只看该作者
good,谢谢
回复

使用道具 举报

地板
ID:63317 发表于 2019-12-2 16:30 | 只看该作者

感谢分享 下载了
回复

使用道具 举报

5#
ID:46999 发表于 2019-12-7 16:15 | 只看该作者
感谢分享 先留个爪
回复

使用道具 举报

6#
ID:903077 发表于 2021-4-22 20:21 | 只看该作者
问一下,这是PM2.5的哪个的模块呢,GP2Y1014吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表