当前位置: 首页 > news >正文

树莓派+攀腾PMSA003-PM2.5传感器监测空气质量【含源码+接线图】

在使用树莓派+攀腾PMSA003-PM2.5传感器,采集PM2.5数据,

 下面是接线图,因为PMSA003引脚比较小,直接使用1.25的线不方便,建议购买一个转线版在电商搜索一下(PMSA转接板)就有了,插上之后就只有4个引脚了(VCC,GND,RX,TX)

接线除了VCC和GND之外,RX和TX要接在树莓派的TX和RX上,如下图PMSA 4,5引脚接线所示。

实际图如下

可选的:PMSA的RX和TX管脚均需要 3.3V 作为高电平,也可以加上电平转化电路,转化电压。

读取攀腾PMSA003-PM2.5传感器的代码如下

 参考了树莓派+攀腾PMSA003-PM2.5传感器监测空气质量【含源码】的源码。

#!/usr/bin/env python
import serial
import timeclass pmsA003(serial.Serial):def __init__(self, dev):self.serial = serial.Serial(dev, baudrate=9600, timeout=3)def __exit__(self, exc_type, exc_value, traceback):self.serial.close()def setIdel(self):idelcmd = b'\x42\x4d\xe4\x00\x00\x01\x73'  # 进入待机状态,风扇停止转动ary = bytearray(idelcmd)self.serial.write(ary)def setNormal(self):normalcmd = b'\x42\x4d\xe4\x00\x01\x01\x74'  # 恢复正常工作,风扇转动,主动发送数据ary = bytearray(normalcmd)self.serial.write(ary)def vertify_data(self):if not self.data:return Falsereturn Truedef read_data(self):while True:b = self.serial.read(1)if b == b'\x42':data = self.serial.read(31)if data[0] == 0x4d:self.data = bytearray(b'\x42' + data)if self.vertify_data():return self._PMdata()def _PMdata(self):d = {}d['pm25'] = str(self.data[6] * 256 + self.data[7])d['pm10'] = str(self.data[4] * 256 + self.data[5])return dif __name__ == '__main__':con = pmsA003('/dev/ttyAMA0')while True:d = con.read_data()print(d['pm25'])  # 输出pm2.5的数值time.sleep(5)

对于setIdel和setNormal里面的字节是指令,树莓派资料可参考这个基于TencentOS-tiny实现PM2.5传感器(攀藤PMSA003)数据解析思路及实现。

程序传入进树莓派后,执行可能会遇到程序一直不输入任何东西,即一直挂载着,终止程序后出现

ready, _, _ = select.select([self.fd, self.pipe_abort_read_r], [], [], timeout.time_left())

 

我们将 串口名称从 '/dev/ttyAMA0',修改为 '/dev/serial0'即可,具体原因可参考我的另一篇博客内容。

修改后执行程序,就可以正常输出采集到的PM2.5浓度了。


 

希望这篇文章对你有所帮助。

参考链接:

树莓派+攀腾PMSA003-PM2.5传感器监测空气质量【含源码】

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

 python hangs on serial write()

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Navicat 17 新特性 | 原生支持 Linux ARM 平台以及银河麒麟和统信操作系统
  • 应变与几何方程——弹性力学
  • Kithara与OpenCV (一)
  • IDEA中使用Maven打包及碰到的问题
  • android 固定图片大小
  • vue3 身份证校验、识别性别/生日/年龄
  • MMGPL: 多模态医学数据分析与图提示学习| 文献速递-基于深度学习的多模态数据分析与生存分析
  • 如何找回误删的文件?4个常用文件恢复方法!
  • 『C++成长记』vector模拟实现
  • RequestContextHolder多线程获取不到request对象
  • 基于springboot+vue+uniapp的机电公司管理信息系统
  • Llama-factory源码详细解读
  • 192.168.1.1路由器管理系统使用教程
  • 在linux x86服务器安装jdk
  • Sentinel和hystric的运用详解
  • 时间复杂度分析经典问题——最大子序列和
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • Android开源项目规范总结
  • CentOS7 安装JDK
  • ES6 学习笔记(一)let,const和解构赋值
  • ES6系统学习----从Apollo Client看解构赋值
  • gulp 教程
  • k个最大的数及变种小结
  • Mysql5.6主从复制
  • node 版本过低
  • Python爬虫--- 1.3 BS4库的解析器
  • vue:响应原理
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 从重复到重用
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 如何学习JavaEE,项目又该如何做?
  • 物联网链路协议
  • 一起参Ember.js讨论、问答社区。
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • 积累各种好的链接
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • (003)SlickEdit Unity的补全
  • (1)常见O(n^2)排序算法解析
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (windows2012共享文件夹和防火墙设置
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (一)、python程序--模拟电脑鼠走迷宫
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • ***原理与防范
  • ../depcomp: line 571: exec: g++: not found
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .net framework profiles /.net framework 配置
  • .Net接口调试与案例
  • @EnableAsync和@Async开始异步任务支持