树莓派+攀腾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 time
class 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 False
return True
def 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 d
if __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()
原文地址:https://blog.csdn.net/qi_yue_yu/article/details/140396471
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!