当攀藤 PM2.5 传感器遇上 RT-Thread(国产实时线程操作系统内核)(转载)
概述
攀藤 PMS 系列传感器
攀藤 PMS 系列传感器是基于激光散射原理的数字式通用颗粒物浓度传感器,可连续采集并计算单位体积内空气中不同粒径的悬浮颗粒物个数,即颗粒物浓度分布,进而换算成为质量浓度,并以通用数字接口形式输出。PMS 传感器可嵌入各种与空气中悬浮颗粒物浓度相关的仪器仪表或环境改善设备,为其提供及时准确的浓度数据,比如小米的空气净化器。
PMS 系列包括很多款传感器,具体选型可以查看 http://www.plantower.com 页面。
为了方便在 MCU 产品上应用 PMS 系列传感器,笔者基于 RT-Thread 物联网操作系统制作了一个软件包 pmsxx。该软件包兼容多款 PMS 传感器,支持 MCU 串口配置为中断或 DMA 接收模式,支持线程初始化,支持使用 device 接口进行读写、控制操作。
GitHub 地址:GitHub - luhuadong/rtt-pmsxx: Plantower PMSxx family sensor driver for RT-Thread
硬件连接
攀藤 PMS 系列传感器提供 TTL 电平串口与主机通信,开发者可以通过 USB 转串口模块连接 PMS 传感器的 RX 和 TX 引脚,使用 PC 端的串口调试工具进行调试。默认波特率为 9600 bps,无校验位,1 位停止位。
不同型号的传感器的接口略微不同,以 PMS9003M 为例,是一个带锁槽的 8 pin 接口,间距 1.27 mm。
管脚定义如下:
管脚序号 | 功能标号 | 描述 |
---|---|---|
PIN1 | VCC | 电源正(+5V) |
PIN2 | GND | 电源负 |
PIN3 | SET | 设置管脚(TTL 电平 3.3V),高电平或悬空为正常工作状态,低电平为休眠状态 |
PIN4 | RXD | 串口接收管脚(TTL 电平 3.3V) |
PIN5 | TXD | 串口发送管脚(TTL 电平 3.3V) |
PIN6 | RESET | 模块复位信号(TTL 电平 3.3V),低复位 |
PIN7 | NC | |
PIN8 | NC |
PMS 传感器与 MCU 的典型电路连接示意图如下:
本测试只需连接 VCC、GND、RXD、TXD 即可。
传输协议
pmsxx 软件包目前支持基础型和增强型两类 PMS 传感器。
- 基础型(Basic):传输协议总长度 32 字节,检测的数据包括标准(CF=1)颗粒物浓度和大气环境的颗粒物浓度(PM1.0、PM2.5、PM10),以及 0.1 升空气中直径分别在 0.3μm、0.5μm、1.0μm、2.5μm、5.0μm、10μm 以上的颗粒物个数。常见的传感器模块包括 PMS3003、PMS5003、PMS7003、PMS9003M、PMSA003 等等。
- 增强型(Enhanced):传输协议总长度 40 字节,检测的数据在基础型之上增加了甲醛浓度、温度、湿度 3 组数据。常见的传感器模块如 PMS5003ST。
基础型 PMSxx 传感器传输协议如下:
软件包使用
添加软件包
如果使用 Env 工具,在添加软件包前需要先执行 pkgs --upgrade
更新软件包索引。以 STM32L4R5 Nucleo BSP 为例,在项目工程目录执行 menuconfig
打开配置页面,pmsxx 软件包的具体路径如下:
RT-Thread online packages --->peripheral libraries and drivers --->[*] sensors drivers --->[*] PMSxx: Plantower pms serial PM2.5 sensor driver.
pmsxx 软件包位于 sensor drivers 内,已对接 sensor 设备驱动框架,因此 pmsxx 可为上层应用提供标准的 device 操作接口。pmsxx 软件包选项配置如下:
这里使用 STM32L4R5 Nucleo 板上 Arduino 接口的 D0(RX)和 D1(TX),对应为 uart3 串口。因此还需要配置 uart3 并开启 DMA 接收功能。
OK,保存配置并退出。执行 pkgs --update
更新/拉取软件包。
pmsxx 配置项
--- PMSxx: Plantower pms serial PM2.5 sensor driver.Select pms sensor type (Basic) --->(X) Basic( ) Enhanced
(2000) The waiting time after send command (ms)
[ ] Enable initialize by thread
[ ] Enable serial device DMA RX
[ ] Debug command and response
[ ] Show commands
[ ] Show response data
[ ] Dump raw response data
[ ] Show ruler for raw response data
[ ] Enable pmsxx sample
(uart3) Select uart device name
选项说明:
- PMS 传感器类型
- 基础型(包括 PMS1003/PMS3003/PMS5003/PMS7003/PMS9003/PMSA003 等)
- 增强型(比如 PMS5003ST)
- 串口发送命令等待时间(并非所有模式设置命令都有响应,建议设置此参数,避免设置失败)
- 使能初始化线程(该软件包会将 pms 传感器设置为被动模式,使能该选项可以消除等待时间的影响)
- 使能串口 DMA 功能(开启该选项时请确保所使用的串口支持 DMA,并且已开启相关配置)
- 调试命令和响应
- 当设置传感器模式时,在 msh 终端显示该命令内容
- 当接收到响应数据时,在 msh 终端显示该响应内容
- 当接收到响应数据时,以原始数据的形式显示
- 显示标尺,以方便识别原始数据
- 使能 pmsxx 示例代码
- 设置示例的串口设备名称(默认为 uart3)
测试
当硬件和软件准备就绪,就可以编译工程,并将固件下载到 MCU 上。打开 msh 终端,由于开启了 pmsxx 的测试示例和命令/响应调试输出,因此会自动注册传感器设备,并打印出一些信息,比如 MCU 发送给传感器的命令。
+-----------------------------------------------------+
| HEAD1 | HEAD2 | CMD | DATAH | DATAL | LRCH | LRCL |-----------------------------------------------------
| 42 | 4d | e2 | 00 | 00 | 01 | 71 |
+-----------------------------------------------------+
以及传感器发送给 MCU 的数据。
_________________________________________________________________________________
01 02 03 04 05 06 07 08 09 10 11 12 ...... 20 21 22 23 24 25 26 27 28 29 30 31 32
---------------------------------------------------------------------------------
42 4d 00 1c 00 03 00 04 00 07 00 04 ...... f9 00 1b 00 06 00 03 00 03 9a 00 02 a2
PMS 传感器上电默认进入主动输出模式,为了方便使用,pmsxx 软件包将其初始化为被动模式。初始化成功,执行 list_device
命令可以查看该设备。
msh >list_device
device type ref count
-------- -------------------- ----------
dust_pms Sensor Device 0
由于 PMS 传感器包含多种检测数据,pms 注册为 dust 设备,使用 rt_device_read
接口读取的是通常比较关心的 PM2.5(大气环境)值。如果想要获取所有数据,可以使用 rt_device_control
接口。
示例代码提供了两个测试命令:
- pms_read_sample :主动式获取传感器数据,返回的是 PM2.5 值(大气环境);
- pms_dump_sample :主动式获取传感器数据,返回所有响应数据。
以下是使用 PMS9003M 传感器,执行 pms_dump_sample 命令的运行效果:
以下是使用 PMS5003ST 传感器,执行 pms_dump_sample 命令的运行效果:(需要切换为 Enhanced 类型)
以上测试均是通过 sensor 设备驱动框架进行。另外,pmsxx 软件包示例还提供了自定义接口测试命令 cat_pmsxx_passive 和 cat_pmsxx_active,分别用于被动式和主动式测试。小伙伴们可以试一下,那我们下次再见咯~
当攀藤 PM2.5 传感器遇上 RT-Thread_阿基米东的博客-CSDN博客
联系我们 - 攀藤科技
当攀藤 PM2.5 传感器遇上 RT-Thread(国产实时线程操作系统内核)(转载)相关推荐
- 当攀藤 PM2.5 传感器遇上 RT-Thread
概述 攀藤 PMS 系列传感器 攀藤 PMS 系列传感器是基于激光散射原理的数字式通用颗粒物浓度传感器,可连续采集并计算单位体积内空气中不同粒径的悬浮颗粒物个数,即颗粒物浓度分布,进而换算成为质量浓度 ...
- 攀藤PM2.5传感器使用定义串口usb数据接收
攀藤PM2.5传感器使用定义串口usb数据接收 数据使用的是16进制的,所以必须用十六进制显示, 对应可能标记是0x, 比如0X42, 前两个是帧头,后两个是帧未, 中间是13组可用于显示的数据, 对 ...
- PM2.5传感器通过树莓派推送到ThingsPanel
本文主要讲述通过树莓派4B开发板采集PM2.5传感器数据并推送到ThingsPanel进行查看(插件已经开发并安装,插件开发参照 https://github.com/ThingsPanel/dock ...
- 基于TencentOS-tiny实现PM2.5传感器(攀藤PMSA003)数据解析思路及实现
说明:此文章提供了一种基于TencentOS-tiny的串口数据解析思路及实现,感谢戴大神最初写的源码,这种思路同样可以实现AT框架.基于串口的GPS数据解析等等. 1. PM2.5传感器 本文使用的 ...
- 【应用实例】单片机PM2.5空气监测仪--攀藤G5激光PM2.5传感器
一.功能简述 基于Arduino控制,利用攀藤G5激光传感器测量PM值,DHT11温湿度传感器测量温湿度,1602LCD显示数据.外接一个继电器,当达到一定污染值时启动净化风扇. 焊接之后大概是这个样 ...
- 个人物联网(目前用到了树莓派、PMS7003攀藤g7传感器、DHT11温湿度传感器)
上周空气不好,突发奇想要搞个个人物联网系统,检测生存环境.手头有树莓派.NodeMCU esp8266.DHT11温湿度传感器.pm2.5检测需要专门的传感器,本以为也就几块钱,结果发现淘宝还挺贵.在 ...
- python连接传感器_关于树莓派Pi2通过UART连接攀藤G5传感器的python
1.准备工作:树莓派Pi2板子,攀藤G5传感器 关于树莓派40pin口网上很多,我们只了解与攀藤G5连接的问题 (1)攀藤G5pin1(VCC5v)要注意是5V,有很多板子接的是3V,而树莓派的pin ...
- 关于树莓派Pi2通过UART连接攀藤G5传感器的python
1.准备工作:树莓派Pi2板子,攀藤G5传感器 关于树莓派40pin口网上很多,我们只了解与攀藤G5连接的问题 (1)攀藤G5pin1(VCC5v)要注意是5V,有很多板子接的是3V,而树莓派的pin ...
- 树莓派空气质量检测仪-攀藤G5003ST的连接与使用
树莓派空气质量检测仪-攀藤G5003ST的连接与使用 认识攀藤G5003ST 攀藤G5003ST数字接口定义 攀藤G5003ST技术指标 攀藤G5003ST输出结果分析 攀藤G5003ST对外输出格式 ...
最新文章
- 任务管理 linux指令qsub,Linux_前一个投的任务跑完再跑另一个任务_qsub_-hold_jid
- elment-ui文件上传详解
- htmlparser 获取某a标签地址_HTML常用标签
- 一些powershell基本使用示例
- jvm执行引擎全解,java解释器即时编译器,全都讲明白
- 本期赠书中奖名单公布
- [内核编程] 内核环境及其特殊性,驱动编程基础篇
- java 访问内部类的属性_java中的内部类详细总结
- Leetcode--164. 最大间距
- 超详细,Wireshark 3.6.3安装教程(Windows系统)
- Java 获取两个日期之间的日期
- Service服务学习(SimpleRandomServiceDemo)
- vue学习笔记-8-循环结构
- 一年级计算机算文具吗,一年级老师说,用这样文具的孩子,课堂上都没有认真听讲...
- 对路径“c:\inetpub\wwwroot\yuanxiaofenlei.html”的访问被拒绝。
- 为什么说大数据就业前景一片光明?
- [重庆思庄每日技术分享]-oracle11g到ORACLE 816的dblink访问报 ORA-03150错误
- 基于MATLAB对系统的串联滞后校正
- PowerBI视觉对象共计271组,2021.01.20日更新
- 常用导线、电线连接方法、电工电线接线方法图解
热门文章
- 超详细Openstack核心组件——Placement部署
- NETDMIS5.0多点偏置平面建坐标系2023
- bootstrap--表格(table的各种样式)
- 手机安装软件解析包错误解决办法
- 加湿器-香薰机的设计方案(单片机程序+PCB)超声波震荡方式 原理图+PCB+源代码+详细设计说明
- vscode 添加新建文件夹快捷键 (配置 when 属性)
- 《你充满电了吗?》读后感
- Java学习笔记 (码龄七年第一次写笔记 续2)
- 【Babylon小技巧04】进阶双开门事件绑定同时触发
- Tiny4412 LCD驱动(DRM+设备树)