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

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

Интересовались ли вы качеством вдыхаемого воздуха? Или почему в офисе злится сонливость, а по утрам — усталость даже после сна? Плохой воздух вызывает проблемы со здоровьем, утомляемость, головные боли, потерю концентрации, учащенное сердцебиение. Мониторинг качества воздуха важнее, чем кажется. В этом уроке соберем свой монитор: PM2.5, CO2, VOC, озон, температура, влажность.

Смотрите видео или читайте ниже.

Обзор

Разберу, как каждый параметр влияет на нас и как работают датчики. Мозг — Arduino Pro Mini + 2.8" сенсорный дисплей Nextion — приличный интерфейс.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

Видим замеры всех датчиков в реальном времени. Клик по датчику — график за последние 24 часа. Есть затемнение экрана до полного выключения — удобно для ночного мониторинга в спальне.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

Выключаем экран на ночь, утром смотрим историю по каждому датчику.

Теперь по шагам: сборка, принцип работы. В конце сможете повторить сами.

Датчик PM2.5 — PMS5003

Четыре основных датчика. PMS5003 — PM2.5 (вещество ~2.5 мкм). Частицы — самые вредные: проникают в легкие, кровь, мозг.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

Принцип: лазерное рассеяние. Встроенный вентилятор создает контролируемый поток — частицы проходят через фокусированный лазерный луч.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

Частицы рассеивают свет — фотодиод фиксирует, микропроцессор переводит в концентрацию. Результаты надежные, выдает также PM1 и PM10.

Датчик CO2 — MH-Z19

MH-Z19 — углекислый газ. Люди выдыхают CO2, в помещениях концентрация быстро растет. Высокий CO2 опасен, вызывает всонность, утомляемость, снижение продуктивности.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

Принцип: недисперсионный инфракрасный (NDIR). ИК-источник → трубка с измеряемым воздухом → оптический фильтр + ИК-детектор. CO2 поглощает специфическую ИК-полосу — разница излученного и принятого сигнала дает концентрацию. Точность хорошая.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

Датчики VOC и озона — MP503 и MQ-131

VOC и озон — датчики MP503 и MQ131. Это нагревательные металл-оксидные датчики: фиксируют изменение сопротивления при наличии целевых газов.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

Ток проходит через металлический субстрат, сопротивление меняется в зависимости от концентрации газа.

MQ131 — только озон. В быту озон дают некоторые очистители, паровые уходовые приборы, бактерицидные лампы с УФ.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

MP503 — мультигаз: спирт, дым, изобутан, метанал и др. VOC — летучие органические соединения, выделяются из бытовых средств: порошки, чистящие, освежители, краски, косметика. Вызывают головные боли, раздражение глаз/кожи, головокружение.

Схема DIY монитора качества воздуха на Arduino

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

Компоненты:

Disclosure: партнерские ссылки. Как Amazon Associate зарабатываю на квалифицированных покупках.

Правильные номиналы резисторов: R1=1K, R2=2K, R6=100K или 1M, R7=1K

PM2.5 — последовательный интерфейс. Питание 5V, но RX на 3.3V → нужен делитель напряжения. CO2 и Nextion — тоже UART. VOC и озон — аналоговые входы Arduino. DHT22 — цифровой пин. Два транзистора — включение нагревателей датчиков газов. RTC (DS3231) — I2C, для таймстампов при логировании. Питание всего — 5V через Mini USB.

См. также: 8 лучших стартовых наборов Arduino [2021]

При подключении на макетке — хаос из-за множества проводов.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

Нужна PCB.

Проектирование PCB для монитора воздуха

Использую Altium Designer — спонсор видео.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

Altium Designer — десятилетия инноваций, единая среда проектирования, баланс мощности и удобства, самый популярный инструмент для PCB.

Как проектировал: начинал со схемы. Встроенные библиотеки + поиск компонентов у производителей — удобно для закупки.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

Пример: нашел Mini USB разъем через Manufacturer Part Search. Там же — 3D-модели, фуутпринты, размеры.

Создавал свои библиотеки компонентов — хотел свои 3D-футпринты для каждого, чтобы в итоге получить всю PCB в 3D. 3D-модели для фуутпринтов — любой CAD, сохраняю как .STEP, импортирую в Altium.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

Схему закончил → генерация PCB. Расставил компоненты, один клик — Auto Route протрассировал всё автоматически.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

При необходимости правил вручную. Можно задать правила автотрассировки, ширины дорожек для каждой сети. Вижу PCB в 3D, экспортирую 3D-модель всей сборки — для проектирования корпуса.

Спасибо Altium за поддержку образования. Подробнее и пробная версия:

Altium Designer free trial – https://www.altium.com/yt/howtomechatronics
Altium 365 viewer: https://www.altium.com/viewer

Файлы проекта Altium Designer:

Файлы проекта, библиотеки, .STEP модели компонентов:

Гербер-файл PCB:

Готово: генерирую герберы и NC Drill, архивирую — готово к заказу.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

Заказывал на JCLPCB. Перетаскиваю архив — визуализация платы.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

Выбираю параметры, заказываю по адекватной цене.

Сборка PCB

Платы пришли через несколько дней. Качество отличное, 1-в-1 с проектом.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

Сборка: сначала мелкие — резисторы, два транзистора.

Arduino Pro Mini — паяю в место. Сначала пин-хедеры к нему. Не все пины нужны, но критичные (A4, A5, DTR) — обязательно. Убедитесь, что распиновка Pro Mini точно такая — бывают варианты.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

DHT22 — гну пины на 90°. Иногда использую Blu-tack для фиксации при пайке.

