传感器参数及使用方法参照:

https://blog.csdn.net/lu_embedded/article/details/107317387

PMS 传感器与 MCU 的电路连接示意图如下:

目前使用仅用到RXD、TXD、VCC、GND

软件包使用

PMS5003ST为增强型传感器,软件包配置需要配置为增强型

1.RT-Thread Setting中添加pmsxx软件包

2.组件配置中使能串口DMA模式

3.修改board.h宏,添加相关串口的宏定义 BSP_USING_UARTx 及修改引脚信息,并开启DMA接收功能

4.修改rtconfig.h宏,修改传感器相关的宏定义 PKG_USING_PMSXX_UART_DMA(开启DMA接收)及PKG_USING_PMSXX_ENHANCED(增强型传感器)

以上软件包配置完成。

打开软件包文件夹可见示例代码:

官方示例程序

#include "my_pmsxx.h"/** Copyright (c) 2020, RudyLo <luhuadong@163.com>** SPDX-License-Identifier: Apache-2.0** Change Logs:* Date           Author       Notes* 2020-07-04     luhuadong    the first version*/#ifndef PKG_USING_PMSXX_SAMPLE_UART
#define PMSXX_UART_NAME                    "uart3"
#else
#define PMSXX_UART_NAME                    PKG_USING_PMSXX_SAMPLE_UART
#endifstatic void read_dust_entry(void *args)
{rt_device_t sensor = RT_NULL;struct rt_sensor_data sensor_data;sensor = rt_device_find(args);if (!sensor){rt_kprintf("Can't find PMS device.\n");return;}if (rt_device_open(sensor, RT_DEVICE_FLAG_RDWR)){rt_kprintf("Open PMS device failed.\n");return;}rt_uint16_t loop = 10;while (loop--){if (1 != rt_device_read(sensor, 0, &sensor_data, 1)){rt_kprintf("Read PMS data failed.\n");continue;}rt_kprintf("[%d] PM2.5: %d ug/m3\n", sensor_data.timestamp, sensor_data.data.dust);rt_thread_mdelay(3000);}rt_device_close(sensor);
}static void dump_dust_entry(void *args)
{rt_device_t sensor = RT_NULL;struct rt_sensor_data sensor_data;struct pms_response resp;rt_err_t ret;sensor = rt_device_find(args);if (!sensor){rt_kprintf("Can't find PMS device.\n");return;}if (rt_device_open(sensor, RT_DEVICE_FLAG_RDWR)){rt_kprintf("Open PMS device failed.\n");return;}rt_uint16_t loop = 10;while (loop--){ret = rt_device_control(sensor, RT_SENSOR_CTRL_PMS_DUMP, &resp);if (ret != RT_EOK)rt_kprintf("Dump PMS data failed.\n");elsepms_show_response(&resp);rt_thread_mdelay(3000);}rt_device_close(sensor);
}static int pms_read_sample(void)
{rt_thread_t dust_thread;dust_thread = rt_thread_create("pms_read", read_dust_entry,"dust_pms", 1024,RT_THREAD_PRIORITY_MAX / 2, 20);if (dust_thread)rt_thread_startup(dust_thread);
}static int pms_dump_sample(void)
{rt_thread_t dust_thread;dust_thread = rt_thread_create("pms_dump", dump_dust_entry,"dust_pms", 1024,RT_THREAD_PRIORITY_MAX / 2, 20);if (dust_thread)rt_thread_startup(dust_thread);
}#ifdef FINSH_USING_MSH
MSH_CMD_EXPORT(pms_dump_sample, dump pms response data);
MSH_CMD_EXPORT(pms_read_sample, read PM2.5 data);
#endifstatic int rt_hw_pms_port(void)
{struct rt_sensor_config cfg;cfg.intf.type = RT_SENSOR_INTF_UART;cfg.intf.dev_name = PMSXX_UART_NAME;rt_hw_pms_init("pms", &cfg);return RT_EOK;
}
INIT_COMPONENT_EXPORT(rt_hw_pms_port);

测试结果

