外设驱动库开发笔记32:HLPM025K3 PM2.5传感器驱动

本文详细介绍了HLPM025K3 PM2.5传感器的工作原理和通信接口,包括其采用的激光散射技术和串行通讯方式。此外,还阐述了如何设计和实现传感器驱动,包括对象定义、初始化和操作方法,特别是通过FIFO队列处理接收数据。最后,给出了一个简单的应用示例来验证驱动程序的正确性。

  现在人们对大气环境及室内环境都比较关注。PM2.5在生活中也是常见的词汇。在有些产品中就要求检测PM2.5的数值。检测PM2.5的手段多种多样,在要求不高时我们通常可以采用激光模块。在这一篇中,我们将讨论HLPM025K3 PM2.5传感器驱动的设计与实现。

1、功能概述

  HLPM025K3传感器采用激光散射原理。即令激光照射在空气中的悬浮颗粒物上产生散射,同时在某一特定角度收集散射光,得到散射光强随时间变化的曲线。通过稳定的气 体对流系统,使外界空气均匀的通过自主研发设计的风路,同时在风路中设有多个精密的光学传感器,可以精确的获得粒子的尺寸、速度和质量等信息,加以统计学原理,继而计算出总的粒子质量,从而实时的得到空气中所被关注的粒子的浓度,达到检测PM2.5以及PM10的目的。其基本原理如下图所示:

  HLPM025K3传感器采用串行通讯,采用6脚通讯接口,其引脚定义如下图所示:

  HLPM025K3传感器采用TTL串行通讯,采用9600的波特率,8为数据位,1为停止位,无校验的方式。HLPM025K3传感器通讯采取主动发送模式,0.8到1.2秒发送一次数据。其数据包含7个字节,具体格式如下:

  其中,校验位=PM2.5(H)+PM2.5(L)+PM10(H)+PM10(L)
  接收到的数据按公式计算后得到 PM2.5 和 PM10 的值。
  PM2.5 = (PM2.5(H)×256 + PM2.5(L))×0.1;
  PM10 = (PM2.5(H)×256 + PM2.5(L))×0.1;

2、驱动设计与实现

  我们已经了解了HLPM025K3型PM2.5传感器的基本情况。在这一节中我们将设计并实现HLPM025K3型PM2.5传感器的驱动。

2.1、对象定义

  在使用一个对象之前我们需要获得一个对象。同样的我们想要HLPM025K3 PM2.5传感器就需要先定义HLPM025K3 PM2.5传感器的对象。

2.1.1、对象的抽象

  我们要得到HLPM025K3 PM2.5传感器对象,需要先分析其基本特性。一般来说,一个对象至少包含两方面的特性:属性与操作。接下来我们就来从这两个方面思考一下HLPM025K3 PM2.5传感器的对象。
  先来考虑属性,作为属性肯定是用于标识或记录对象特征的东西。我们来考虑HLPM025K3 PM2.5传感器对象属性。我们将测量数据作为对象的属性,因为他们表示了对象当前的状态。
  接着我们还需要考虑HLPM025K3 PM2.5传感器对象的操作问题。对象本身除了接受数据并没有什么需要操作的。我们使用队列来存储接收到的数据,所以入队出队过程可看作是其操作。
  根据上述我们对HLPM025K3 PM2.5传感器的分析,我们可以定义HLPM025K3 PM2.5传感器的对象类型如下:

/*定义HLPM025K3对象类型*/
typedef struct HlpmObject {
   
   
	float pm25;		//PM2.5测量值
	float pm100;	//PM10测量值
	struct DwinRxBuffer{
   
   
		uint8_t queue[HLPMRxBufferLength];	//键值存储队列
		uint8_t pRead;									//读队列指针
		uint8
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值