0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

室内空气质量检测器的设计与实现

CHANBAEK 来源:木南创智 作者:尹家军 2022-12-13 17:17 次阅读

冬天我们大多会关闭门窗,而依靠暖通空调设备来维持室内温度。而在保证居室温度的同时,我们也希望保持居室内大气环境的健康度。鉴于此,我们设计了一个简单的室内空气质量检测器。

1、系统概述

  我们依靠暖通空调设备来维持室内温度、湿度和通风水平,以保证居住者的健康和舒适。所以我们希望设计一个小巧的、简单的、低成本室内空气质量检测器来随时监测我们居室内的空气质量。

  一般来说,我们关心的居室环境的温度、湿度、可吸入颗粒物浓度、挥发性有机物的浓度等。当然还有二氧化炭浓度等其它一些参数,不过这次我们只考虑温度、湿度、可吸入颗粒物浓度、挥发性有机物的浓度。

  对于这个室内空气检测器,我们的基本想法是设计一个可以快速成型、监测温度、湿度、可吸入颗粒物浓度、挥发性有机物浓度的手持设备。这台室内空气质量检测器温湿度、可吸入颗粒物浓度、挥发性有机物浓度并可以实时显示出来,并可以将检测出的数据向外传送。

2、硬件设计

  根据前面的描述,我们使用一个温湿度传感器来监测温度和湿度、一个可吸入颗粒物激光检测传感器来检测可吸入颗粒物浓度,一个VOC传感器来检测挥发性有机物浓度。

  为了快速实现一个室内空气质量检测器,我们采用我们所熟知的传感器及其他相应设备来实现。我们使用SHT20来实现温湿度数据的检测;使用SGP40来检测VOC浓度;使用HLPM025K3激光PM2.5传感器来检测可吸入颗粒物浓度;使用OLED来显示数据;使用串口来实现数据的传送。而处理器我们采用STM32F103C8T6来实现。

  HLPM025K3激光PM2.5传感器数据接口为TTL串行口,所以我们采用USART1端口来与之通讯。SHT20传感器的数据接口为I2C接口,我们使用I2C1来与之通讯。SGP40传感器数据接口为I2C接口,我们使用I2C2来与之通讯。显示屏我们采用了SPI接口的0.96寸OLED,所以我们使用SPI1端口来与之通讯。数据传输我们采用USART2端口来实现。所以我们设计室内空气质量检测器的组成结构图如下:

  根据上述分析及结构示意图,我们就能很容易的设计出室内空气质量检测器的控制板。

3、软件实现

  我们已经描述了室内空气质量检测器的控制板及各部分组件,接下来我们需要实现相应的软件功能。

3.1、数据采集

  数据的采集主要包括三个方面:一是使用SHT20采集温湿度数据;二是使用SGP40来采集VOC浓度数据;三是使用HLPM025K3激光PM2.5传感器来检测可吸入颗粒物浓度数据。这些数据的采集并不麻烦,在以前的文章中我们已经简述多这些设备的驱动程序的设计。在这里我们直接使用已经封装过的驱动程序来实现就可以了。

  HLPM025K3激光PM2.5传感器通过串口输出数据,包括PM2.5和PM10的数据,我们使用封装的驱动程序可以很方便的获取和解析对应的数据。具体的实现程序如下:

HlpmObjectType hlpm; //声明对象

/*PM25数据采集处理*/
void Ampm25DataProcess(void)
{
  /*解析PM2.5和PM10的数据*/
  ParsingPMData(&hlpm);
  
  aPara.phyPara.pm10Value=hlpm.pm100;
  aPara.phyPara.pm25Value=hlpm.pm25;
}
 
/*PM25数据采集配置*/
void Ampm25Configuration(void)
{
  /* PM25相关GPIO初始化配置 */
  Ampm25_GPIO_Initialization();
  
  /* USART1端口初始化配置 */
  USART1_Init_Configuration();
  
  /*允许数据发送*/
  AMPM25_RUNNING_ENABLE();
  
  /*HLPM对象初始化函数*/
  HlpmInitialization(&hlpm);
}

  需要注意的是HLPM025K3激光PM2.5传感器有一个测量控制信号,必须提供高电平才会工作。

  同样测量其它的参数也是使用我们封装的驱动程序,如使用SHT20温湿度传感器获取温湿度数据也是一样的。

