Air Surfer: DIY-система мониторинга качества воздуха на Arduino Mega 2560
Компоненты и материалы
- Arduino Mega 2560 R3 — 1 шт.
- TFT-дисплей 3.2″ 480×320 (на шилде для Mega) — 1 шт.
- MH-Z19 (CO₂, UART/PWM) — 1 шт.
- SI7021 (температура/влажность, I2C) — 1 шт.
- DS18B20 в нержавейке (уличная температура, 1-Wire) — 1 шт. + резистор 4.7 кОм
- DS1307 RTC (I2C) — 1 шт.
- 3 светодиода (CO₂: зелёный/жёлтый/красный) + 3 кнопки с подсветкой
- Фоторезистор (подсветка кнопок/LED)
- LM2596 (DC-DC, 19V→7V) + блок питания 12-19V
- Авиационный разъём GX12-3 (уличный датчик)
- Корпус из фанеры 3 мм (разрезать ножовкой/дремелем)
Описание проекта
Автор (гражданский инженер) хотел дешевую альтернативу дорогим CO₂-мониторам. Устройство показывает на большом TFT-экране:
- CO₂ (ppm) с цветовой индикацией (зелёный <800, жёлтый 800-1200, красный >1200)
- Влажность и температуру внутри (SI7021)
- Температуру снаружи (DS18B20)
- Время (RTC DS1307)
Управление: 3 кнопки (часы, минуты, смена цветовой схемы текста). Фоторезистор автоматически снижает яркость ночью.
Особенности датчиков
- MH-Z19: автокалибровка каждые 24ч (нужно выдерживать в чистом воздухе ~400 ppm). UART надежнее PWM. В коде — запрос командой 0xFF 0x01 0x86… и проверка CRC.
- SI7021: промышленная точность, I2C, никаких проблем.
- DS18B20: требует pull-up 4.7 кОм, 1-Wire библиотека DallasTemperature.
Питание
Блок 19V/15V → LM2596 → 7V на Vin Mega. 12V вызывали перегрев стабилизатора на плате, 7V — оптимум. Авиационный разъём для уличного датчика выведен на дне корпуса.
Корпус
Три попытки: полимерная глина (плохо держала форму), фанера 6 мм (трудно резать), фанера 3 мм — идеально. Детали вырезаны канцелярским ножом и наждачкой, покраены акриловым лаком. Крепление — шурупы/эпоксидка.
Стоимость (примерно)
| Компонент | Цена ($) |
|---|---|
| Arduino Mega 2560 | 8.27 |
| TFT 3.2″ | 8.00 |
| MH-Z19 | 20.00 |
| SI7021 | 2.00 |
| DS18B20 | 1.14 |
| RTC DS1307 | 0.55 |
| Остальное (кнопки, разъёмы, провод, фанера, ЛДО) | ~15.55 |
| Итого | 55.51 |
Скетч (основные модули)
Используются библиотеки: Wire, RTClib, SoftwareSerial, SparkFunHTU21D, OneWire, DallasTemperature, UTFT.
co2()— опрос MH-Z19 по UART с проверкой CRC.th()— чтение SI7021 и DS18B20.photosensor()— автоподсветка кнопок (4 уровня).dateandtime()— коррекция часов/минут кнопками.lamps()— цветовые индикаторы CO₂, влажности, температур.drawmain()— отрисовка всего экрана шрифтом Ubuntu.screenreset()— очистка экрана в 00:00 и 12:00 (лечение артефактов дешёвого TFT).
// Фрагмент: опрос CO2
byte cmd[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79};
Serial3.write(cmd, 9);
Serial3.readBytes(response, 9);
// проверка CRC, извлечение ppm = response[2]*256 + response[3]
Схема
См. раздел Schematics (фото ручного чертежа). Основные шины: I2C (SDA/SCL 20/21), Serial3 (TX3/RX3 14/15) для MH-Z19, 1-Wire на D9, кнопки на D2/D3/D4 (INPUT_PULLUP), LED на PWM-пинах 5,7,8,11.
Выводы
Устройство работает стабильно месяцами. Автокалибровка MH-Z19 устраняет дрейф. TFT требует периодической перерисовки из-за артефактов. Проект полностью открыт — код и фото сборки в репозитории.
Производственный процесс
- Измерение качества воздуха с OpenSensors: руководство по Arduino и Python
- DIY монитор качества воздуха: экономичный детектор, соответствующий стандартам EPA
- Основное руководство по консервации компрессоров на зиму: защита оборудования от повреждений холода
- Пневматические цилиндры-исполнители: основы и применение
- Полное руководство по выбору лучших компрессоров для вашего производства
- Как суперчарджеры повышают эффективность и мощность двигателя
- Как системы кондиционирования автомобиля обеспечивают прохладу и комфорт
- Пневмоподвеска (Air Suspension): устройство, виды пневмобаллонов, принцип работы, плюсы и минусы
- Системы впрыска воздуха: снижение выбросов в выхлопе
- Сжатый воздух: скрытые затраты, бьющие по прибыли