RT-Thread Studio学习 驱动攀藤PMS5003ST PM2.5传感器
传感器参数及使用方法参照:
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传感器相关推荐
- 树莓派3B和攀藤PMS5003ST
0.数据仅供学习参考,一切以官方数据为准. 1.需要的设备:攀藤PMS5003ST,树莓派3B.如果直接连接电脑也可以,需要的软件http://on8vei0g9.bkt.clouddn.com/PM ...
- rt thread studio使用QBOOT和片外flash实现OTA升级
我们这里要使用单片机外部flash作为OTA的下载分区,外部flash硬件连接关系 PB3-->SPI3_CLK PB4-->SPI3_MISO PB5-->SPI3_MOSI PE ...
- RT Thread利用STM32CUBEMX和RT Thread studio来创建模板工程
(1)RT Thread利用STM32CUBEMX来创建模板工程 1.参考文档: 基于 CubeMX 移植 RT-Thread Nano:RT-Thread 文档中心 注意:串口2必须使能异步模式(启 ...
- RT Thread Studio 配置IIC并读取AS5600角度
RT Thread Studio 配置IIC并读取AS5600角度 一.RT Thread Studio 配置IIC 1.在RT Thread Seting 中开启IIC功能 并保存 一定要保存才能更 ...
- STM32 + RT Thread OS 学习笔记[五]
1. 触摸屏驱动 触摸屏驱动的原理非常简单,从硬件得到坐标数据,数据加工(适配屏幕分辨率,偏移量调整),最后调用rtgui_server_post_event()函数向GUI服务端发送坐标信息. 奋 ...
- 基于TencentOS-tiny实现PM2.5传感器(攀藤PMSA003)数据解析思路及实现
说明:此文章提供了一种基于TencentOS-tiny的串口数据解析思路及实现,感谢戴大神最初写的源码,这种思路同样可以实现AT框架.基于串口的GPS数据解析等等. 1. PM2.5传感器 本文使用的 ...
- xpt 2046的触摸屏 rt thread设备驱动框架
1 基于rtt 开发触摸屏驱动 准备使用rtt 框架 , 驱动xpt 2046的触摸屏, 翻阅大量资料发现, 大部分文章强调的是时序图, 而且很多代码要么直接操作寄存器, 要么是io 口模拟, 只能用 ...
- 当攀藤 PM2.5 传感器遇上 RT-Thread
概述 攀藤 PMS 系列传感器 攀藤 PMS 系列传感器是基于激光散射原理的数字式通用颗粒物浓度传感器,可连续采集并计算单位体积内空气中不同粒径的悬浮颗粒物个数,即颗粒物浓度分布,进而换算成为质量浓度 ...
- 当攀藤 PM2.5 传感器遇上 RT-Thread(国产实时线程操作系统内核)(转载)
概述 攀藤 PMS 系列传感器 攀藤 PMS 系列传感器是基于激光散射原理的数字式通用颗粒物浓度传感器,可连续采集并计算单位体积内空气中不同粒径的悬浮颗粒物个数,即颗粒物浓度分布,进而换算成为质量浓度 ...
最新文章
- rhel iptables只允许限定IP访问某端口、某特定网站
- Dynamics CRM CE 怎样从 UCI 改为 classic UI
- python—while循环、字符串
- 使用Spring Boot搭建HelloWorld Web页面(含HTTP协议分析)
- 停航63天!湖北复航了,机票预订火爆程度堪比春运
- 游戏筑基开发之指针的用途(C语言)
- android 简单锁屏代码,【简单代码】默认锁屏代码第二弹~
- fw136r虚拟服务器,Purley平台Redfish带外配置表
- 离线检查未安装的Windows更新
- python 有道翻译,python 简单的调用有道翻译
- STM32 烧录程序后上电不工作,但调试模式下可正常工作的解决办法
- 基于java(springboot)校园新闻管理系统源码(java毕业设计)
- discuz 模版 php函数,dz function template 函数解析
- socket协议基础知识
- 什么是知识库,内部知识库和外部知识库各有什么优势?
- unity中UI连线
- 关于前端flex的使用
- 关于cgi的初步认识推荐两篇博文
- Educational Codeforces Round 120 (Rated for Div. 2)
- java开局降落伞落地拿枪打_绝地求生:1月最新的跳伞技巧,一个开局捡空投,一个落地快4秒...
热门文章
- 谷歌测试工具_使用Google网站优化工具进行A / B测试的指南
- 摄影-曝光口诀(阳光16法则)
- Photoshop学习(十六):使用矢量蒙版
- ROCKET PROPULSION ELEMENTS——DEFINITIONS AND FUNDAMENTALS笔记
- 基础操作案例 :ArcGIS PRO基础教程(一)
- 分清概念十分重要之--Linux中的各种队列
- Exchange Web Service(EWS) 协议同步邮件
- 尚硅谷 硅谷外卖_关于多样性,硅谷未能想到与众不同
- Matplotlib做图第一节
- Office2013 图标显示不正常的解决办法