RT-Thread Studio学习 驱动攀藤PMS5003ST PM2.5传感器相关推荐

  1. 树莓派3B和攀藤PMS5003ST

    0.数据仅供学习参考,一切以官方数据为准. 1.需要的设备:攀藤PMS5003ST,树莓派3B.如果直接连接电脑也可以,需要的软件http://on8vei0g9.bkt.clouddn.com/PM ...

  2. rt thread studio使用QBOOT和片外flash实现OTA升级

    我们这里要使用单片机外部flash作为OTA的下载分区,外部flash硬件连接关系 PB3-->SPI3_CLK PB4-->SPI3_MISO PB5-->SPI3_MOSI PE ...

  3. RT Thread利用STM32CUBEMX和RT Thread studio来创建模板工程

    (1)RT Thread利用STM32CUBEMX来创建模板工程 1.参考文档: 基于 CubeMX 移植 RT-Thread Nano:RT-Thread 文档中心 注意:串口2必须使能异步模式(启 ...

  4. RT Thread Studio 配置IIC并读取AS5600角度

    RT Thread Studio 配置IIC并读取AS5600角度 一.RT Thread Studio 配置IIC 1.在RT Thread Seting 中开启IIC功能 并保存 一定要保存才能更 ...

  5. STM32 + RT Thread OS 学习笔记[五]

    1.  触摸屏驱动 触摸屏驱动的原理非常简单,从硬件得到坐标数据,数据加工(适配屏幕分辨率,偏移量调整),最后调用rtgui_server_post_event()函数向GUI服务端发送坐标信息. 奋 ...

  6. 基于TencentOS-tiny实现PM2.5传感器(攀藤PMSA003)数据解析思路及实现

    说明:此文章提供了一种基于TencentOS-tiny的串口数据解析思路及实现,感谢戴大神最初写的源码,这种思路同样可以实现AT框架.基于串口的GPS数据解析等等. 1. PM2.5传感器 本文使用的 ...

  7. xpt 2046的触摸屏 rt thread设备驱动框架

    1 基于rtt 开发触摸屏驱动 准备使用rtt 框架 , 驱动xpt 2046的触摸屏, 翻阅大量资料发现, 大部分文章强调的是时序图, 而且很多代码要么直接操作寄存器, 要么是io 口模拟, 只能用 ...

  8. 当攀藤 PM2.5 传感器遇上 RT-Thread

    概述 攀藤 PMS 系列传感器 攀藤 PMS 系列传感器是基于激光散射原理的数字式通用颗粒物浓度传感器,可连续采集并计算单位体积内空气中不同粒径的悬浮颗粒物个数,即颗粒物浓度分布,进而换算成为质量浓度 ...

  9. 当攀藤 PM2.5 传感器遇上 RT-Thread(国产实时线程操作系统内核)(转载)

    概述 攀藤 PMS 系列传感器 攀藤 PMS 系列传感器是基于激光散射原理的数字式通用颗粒物浓度传感器,可连续采集并计算单位体积内空气中不同粒径的悬浮颗粒物个数,即颗粒物浓度分布,进而换算成为质量浓度 ...

最新文章

  1. rhel iptables只允许限定IP访问某端口、某特定网站
  2. Dynamics CRM CE 怎样从 UCI 改为 classic UI
  3. python—while循环、字符串
  4. 使用Spring Boot搭建HelloWorld Web页面(含HTTP协议分析)
  5. 停航63天!湖北复航了,机票预订火爆程度堪比春运
  6. 游戏筑基开发之指针的用途(C语言)
  7. android 简单锁屏代码,【简单代码】默认锁屏代码第二弹~
  8. fw136r虚拟服务器,Purley平台Redfish带外配置表
  9. 离线检查未安装的Windows更新
  10. python 有道翻译,python 简单的调用有道翻译
  11. STM32 烧录程序后上电不工作,但调试模式下可正常工作的解决办法
  12. 基于java(springboot)校园新闻管理系统源码(java毕业设计)
  13. discuz 模版 php函数,dz function template 函数解析
  14. socket协议基础知识
  15. 什么是知识库,内部知识库和外部知识库各有什么优势?
  16. unity中UI连线
  17. 关于前端flex的使用
  18. 关于cgi的初步认识推荐两篇博文
  19. Educational Codeforces Round 120 (Rated for Div. 2)
  20. java开局降落伞落地拿枪打_绝地求生:1月最新的跳伞技巧,一个开局捡空投,一个落地快4秒...

热门文章

  1. 谷歌测试工具_使用Google网站优化工具进行A / B测试的指南
  2. 摄影-曝光口诀(阳光16法则)
  3. Photoshop学习(十六):使用矢量蒙版
  4. ROCKET PROPULSION ELEMENTS——DEFINITIONS AND FUNDAMENTALS笔记
  5. 基础操作案例 :ArcGIS PRO基础教程(一)
  6. 分清概念十分重要之--Linux中的各种队列
  7. Exchange Web Service(EWS) 协议同步邮件
  8. 尚硅谷 硅谷外卖_关于多样性,硅谷未能想到与众不同
  9. Matplotlib做图第一节
  10. Office2013 图标显示不正常的解决办法