查看: 398|回复: 1

[中移One NET] 麒麟座MINI开发板--温湿度、灰尘浓度监测

[复制链接]

1

主题

0

好友

34

积分

白丁

Rank: 1

  • TA的每日心情
    奋斗
    2017-9-11 22:38
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2017-9-11 23:16:10 |显示全部楼层
    本帖最后由 yayasoso 于 2017-9-11 23:26 编辑

    前几天花了点时间看了下麒麟座mini板的资料,决定先从底层硬件和外围传感器入手,将手头的一些传感器都接入开发板。目前手头有温湿度传感器、灰尘传感器、光照传感器、气压传感器等,今晚实现了温湿度、灰尘浓度的OLED显示。
    1.外设与麒麟座MINI开发板的连接
      MINI开发板没有带显示屏,所以外接了SPI的OLED显示屏,为了方便连接直接使用了杜邦线,看起来比较凌乱。

      OLED屏端口连接:
      //        CLK=PA0  
    //        MOSI=PA1
      //        DC=PA6
      //        CS1=PA7
      //        FSO=PA4
      //        CS2=PA5

    灰尘传感器端口连接:
      // RX=PA3

    外设与开发板的连接1

    外设与开发板的连接1

    外设与开发板的连接2

    外设与开发板的连接2


    2.OLED显示
    液晶屏选用中景园电子0.96寸OLED模块
    该模块分辨率为128*64,内置字库,SPI/IIC两种接口方式

    OLED显示

    OLED显示

    3.灰尘传感器
    夏普GP2Y1051AU0F灰尘传感器,5V供电,串口输出,波特率2400

    灰尘传感器

    灰尘传感器


    4.所用的OLED及传感器数据手册
    中景园0.96OLED使用说明
    GP2Y1051AU0F规格书_夏普二代PM2.5.pdf (3.01 MB, 下载次数: 0)
    GB2312简体中文编码表.pdf (1.2 MB, 下载次数: 0)
    GT20L16S1Y用户手册V35.pdf (407.55 KB, 下载次数: 0)
    原理图 .pdf (62.53 KB, 下载次数: 0)
    中景园电子0.96寸OLED显示屏_STM32F103RCT6系列_带字库.zip (1.8 MB, 下载次数: 0)
    5.代码
    由于整个工程是在SHT20-温湿度传感器工程的基础上添加了OLED显示和灰尘传感器的读取,OLED的完整驱动已给出,这里我就贴上灰尘传感器的读取代码。
    1. /*********************************************************************************
    2. *文件名 :USART1
    3. * 描述    :GP2Y10灰尘传感器读取
    4.                波特率2400
    5. * 作者   :
    6. * 时间   :2017-09
    7. **********************************************************************************/
    8. #include "usart1.h"
    9. #include "stdarg.h"
    10. #include "stm32f10x_usart.h"
    11. #include "misc.h"
    12. #include "stdio.h"                  
    13. #include "string.h"           

    14. uint8_t RxBuffer1[100];
    15. float Ud;
    16. float vout;
    17. extern float AQI;
    18. char len_rx;
    19. uint8_t RxCounter1;

    20. /*
    21. *函数:USART_Config
    22. * 描述:串口配置,串口2,波特率2400
    23. */
    24. void USART_Config(void)
    25. {
    26.         GPIO_InitTypeDef GPIO_InitStructure;
    27.   USART_InitTypeDef USART_InitStructure;
    28.         
    29.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
    30.   RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2 , ENABLE);
    31.         
    32.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
    33.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    34.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    35.         GPIO_Init(GPIOA, &GPIO_InitStructure);   

    36.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
    37.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    38.         GPIO_Init(GPIOA, &GPIO_InitStructure);

    39.         USART_InitStructure.USART_BaudRate = 2400;
    40.         USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    41.         USART_InitStructure.USART_StopBits = USART_StopBits_1;
    42.         USART_InitStructure.USART_Parity = USART_Parity_No ;
    43.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    44.         USART_InitStructure.USART_Mode = USART_Mode_Rx;
    45.         USART_Init(USART2, &USART_InitStructure);
    46.         USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);
    47.         USART_Cmd(USART2, ENABLE);
    48. }
    49. /*
    50. * 函数名:NVIC_Configuration
    51. * 描述:串口2中断配置
    52. */
    53. void NVIC_Configuration(void)
    54. {
    55.   NVIC_InitTypeDef NVIC_InitStructure;
    56.                               
    57.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);            

    58.   NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;                                   
    59.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;                  
    60.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;                              
    61.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                      
    62.   NVIC_Init(&NVIC_InitStructure);
    63.   
    64. }
    65. /*
    66. * 函数名:conc_dust
    67. * 描述:灰尘浓度值转空气质量指数AQI
    68. */
    69. void conc_dust(void)
    70. {
    71.   unsigned char verify;
    72.   verify=RxBuffer1[len_rx-3]+RxBuffer1[len_rx-4]+RxBuffer1[len_rx-5]+RxBuffer1[len_rx-6];  //?????
    73.    if(RxBuffer1[len_rx-2]==verify)
    74.      {
    75.        vout=(float)(RxBuffer1[len_rx-6]*256.0+RxBuffer1[len_rx-5])/1024.0*5.0;//vout=(((RxBuffer1[1]<<8)+RxBuffer1[2])>>10)*5;  //???????
    76.        Ud=(float)vout/0.35*100; //k=0.35v/0.1mg=0.35v/100ug
    77.        if(Ud<35)AQI=Ud*50.0/35.0;
    78.        else if(Ud>=35&&Ud<75)AQI=50+50*(Ud-35)/40.0;
    79.        else if(Ud>=75&&Ud<115)AQI=100+50*(Ud-75)/40.0;
    80.        else if(Ud>=115&&Ud<150)AQI=100+50*(Ud-115)/40.0;
    81.        else if(Ud>=150&&Ud<250)AQI=200+100*(Ud-150)/100;
    82.        else if(Ud>=250&&Ud<350)AQI=300+100*(Ud-250)/100;
    83.        else if(Ud>=350&&Ud<500)AQI=400+100*(Ud-350)/150;
    84.      }
    85.   USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);
    86. }
    87. /*
    88. * 函数名:USART2_IRQHandler
    89. *描述:串口2接收中断
    复制代码
    回复

    使用道具 举报

    1

    主题

    0

    好友

    34

    积分

    白丁

    Rank: 1

  • TA的每日心情
    奋斗
    2017-9-11 22:38
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2017-9-11 23:28:25 |显示全部楼层
    怎么代码显示不完整?编辑了几次都不行只好手动贴了!
    串口接收中断代码:

    void USART2_IRQHandler(void)     
    {
      if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)           
      {        
          RxBuffer1[RxCounter1++] = USART_ReceiveData(USART2);
          if(RxBuffer1[RxCounter1-7]==0xaa && RxBuffer1[RxCounter1-1]==0xff)
          {  
           USART_ITConfig(USART2, USART_IT_RXNE, DISABLE);  
           len_rx=RxCounter1;
           RxCounter1=0;
          };
      }
    }
    /*********************************END OF FILE********************************/
    回复

    使用道具 举报

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

    关闭

    站长推荐上一条 /3 下一条

    手机版|爱板网 |网站地图  

    GMT+8, 2017-9-26 08:05 , Processed in 0.178718 second(s), 12 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部