[STM32F1] 《st的暑假+PM2.5检测器》

[复制链接]
927|13
 楼主| ningling_21 发表于 2019-7-11 17:01 | 显示全部楼层 |阅读模式
本帖最后由 ningling_21 于 2019-7-11 20:13 编辑

天气好热,刚刚看到活动却发现马上就要结束了,于是抓紧时间参加一个。
此 检测器采用的芯片是STM32F103C8T6,传感器是PMS5003,还有温湿度一体传感器SHT20(未使用),显示屏12864。

虽然这款芯片引脚不算太多但资源丰富,主频72MHZ,128K-FLASH,20KRAM,ADC,DMA,多达37个快速I/O口,7个定时器,9个通信接口,USART,CAN,USB,IIC,一个都不少。

QQ图片20190711195959.jpg QQ图片20190711195950.jpg

  1. int main(void)
  2. {

  3.     uint8_t  l_u8_flag_led =0;
  4.    
  5.     uint16_t  i=0;     

  6.         uint16_t u16_temp =0;
  7.         uint16_t u16_humi =0;
  8.          
  9.     /*初始化gpio,*/
  10.     Sys_gpio_init();
  11. RESET:        
  12.         if(flag_sys_off_stat ==0x5a)
  13.         {
  14.                 //关机并检测按键
  15.                 Init_lcd(0x22);        
  16.                 GPIO_SetBits(GPIOB, GPIO_Pin_5) ;        //LCD电源   
  17.                
  18.                 GPIO_ResetBits(GPIOB, GPIO_Pin_1) ;        //传感器低功耗控制,低电平休眠
  19.                 GPIO_SetBits(GPIOA, GPIO_Pin_1) ;          //RUN
  20.                 while(1)
  21.                 {
  22.                         key_in_Stat=GPIO_ReadInputDataBit(GPIOB , GPIO_Pin_11);//按键输入
  23.                         if( key_in_Stat<1)
  24.                         {
  25.                                 GPIO_ResetBits(GPIOB, GPIO_Pin_5) ;//LCD电源   
  26.                                 GPIO_ResetBits(GPIOB, GPIO_Pin_0) ;//背光
  27.                                 GPIO_SetBits(GPIOB, GPIO_Pin_1) ;//传感器低功耗控制,低电平休眠
  28.                                 GPIO_SetBits(GPIOB, GPIO_Pin_12);  //CS =1;
  29.                                 break;
  30.                         }
  31.                 }
  32.         }
  33.     /* USART1 config */
  34.     delay_init();   
  35.     //------------------------------------------------------------------
  36.         Init_lcd(0x24);          //LCD对比度调节        
  37.         SET_screen();//显示图片,欢迎画面
  38.         USART2_Config();            //串口2
  39.     NVIC_Configuration();
  40.     /* enable adc1 and config adc1 to dma mode */
  41.     //------------------------------------------------------------------

  42.     Init_data();
  43.         for(i=0;i<50000;i++)
  44.         {
  45.                    u16_pm25=100;
  46.                while(u16_pm25--);
  47.         }
  48.         clr_screen();
  49.         for(i=0;i<5000;i++);                        
  50.     //------------------------------------------------------------------
  51.         //------------------------------------------------------------------
  52.         l32_run_cnt=10000;                        
  53.         while(l32_run_cnt--);
  54.         Disp_lcd_init();
  55.     //------------------------------------------------------------------
  56.     Exti_init();

  57.         Tim2_init();    //        
  58.         l32_run_cnt=0;
  59.         u16_pm25=0;

由于手头没有温湿度传感器所以屏幕没显示当前的温度和湿度,如果换上带温湿度一体的PM2.5传感器则可以显示。



ST的产品线做的越来越广,芯片资源做的越来越丰富,ST发展芝麻开花节节高!






一路向北lm 发表于 2019-7-11 22:17 | 显示全部楼层
不错啊,赞一个

评论

谢谢  发表于 2019-7-11 22:21
磨砂 发表于 2019-8-8 11:42 | 显示全部楼层
有这种专用传感器吗
晓伍 发表于 2019-8-8 11:47 | 显示全部楼层
精度能达到多少
 楼主| ningling_21 发表于 2019-8-8 13:34 | 显示全部楼层
磨砂 发表于 2019-8-8 11:42
有这种专用传感器吗

有只测PM2.5的
捉虫天师 发表于 2019-8-8 23:26 | 显示全部楼层
这玩意儿靠谱不
捉虫天师 发表于 2019-8-8 23:26 | 显示全部楼层
这玩意儿靠谱不
 楼主| ningling_21 发表于 2019-8-9 08:43 | 显示全部楼层

主要看传感器
磨砂 发表于 2019-8-9 10:51 | 显示全部楼层

这种传感器的原理是什么啊
 楼主| ningling_21 发表于 2019-8-9 13:57 | 显示全部楼层
磨砂 发表于 2019-8-9 10:51
这种传感器的原理是什么啊

颗粒物阻挡光线造成光线散射
磨砂 发表于 2019-8-12 09:31 | 显示全部楼层
ningling_21 发表于 2019-8-9 13:57
颗粒物阻挡光线造成光线散射

那如果是大颗粒的话 如何进行滤除呢

评论

有PM10和PM2.5两种数据参数输出  发表于 2019-8-12 09:40
 楼主| ningling_21 发表于 2019-8-12 09:39 | 显示全部楼层
磨砂 发表于 2019-8-12 09:31
那如果是大颗粒的话 如何进行滤除呢

搞空气净化吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5014

主题

17817

帖子

51

粉丝
快速回复 在线客服 返回列表 返回顶部