Два конденсатора — стабилизация питания. Питание — Mini USB, 5V.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

Над разъемом питания — два переключателя. Один — вкл/выкл устройства, второй — режим загрузки скетча в Arduino. Потом пин-хедеры для USB-UART, дисплея, PM2.5, VOC, озона, CO2.

DS3231 RTC — снова гну пины на 90°. Паяю, вставляю батарейку (время держит при потере основного питания). PCB готова. Осталось приготовить кабели для PM2.5 и дисплея. К кабелю датчика паял пин-хедеры — легко подключается к PCB. Дисплей — 4 провода к задней стороне разъема, на PCB.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

Монитор воздуха собран. Нужен корпус. Имеем 3D-модель PCB из Altium — импортирую в CAD, проектирую корпус.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

В SOLIDWORKS сделал минималистичный корпус: две детали + несколько болтов/гаек. Материал — прозрачный акрил: красиво видна PCB, отличный способ показать DIY-проект.

Модель на Thangs:

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

Скачать 3D-модель на Thangs.

Изготовление корпуса

Акрил 4 мм — идеально под дисплей. CNC нет — режу вручную металлопилой.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

Отверстие под дисплей: два отверстия сверлом, вставляю лезвие мини-плы, аккуратно вырезаю. Надфилем чистю. Сверлом 3 мм — все отверстия для крепления PCB и сбора двух пластин.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

Снимаю защитную пленку — удовольствие. PCB к базе — болты/гайки M3. PM2.5 к пластине — болты M2.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

Распорные гайки (самца и самка) собирают две пластины с нужным зазором.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

Корпус получился приятным, функциональным — воздух свободно циркулирует у датчиков.

Программирование

Подаю питание, прошиваю. Питание — Mini USB: 5V адаптер, зарядка телефона, пауэрбанк.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

Для загрузки в Arduino Pro Mini — USB-UART переходник на программный разъем. Важно: сначала включите основное питание устройства, иначе 500 мА от USB компа может не хватить. При загрузке скетча — переключатель «upload» на PCB в ON.

Скачать код Arduino и программу Nextion:

В Arduino IDE: Board → Arduino Pro Mini, Processor → правильная версия, Port, Programmer → «USBasp».

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

После прошивки Arduino — прошиваем дисплей Nextion. У него свой ARM-контроллер, управляющий экраном автономно.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

Графика (кнопки, текст, изображения, переменные) генерируется и управляется самим дисплеем. Редактор Nextion — создаем интерфейс там. Arduino и Nextion — 2 провода (UART). Arduino шлет значения датчиков на дисплей, дисплей — команды Arduino при нажатиях.

Прошивка дисплея: microSD карта с .TFT файлом из Nextion Editor.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

Выключенное питание → вставляю карту в слот дисплея → включаю питание → прошивка загружается. Вынимаю карту, включаю питание снова — монитор работает.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

Разбор кода

Библиотеки для каждого датчика: MHZ19, PMS, MQ131, DHT, DS3231 — ссылки в статье. Для понимания чтения — читайте документацию библиотек и пробуйте примеры.

SoftwareSerial — для MH-Z19 и PMS5003 (оба UART). Arduino-Nextion — аппаратный Serial.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

Arduino опрашивает датчики, шлет данные в Nextion. Пример:

Serial.print("tempV.val="); Serial.print(temp); Serial.write(0xff); Serial.write(0xff); Serial.write(0xff);

На Nextion переменная «tempV» — обновляем командой «tempV.val=22» (имя, .val, значение). Три байта 0xFF — обязательный терминатор любой команды Nextion.

В программе дисплея — таймер (цикл как loop в Arduino), обновляет числа на экране.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

В таймере — смена цвета фона каждого датчика в зависимости от значения.

Вторая страница — волна (график за 24ч), значения из хранилища Arduino.

Сборка DIY монитора качества воздуха: PM2.5, CO2, VOC, озон, температура и влажность на Arduino

Подписи часов и шкалы Y тоже от Arduino.

Поверх графика и чисел — прозрачные объекты «Hotspots» (кнопки). Нажатие на хотспот графика → переход на «page 0» (главный экран).

Вот так работает программа. Для полного понимания нужно знать работу каждого датчика/библиотеки и Nextion.

Примечание: VOC (MP503) — только сырые АЦП значения 0–1024. Чем выше — больше VOC. ppm/ppb не считаем.

Озон (MQ131): для точности нужно правильно задать setTimeToRead() и setR0() по примеру калибровки библиотеки. Но длинное setTimeToRead блокирует программу на время измерения. Есть обходные пути. Советую не использовать датчик озона, если он не критичен.

Надеюсь, урок понравился. Если да — поддержите на Patreon. Вопросы — в комментариях. Коллекция Arduino-проектов.

Производственный процесс

  1. Сборка станции качества воздуха и погоды на Raspberry Pi с InfluxDB и Grafana
  2. Измерение качества воздуха с OpenSensors: руководство по Arduino и Python
  3. Солнечный датчик качества воздуха на Helium: руководство по проектированию и развёртыванию
  4. Создание потрясающей системы Ambilight для монитора на Arduino
  5. Датчик CO2 K30: мониторинг качества воздуха в реальном времени на Arduino
  6. Умный вольтметр на Arduino и смартфоне — простое DIY-проект
  7. IoT-монитор пульса в реальном времени на Arduino и MAX30100
  8. Монитор температуры и реальные часы на Arduino Due с TFT-дисплеем 3.2"
  9. Сборка DIY VR-скейтборда на Arduino, Google Cardboard и Bluetooth
  10. Точный монитор качества воздуха на датчике Sharp GP2Y1010AU0F