PM2.5 / PM10传感器读数:Python,MicroPython和Arduino-ESP32

2023-11-10

在本文中,让我们看一下如何使用ESP32板连接和编写程序,从PM2.5 / PM10传感器模块读取值,我们将使用Python3,用于ESP32的MicroPython和Arduino分别以代码编写为例进行演示。

演示顺序如下:

  • 第一阶段:了解硬件,例如将要使用的传感器模块从制造商的数据表中学习技术信息,以及准备硬件(例如测试电路)。
  • 第二阶段:编写Python 3代码,通过不使用微控制器板,而是通过带有模块USB到串行到计算机的数据通信方法来测试基本操作
  • 第三阶段:使用加载MicroPython固件的ESP32的编写代码
  • 第四阶段:使用Arduino IDE编写C代码

传感器模块:颗粒物测量

此类灰尘传感器模块请勿使用过滤器捕获和收集实验室中的灰尘样品,而要使用激光工作,当空气中的细小颗粒(例如空气中的灰尘)被风扇吸入并撞击激光束时, 导致光散射改变直线的光的方向或角度。

灰尘的大小和浓度(颗粒及大小,颗粒浓度〜)将导致电信号检测器的光(Detector)具有不同的值。 然后进行算术处理得出以微克每立方米(µg / m ^ 3)为单位的数值。

这些设备使用通过电源电压VCC = + 5V与串行端口(Serial Port)连接数据的方法。 有用于连接数字I / O的引脚TXD(数据输出)和RXD(数据输入)。

在我们使用设备之前,应先了解制造商的文件或数据表中的各种信息。 每种型号的设备都有许多不同的细节,否则可能会损坏设备。 或将时间浪费在因不了解使用而引起的问题上。

使用说明:

  • 连接连接器有8条线,但仅使用4条线,仅VCC(5V),GND,TX和RX。建议标记或编写注释。为了更容易连接电路并避免可能发生的错误
  • 在连接工作电路时可能需要修改以连接电源线,例如一端是母排针

检测模块参数

设置或控制模块(数据表)的操作必须使用命令通过串口发送命令,例如

  • 开始测量并打开排气风扇(开始颗粒测量)。
  • 停止测量并关闭排气风扇(停止颗粒测量)。
  • 读取PM2.5和PM10的最新测量值(读取颗粒测量结果)。
  • 启用启用自动发送模式,该模式总共发送32个字节的数据,每次间隔大约一秒钟。
  • 关闭模式下,自动传输(停止自动发送)。
  • 以及有关用户校准的命令

将命令发送到模块后,将收到答复以确认发送给您的命令正确吗?

