Измерение качества воздуха с OpenSensors: руководство по Arduino и Python
Узнайте, как отслеживать качество воздуха в помещении с помощью Arduino, датчика частиц Shinyei PPD‑42 и MQTT-брокера OpenSensors. Это пошаговое руководство показывает, как собирать данные о загрязнении в реальном времени и безопасно публиковать их в открытый поток данных.
Введение
Для этого проекта нам требовался простой, но мощный способ оценки качества воздуха на рабочем месте. Мы выбрали датчик Shinyei PPD‑42 за его доступность и простоту использования, и соединили его с Arduino UNO и компьютером на базе Linux (например, Raspberry Pi). Датчик передает концентрацию мелкодисперсных частиц, которые могут представлять риск для здоровья, и мы непрерывно публикуем эти данные в брокере сообщений OpenSensors.
Что понадобится:
- Датчик Shinyei PPD‑42
- Arduino UNO
- Компьютер под Linux или Raspberry Pi
Это руководство основано на проекте 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
Производственный процесс
- Солнечный датчик качества воздуха на Helium: руководство по проектированию и развёртыванию
- Скрытые риски для здоровья от плохого качества воздуха в помещениях
- Использование термистора: пошаговое руководство для Arduino
- Повышение эффективности воздушных компрессоров на судах: проверенные методы
- Измерение толщины паяльной маски: практическое руководство
- Использование IoT для построения передовых систем мониторинга качества воздуха в помещениях
- Как работают воздухосушители: поддержание сжатого воздуха чистым и эффективным
- Подробное руководство по удалению загрязнителей из сжатого воздуха
- Кремниевые браслеты: доступные пассивные сэмплеры для точного мониторинга качества воздуха
- Продвинутый углеродный датчик NO₂ улучшает мониторинг качества воздуха в помещениях