/* 温湿度数据处理 */
void AmShtDataProcess(void)
{
  aPara.phyPara.temperature=GetSHT2xTemperatureValue(&sht,MEASURE_T_COMMAND_NOHOST);
  aPara.phyPara.humidity=GetSHT2xHumidityValue(&sht,MEASURE_RH_COMMAND_NOHOST);
}
 
/* 温湿度配置 */
void AmShtConfiguration(void)
{
  /* I2C1端口初始化 */
  I2C1_Init_Configuration();
  
  /* 初始化配置SHT2x */
  SHT2xInitialization(&sht,        //SHT2X对象变量
             SHT2x_DPI_RH8_T12, //测量分辨率配置
             SHT2x_End_High,   //电池结束状态配置
             SHT2xHEATERDISABLE, //加热器是否启用配置
             SHT2xOTPDISABLE,  //是否加载OTP配置
             WriteToSHT2x,    //写操作指针
             ReadFromSHT2x,   //读操作指针
             HAL_Delay);     //毫秒延时指针
}

3.2、数据显示

  前述我们已经提到了使用0.96寸的OLED来显示相应的数据。我们选用的是SPI接口的OLED显示屏。其实0.96寸的OLED驱动程序我们也是封装过的,直接使用就好。具体实现代码如下:

OledObjectType oled;  //声明OLED对象

/*OLED显示处理*/
void AmoledDisplayProcess(void)
{
  char temp[]="temp=%.2f";
  char humi[]="humi=%.2f";
  char pm25[]="PM2.5=%.2f";
  char pm10[]="PM10=%.2f";
  
  OledShowString(&oled,OLED_FONT_8x16,0,0,temp,aPara.phyPara.temperature);
  OledShowString(&oled,OLED_FONT_8x16,2,0,humi,aPara.phyPara.humidity);
  OledShowString(&oled,OLED_FONT_8x16,4,0,pm25,aPara.phyPara.pm25Value);
  OledShowString(&oled,OLED_FONT_8x16,6,0,pm10,aPara.phyPara.pm10Value);
  
}
 
/*OLED初始化配置*/
void AmoledConfiguration(void)
{
  /* OLED显示控制相关GPIO初始化配置 */
  Amoled_GPIO_Initialization();
 
  /* SPI1端口初始化 */
  SPI1_Init_Configuration();
 
  /*OLED显示屏对象初始化*/
  OledInitialization(&oled,      //OLED对象
             OLED_SPI,       //通讯端口
             0xFF,        //I2C设备地址
             AmOledWrite,        //写数据函数
             AmOledChipReset,       //复位信号操作函数指针
             AmOledDCSelcet,        //DC信号控制函数指针
             NULL,       //SPI片选信号函数指针
             HAL_Delay       //毫秒延时函数指针
               );
}

3.3 、数据传送

  数据的传输我们使用RS485的接口方式,应用层协议采用Modbus RTU协议。因为我们已经封装过Modbus协议栈,并且已经开源到GitHub,所以我们直接使用Modbus协议栈来实现我们的数据传送。

/* 上位通讯处理函数 */
void AmUpperCommunication(void)
{
  uint16_t respondLength=0;
  if(amupcRxLength>=8)
  {
     uint8_t respondBytes[AMUPCRECEIVELENGTH];

      respondLength=ParsingMasterAccessCommand(amupcRxBuffer,respondBytes,amupcRxLength,aPara.phyPara.activeAddress);
     if(respondLength!=65535)
     {
       if(respondLength > 0)
       {
          AmupcSendByte(respondBytes,respondLength);
       }
       
       amupcRxLength=0;
     }
  }
}

  关于数据传送这块,我们使用串口接收中断来接收数据请求。当然也可以直接使用定期上传的方式发送数据,则根据实际需求修改。

4、验证测试

  我们已经设计了室内空气质量检测器的软件和硬件,接下来我们运行看看其结果如何。我们将其运行起来,在我们的OLED软件中设置为一次能显示4行数据,具体结果如下图:

  这只是一个小制作,实现了一些简单的功能。在后续我们实际上可以将其功能扩展的更多。如将数据上传到网络实时查看居室内的大气环境;根据PM2.5的情况控制空气净化器的工作等。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2526

    文章

    48093

    浏览量

    740070
  • 检测器
    +关注

    关注

    1

    文章

    811

    浏览量

    47291
  • 硬件设计
    +关注

    关注

    18

    文章

    346

    浏览量

    44318