例如,如果要开始传感器的测量(“开始粒子测量”),请按如下所示发送4个字节(以十六进制显示)0x68 0x01 0x01 0x96,并且必须具有2个字节的响应,如下所示0xA5 0xA5以获得正确的响应。 (ACK)或0x96 0x96(如果不正确(NACK)。

注意:

  • 每个命令中的字节顺序为HEAD(默认字节),LEN(长度,但不包括CS字节),CMD(命令字节)和DATA(字节数据可能具有或不具有)
  • 发送的命令的最后一个字节。用于数据验证或校验和(CS)
  • 如果是“读取颗粒测量结果”命令,则将返回所有8个字节(HEAD,LEN,CMD,DF1,DF2,DF3,DF4,CS)。 DF1和DF2字节串联为16位。 对于PM2.5,将字节DF3和DF4放在一起以提供PM10的16位值(并且不要忘记每次都检查CS使用的数据的准确性)。

Python编程从模块读取值

首先测试该模块是否可以正常工作,是否可以通过串口获得值? 我们将使用USB-to-Serial模块连接到计算机。

由于传感器模块的电量不是很高,使用电源电压VCC = + 5V,因此我们可以使用带有+ 5V引脚和GND的USB转串口模块作为电源。

可以使用的USB转串口模块必须具有+ 5V引脚,并且GND和TXD / RXD必须在3.3V电平下工作。

如果正确连接了引脚当通过USB端口连接到计算机时,我们可以开始使用Python 3进行编程(可以选择使用Python IDE,也可以在Shell中运行命令行脚本)。

由于需要使用Python 3通过串行发送和接收数据,因此有必要通过执行以下命令来安装名为pyserial(Python Serial)的Python包:

python3 -m pip install pyserial

在本文中,我们将使用Thonny IDE(Windows)进行编码,并使用Python 3.7.5解释器执行代码。

Python代码

MicroPython编程从模块读取值

MicroPython代码

编程Arduino-ESP32 Sketch从模块读取值

演示1

Arduino的第一个示例,我们将为ESP32编写一个程序以充当串口桥。 一方面,使用Serial 0连接到计算机(这是我们用来将Arduino Sketch上传到板上的路径),而另一方面,使用串口2连接到模块。 我们选择了相同的Baudrate 9600值。

Sketch代码

演示2

我们将编写一个新的Arduino Sketch代码,从串口2的传感器模块中获取值并首先对其进行处理。然后通过串口0将显示PM10 / PM2.5值的消息发送到计算机以在Arduino IDE的Serial Monitor中显示。

Sketch代码

详情参阅 - 亚图跨际

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PM2.5 / PM10传感器读数:Python,MicroPython和Arduino-ESP32 的相关文章

随机推荐

  • 365天挑战LeetCode1000题——Day 264 周赛336

    第一题 遍历 class Solution public int vowelStrings vector
  • python练习实例——金币问题

    目录 题目 解法 输出结果 题目 noip2015 复赛第一题 国王将金币作为工资 发放给忠诚的骑士 第一天 骑士收到一枚金币 之后两天 第二天和第三天 每天收到两枚金币 之后三天 第四 五 六天 每天收到三枚金币 之后四天 第七 八 九
  • sojson jsjiami.com.v6 爬虫js逆向

    sojson jsjiami com v6 爬虫js逆向 地址 aHR0cDovL3d3dy5wYmMuZ292LmNuL3JteWgvMTA1MjA4Lzg1MzIvaW5kZXg1Lmh0bWw 抓取内容 第一次请求 发现返回的不是正确
  • Thinkphp5使用sqlite3作为数据库无法存储小数点的解决方案

    Thinkphp5使用sqlite3作为数据库无法存储小数点的解决方案 在tp的官网搜了一下资料 主要是因为TP5自动绑定内型的时候自动将一些浮点数等类型的数字强制将PDO类型设置为了INT类型 而使用SQLITE数据库时 添加的语句遇到小
  • Centos安装Mysql图文配置详解

    1 安装镜像源 Centos7 MySQL 5 7 yum y install http repo mysql com mysql57 community release el7 rpm MySQL 8 0 yum y install ht
  • MayaToUE4之毛发

    毛发 说明 Maya流程 使用XGen UE4流程 毛发导入预设置 导入毛发 设置骨骼网格体的Groom 毛发材质 毛发物理效果 UE4假发一顶 说明 UE4毛发官方文档 Maya毛发创建XGen导出abc格式 并导入UE4 Maya流程
  • 在使用vnc viewer时候遇到connection refused 10061 111

    在使用vnc viewer时候遇到connection refused 10061 111 解决办法 一般是vncserver 没有启动的问题 在使用CentOS 的时候 可以使用ssh连接远程的服务器 开启vncserver ssh ro
  • Kubernetes 核心概念

    本节课程要点 什么是 Kubernetes 介绍 Kubernetes 的主要功能以及能力 Kubernetes 的架构 介绍 Kubernetes 的核心组件 以及介绍它们之间是如何相互互动连接 Kubernetes 的核心概念与核心 A
  • 安卓期末大作业智慧医疗app-疫苗预约app(附资源链接)

    安卓期末大作业智慧医疗app 疫苗预约app 一 登入页面 下载链接在文末 1 页面和功能展示 2 功能介绍 用户输入用户名和密码后 会和数据库的数据进行匹配 如果账号和密码正确就可以登入到主页面 输入空或者用户名密码错误时会提示错误 密码
  • PS如何快速修改证件照片底色

    PS快速修改证件照片底色 我这里是把蓝色换成红色 工具 原料 电脑 photoshop 方法 步骤 1 打开您的照片 我这个图片来自网络 2 1 选择菜单 选择 色彩范围菜单 2 这时候鼠标变成一个 吸管的形状 哟哦那个吸管在照片的背景上吸
  • java 图片 批量 压缩 +全部压缩

    oldsrc 原图片地址文件夹 如 d newsrc 压缩后图片地址文件夹 如 e widthdist heightdist 压缩后的宽和高 createtime 2010 11 25 auto yijianfeng public void
  • 遇到的bug问题

    1 扩展板的引脚 2 Tone方法 与 红外遥控方法 发生冲突 这个错误提示表面上是说在红外库里定义过的函数在Tone里又重复定义了 实际原因是红外库和Tone都使用了相同的内部计时器TIMER2 在各自的ISR函数里 换名字是不解决根本问
  • [[机缘参悟-87]:每个人需要了解自己的性格特征(老虎、孔雀、考拉、猫头鹰、变色龙)

    我是谁 生肖天性是 老虎 生活习惯是 考拉 后天工作是 猫头鹰 最远距离是 孔雀 心理学改变 变色龙
  • http请求头部各个字段的含义

    前言 我们前几天再做http头部注入的时候 遇到了好多头部 不知道都是啥意思 今天就总结一下 HTTP头字段 英语 HTTP header fields 是指在超文本传输协议 HTTP 的请求和响应消息中的消息头部分 它们定义了一个超文本传
  • clip-path介绍

    clip path介绍 简介 兼容性 基本语法 语法详解 基本图形 inset 基本图形 circle 基本图形 ellipse 基本图形 polygon 使用示例 圆形裁剪 椭圆裁剪 矩形裁剪 多边形裁剪 三角形 菱形 梯形 平行四边形
  • rem与mod的区别

    从老师提供的PPT中复制出来的 感觉还行直接用了 算是转载吧 rem与mod的区别不仔细区分的话 可把rem和mod都当作是求余数的命令 gt gt mod 3 2 ans 1 gt gt rem 3 2 ans 1这两个数的符号一致时的结
  • 4.1-真实世界的并发

    复习 并发编程的基本工具 线程库 互斥和同步 本次课回答的问题 Q 什么样的任务是需要并行 并发的 它们应该如何实现 本次课主要内容 高性能计算中的并发编程 数据中心里的并发编程 我们身边的并发编程 一 高性能计算中的并发编程 高性能计算程
  • 【GD32】F330 串口只能返回00的问题记录

    最开始借助正点原子的视频教程在STM32mini板上跑通了串口的字节收发 但在移植程序到GD32的过程中遇到了一个bug 在b站找了GD32的串口教程手敲代码 却跟演示效果不一致 在while 1 循环里给上位机发送数据 虽然PC能够接收到
  • 使用VScode 远程访问和编辑文件

    VSCode支持远程访问编辑文件 需安装一个插件 remote browser 直接搜索安装插件即可 配置远程 文件 首选项 设置 在设置搜索remoteBrowser connectionOptions 然后编辑下方的setting js
  • PM2.5 / PM10传感器读数:Python,MicroPython和Arduino-ESP32

    在本文中 让我们看一下如何使用ESP32板连接和编写程序 从PM2 5 PM10传感器模块读取值 我们将使用Python3 用于ESP32的MicroPython和Arduino分别以代码编写为例进行演示 演示顺序如下 第一阶段 了解硬件