所有型号覆盆子pi的mh-z19 co2浓度传感器库
mh-z19的Python项目详细描述
MH-Z19
从MH-Z19传感器读取二氧化碳浓度
安装
pip install mh-z19
安装
如何使用
用作python脚本。
pi@raspberrypi:~/mh-z19/pypi $ sudo python -m mh_z19
{'co2': 500}
导入模块并调用read()
pi@raspberrypi:~/mh-z19/pypi $ sudo python
Python 2.7.13 (default, Nov 24 2017, 17:33:09)
[GCC 6.3.0 20170516] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import mh_z19
>>> mh_z19.read()
{'co2': 477}
>>>
可能需要sudo,因为mh_z19模块使用串行。
该模块解决了每个树莓pi模型之间接口的差异。例如,串行设备名是覆盆子pi 3和旧型号的区别,但mh-z19模块自动检测模型并从相应的串行设备读取。
要使用mh-z19,一旦需要在raspberry pi上设置启用串行端口设备。 后面的Wiki页可能是信息性的。
布线
将RPI&MH-Z19连接为:
- RPI上为5V,MH-Z19上为vin
- RPI上的接地(0V)和MH-Z19上的接地
- TXD和RXD连接到RPI和MH-Z18之间的交叉点
以下是布线示例,但您可以自由使用RPI上的其他5V和0V引脚。
pi@raspberrypi:~/mh-z19 $ gpio readall
+-----+-----+---------+------+---+---Pi B+--+---+------+---------+-----+-----+
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
| | | 3.3v | | | 1 || 2 | | | 5v | | |
| 2 | 8 | SDA.1 | IN | 1 | 3 || 4 | | | 5v | | | <---- Vin
| 3 | 9 | SCL.1 | IN | 1 | 5 || 6 | | | 0v | | | <---- Gnd
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 | <---- RxD
| | | 0v | | | 9 || 10 | 1 | ALT0 | RxD | 16 | 15 | <---- TxD
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |
| 0 | 30 | SDA.0 | IN | 1 | 27 || 28 | 1 | IN | SCL.0 | 31 | 1 |
| 5 | 21 | GPIO.21 | IN | 1 | 29 || 30 | | | 0v | | |
| 6 | 22 | GPIO.22 | IN | 1 | 31 || 32 | 0 | IN | GPIO.26 | 26 | 12 |
| 13 | 23 | GPIO.23 | IN | 0 | 33 || 34 | | | 0v | | |
| 19 | 24 | GPIO.24 | IN | 0 | 35 || 36 | 0 | IN | GPIO.27 | 27 | 16 |
| 26 | 25 | GPIO.25 | IN | 0 | 37 || 38 | 0 | IN | GPIO.28 | 28 | 20 |
| | | 0v | | | 39 || 40 | 0 | IN | GPIO.29 | 29 | 21 |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |
+-----+-----+---------+------+---+---Pi B+--+---+------+---------+-----+-----+
在浏览器上查看二氧化碳浓度
MONITOR™是一个免费的远程监控服务,用于在Web上显示最新数据。您可以在智能手机上看到MH-Z19设备测量的当前二氧化碳浓度值。有关详细信息,请参阅blog。
校准、探测范围设置和ABC(自动基线校正)逻辑开/关。
有关校准(MH-Z19和MH-Z19B)、探测范围变化(MH-Z19B)和ABC逻辑开/关(MH-Z19B)的功能在版本0.2.1或更高版本中实现。
恐怕我只是在没有测试的情况下实现了这些,因为没有必要的设备和仪器来进行测试,fx:标准浓度的二氧化碳气体,还有mh-z19b模块。 如果你有这些设备或设备,并且试着慷慨地使用这些功能,我真的很感激你的issue report,不管结果是正面的还是负面的。
有关详细信息,请参阅wiki。
0x86命令的未记录响应值。
Revspace/MHZ19显示官方数据表(MH-Z19,MH-Z19B)中未记录的值。据此,--all选项将这些值添加到返回的json值中,如下所示:
sudo python -m mh_z19 --all {"SS": 232, "UhUl": 10752, "TT": 61, "co2": 818, "temperature": 21} sudo python3 -m mh_z19 --all {"TT": 61, "co2": 807, "SS": 232, "temperature": 21, "UhUl": 10752}
或者按如下方式调用read_all()函数:
>>> import mh_z19
>>> mh_z19.read_all()
{'SS': 232, 'UhUl': 10738, 'TT': 61, 'co2': 734, 'temperature': 21}
>>>
尽管如此,我认为TT值可能与环境温度无关,但这也可能是一个内部热传感器值,它与红外加热器配对它们是用NDIR(非色散红外)方法测量二氧化碳浓度所必需的。
因此,返回的温度值可能与实际温度不匹配。 请把我的论点的详细情况称为Is the undocumented TT value on the responses of command 0x86 really related to the ambient temperature?。
使用特定的串行设备。
如果您应该使用特定的串行设备,而不是这个库自动选择的raspberry pi默认串行设备,例如,如果需要将/dev/ttyusb0用于ft232 usb串行转换器作为issue#12,您可以通过--serial\u device选项指定串行设备,如下所示:
sudo python -m mh_z19 --serial_device /dev/ttyUSB0
问答
任何问题,建议,报告都欢迎!请毫不犹豫地做issue!
历史记录
- 0.1.1 2018.11.05第一版自分叉slider。
- 0.1.3 2018.11.06修复自述。
- 0.1.4 2018.11.15修订自述。
- 0.1.6 2018.11.29修订自述。
- 0.2.1 2019.01.18未经测试添加以下内容(抱歉) abc_on(),abc_off(),span_point_calibration(), Xero_Point_Calibration(),检测范围_5000(), 检测范围,校验和
- 0.3.5 2019.01.22 python2和python3都支持
- 0.3.6 2019.01.22合并Pull Request #3&;Pull Request #4。谢谢David!
- 0.3.7 2019.02.25添加——所有请求为issue#5的选项,谢谢Rafał!
- 0.3.8 2019.04.16合并Pull Request #7。谢谢Alexander!
- 0.3.8.5 2019.04.21合并Pull Request #9。谢谢WO15!
- 0.3.9 2019.05.06修改串行端口选择逻辑。通过设置dtoverlay=pi3 miniuart bt或dtoverlay=pi3 disable bt支持在树莓pimodel 3上使用pl011uart和零w。感谢a25}
- 0.4.1 2019.08.11添加--串行设备选项作为issue#12的解决方案。谢谢Actpohomoc和TBR-BRD!