收藏 人收藏

    评论

    相关推荐

    【Tisan物联网申请】室内空气质量监测系统

    申请理由:监控室内空气质量, 将传感信息经由ESP8266处理后实时发送到服务,手机可以实时查看室内
    发表于 10-15 10:09

    【NanoPi2申请】室内空气质量监测系统

    申请理由:一直从事嵌入式开发 主要方向为基于OPENWRT的智能路由研发,之前也给bananapi编译过安卓 没有深入玩过 这次希望能有机会能试用nanopi2项目描述:通过激光颗粒传出感 +18B20+湿度传感 实时监控
    发表于 11-11 11:00

    室内空气净化监测系统设计

    为解决室内污染,室内空气监测净化系统孕育而生,它基于物联网技术,除了空气检测、净化的同时也可作为室内智能家居的总控制端。而且其体积小巧,结构
    发表于 10-09 17:01

    Arduino检测器:关注空气质量

    Arduino检测器:关注空气质量
    发表于 05-10 06:56

    空气质量传感室内空气清新机中的应用是什么?

    TGS2600空气质量传感有什么特点?空气质量传感室内空气清新机中的应用是什么?
    发表于 06-16 08:35

    关于基于单片机的室内空气质量检测系统的设计

    前一段时间,做了一个关于基于单片机的室内空气质量检测系统的设计
    发表于 11-19 06:18

    怎样去设计一个基于单片机的室内空气质量检测系统

    设计简介:本设计是基于单片机的室内空气质量检测系统,主要实现以下功能:可通过LCD1602显示当前甲烷和甲醛的值;可通过按键调整甲醛甲烷的最大值;可通过MS1100检测甲醛的值;可通过
    发表于 02-18 06:10

    GSM网络的室内空气质量监测系统设计_魏庆丽

    GSM网络的室内空气质量监测系统设计_魏庆丽
    发表于 03-19 18:58 2次下载

    室内空气质量检测系统设计

    室内空气质量检测
    发表于 06-19 16:20 35次下载

    空气质量传感器可以帮助我们有效改善室内空气质量

    ,改善室内空气质量同样重要。空气质量传感器可帮助改善室内空气质量。 什么是室内空气质量 室内空气质量(Indoor Air Quality,
    发表于 09-14 16:22 1060次阅读

    如何用传感器测量室内空气质量与改善空气质量

    据能源与清洁空气研究中心 (CREA) 和绿色和平组织统计报告,空气污染每年导致全球 450 万人过早死亡。建筑材料、储存的化学品、冷凝水、灰尘和油漆等各种来源都会影响室内空气质量。这些污染物进入
    的头像 发表于 11-03 11:10 846次阅读
    如何用传感器测量<b class='flag-5'>室内空气质量</b>与改善<b class='flag-5'>空气质量</b>

    室内空气质量检测设备

    室内空气质量检测设备是一种重要的室内空气监测工具,它可以检测室内空气中的有害物质,从而保护人们免受空气
    的头像 发表于 04-17 16:55 923次阅读

    带你了解室内空气质量检测设备的特点-欧森杰

    室内空气质量检测设备是一种用于监测室内空气质量的仪器,它可以将测量到的室内空气质量数据及时传送给用户,从而使用户能够更加全面地了解室内空气
    的头像 发表于 04-18 16:48 840次阅读

    如何选择合适的室内空气质量检测

    在市场上,各种品牌和型号的室内空气质量检测仪琳琅满目。那么,如何选择一款合适的室内空气质量检测仪呢?本文将为您提供一些建议。 一、选择检测
    的头像 发表于 06-28 09:44 810次阅读

    室内空气质量检测仪的工作原理与应用

    随着人们对健康的关注度日益提高,室内空气质量检测仪已成为越来越多家庭和企业关注的焦点。本文将介绍室内空气质量检测仪的工作原理和应用场景。 一、室内空
    的头像 发表于 06-30 13:39 1510次阅读