亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

使用 OpenSensors 监测空气质量:Arduino 与 Python 实战指南

简介

本教程将指导你如何使用 Arduino、Shinyei PPD‑42 颗粒物传感器和 OpenSensors MQTT 代理来监测室内空气质量。我们将一步步演示如何采集实时颗粒物数据,并安全地发布到公共数据流中。

项目背景

我们希望找到一种简单而强大的方法来评估工作场所的空气质量。选择 Shinyei PPD‑42 传感器是因为它价格实惠且易于使用,搭配 Arduino UNO 和基于 Linux 的主机(如树莓派)。该传感器可持续输出对健康有潜在风险的小颗粒物浓度,我们将这些数据持续发布到 OpenSensors 消息代理。

所需硬件

参考项目

本指南基于 DustDuino 项目,该项目已将 PPD‑42 与 Arduino 和 Wi‑Fi 集成。我们改编了其接线图和代码,使其适配 OpenSensors 环境。

首先,按照 DustDuino 说明的步骤 2 将传感器连接到 Arduino。然后从 GitHub 仓库下载 DustDuinoSerial.ino 草图,在 Arduino IDE 中打开并上传到 UNO。

通过打开 Arduino IDE 的串口监视器,验证传感器是否正常发送数据。

接下来,我们将使用一个轻量级 Python 脚本,利用 Mosquitto 客户端库,将 Arduino 的串口输出桥接到 OpenSensors 代理。

Python 环境验证

为确认 Python 已就绪,请创建一个名为 hi.py 的文件,内容如下:

print("Hello World")

在终端运行:

python hi.py

控制台应输出 Hello World。

连接 OpenSensors

若尚未安装 Mosquitto Python 客户端,请执行:

sudo apt-get install python-pip
sudo pip install paho-mqtt

使用以下最小脚本测试发布到 OpenSensors(将 Louis 和密码替换为你的凭据):

import paho.mqtt.client as mqtt
mqttc = mqtt.Client(client_id="939")
mqttc.username_pw_set("Louis", password="AbcDEFgH")
mqttc.connect("mqtt.opensensors.io")
mqttc.publish("/users/Louis/test2", payload="Hello Opensensors!", qos=0, retain=False)
mqttc.disconnect()

执行成功后,你将在 OpenSensors 控制台看到该消息。

要连接 Arduino 的串口,请用以下命令识别设备:

dmesg | grep tty

典型输出如下:

[ 0.000000] console [tty0] enabled
[ 3522.192687] cdc_acm 7-1:1.0: ttyACM0: USB ACM device

此处 /dev/ttyACM0 即为要使用的串口。

使用 Python 读取串口数据:

import serial
ser = serial.Serial('/dev/ttyACM0')
while True:
    print(ser.readline())

整合传感器输出与 MQTT

将串口读取和 MQTT 发布合并为单一脚本。下面的示例每秒将每行传感器数据发布到主题 /users/Louis/ODI/airquality:

import serial
import paho.mqtt.client as mqtt
import time

mqttc = mqtt.Client(client_id="939")
mqttc.username_pw_set("Louis", password="AbcDEFgH")
mqttc.connect("mqtt.opensensors.io")

ser = serial.Serial('/dev/ttyACM0')  # 根据实际端口调整

while True:
    message = ser.readline()
    print(message)
    mqttc.publish("/users/Louis/ODI/airquality", payload=message, qos=0, retain=False)
    time.sleep(1)

为便于下游处理,建议在发布前将 Arduino 输出格式化为 JSON。

访问 OpenSensors 主题页面 查看生成的数据流。

完整代码示例

import serial
import paho.mqtt.client as mqtt
import time

mqttc = mqtt.Client(client_id="939")
mqttc.username_pw_set("Louis", password="AbcDEFgH")
mqttc.connect("opensensors.io")

ser = serial.Serial('/dev/ttyACM0')  # 打开第一个串口

while True:
    message = ser.readline()
    print(message)
    mqttc.publish("/users/Louis/ODI/airquality", payload=message, qos=0, retain=False)
    time.sleep(1)

来源:How to Measure Air Quality on OpenSensors

制造工艺

  1. 基于 Helium 网络的太阳能供电空气质量监测站:设计与部署全指南
  2. 用 Arduino 制作万能红外遥控器:分步指南
  3. DIY 数字身高仪:Arduino Nano + VL53L0X 激光测距 + OLED 显示
  4. 热敏电阻测温轻松上手:Arduino 分步实战教程
  5. 提升船用空气压缩机效率的实用策略
  6. 测量阻焊层厚度:实用指南
  7. 空气干燥机工作原理:守护压缩空气洁净高效
  8. 压缩空气污染物清除全指南:法规、污染源与净化方案
  9. 硅胶腕带:低成本被动采样器实现精准空气质量监测
  10. 先进碳基 NO₂ 传感器提升室内空气质量监测水平
  11. 室内空气质量差的隐性健康风险:不容忽视的沉默杀手
  12. 以物联网构建先进室内空气质量监测系统