在本文中,让我们看一下如何使用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代码
详情参阅 - 亚图跨际