Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Измерение качества воздуха с OpenSensors: руководство по Arduino и Python

Узнайте, как отслеживать качество воздуха в помещении с помощью Arduino, датчика частиц Shinyei PPD‑42 и MQTT-брокера OpenSensors. Это пошаговое руководство показывает, как собирать данные о загрязнении в реальном времени и безопасно публиковать их в открытый поток данных.

Введение

Для этого проекта нам требовался простой, но мощный способ оценки качества воздуха на рабочем месте. Мы выбрали датчик Shinyei PPD‑42 за его доступность и простоту использования, и соединили его с Arduino UNO и компьютером на базе Linux (например, Raspberry Pi). Датчик передает концентрацию мелкодисперсных частиц, которые могут представлять риск для здоровья, и мы непрерывно публикуем эти данные в брокере сообщений OpenSensors.

Что понадобится:

Это руководство основано на проекте DustDuino, который уже интегрирует PPD‑42 с Arduino и Wi‑Fi. Мы адаптировали его схему подключения и код для работы с нашей установкой OpenSensors.

Сначала подключите датчик к Arduino, как описано в шаге 2 инструкций DustDuino. Затем скачайте скетч DustDuinoSerial.ino из репозитория GitHub, откройте его в Arduino IDE и загрузите в UNO.

Проверьте, что датчик отправляет данные, открыв монитор последовательного порта в Arduino IDE.

Далее мы свяжем последовательный вывод Arduino с брокером OpenSensors, используя легкий скрипт на Python, основанный на клиентской библиотеке Mosquitto.

Hello Python World

Чтобы убедиться, что Python готов к работе, создайте файл hi.py со следующим содержимым:

print("Hello World")

Запустите его из терминала:

python hi.py

В консоли должно появиться Hello World.

Hello 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. Скрытые риски для здоровья от плохого качества воздуха в помещениях
  3. Использование термистора: пошаговое руководство для Arduino
  4. Повышение эффективности воздушных компрессоров на судах: проверенные методы
  5. Измерение толщины паяльной маски: практическое руководство
  6. Использование IoT для построения передовых систем мониторинга качества воздуха в помещениях
  7. Как работают воздухосушители: поддержание сжатого воздуха чистым и эффективным
  8. Подробное руководство по удалению загрязнителей из сжатого воздуха
  9. Кремниевые браслеты: доступные пассивные сэмплеры для точного мониторинга качества воздуха
  10. Продвинутый углеродный датчик NO₂ улучшает мониторинг качества воздуха в помещениях