所有型号覆盆子pi的mh-z19 co2浓度传感器库

mh-z19的Python项目详细描述


MH-Z19

从MH-Z19传感器读取二氧化碳浓度

MH-Z19

安装

pip install mh-z19

安装

DownloadsDownloadsDownloads

如何使用

用作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引脚。

Cabling

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-Z19MH-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的解决方案。谢谢ActpohomocTBR-BRD

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
mysql java语言非法参数异常?   java绘制控制流图   无法通过java eclipse中的ssh隧道远程连接到mysql数据库   直接在@SuppressWarnings之后出现java Eclipse错误(“未选中”)   java如何使用远程api google应用程序引擎api客户端?   工具栏中的java导航图标颜色未更改?   java返回带有映射子集的实体   java Spring重新加载属性Bean未更新   fileoutputstream正在获取java。木卫一。IOException:流关闭错误,但未显式关闭它   jsp标记显示java。时间使用jstl的LocalDateTime   java如何设置onFailure事件(Spring,Kafka)的超时?   将java元素添加到多个线程中的列表时,会跳过这些元素   JAVAutil。扫描程序Java读取空格后的整数值   java JMonkey过滤器着色器获取片段的世界位置   java从mongodb获取随机值   java如何使用Intent。标记\u活动\u清除\u顶部以清除活动堆栈?   多线程如何控制在多个端口上监听的java服务器应用程序   在具有复合键的相关实体之间插入数据时发生java Hibernate错误