Система экологического мониторинга
Интеллектуальная платформа для удаленного мониторинга качества воздуха с использованием IoT-датчиков и машинного обучения
🎯Цели проекта
- ✓Сбор данных о состоянии воздуха в режиме реального времени с физических станций
- ✓Визуализация экологической обстановки на интерактивной карте
- ✓Автоматическая классификация состояния воздуха и типов загрязнений
- ✓Применение ML-моделей для интеллектуального анализа данных
🏗️Архитектура системы
Физический уровень
Raspberry Pi + датчики MH-Z19C, MQ-135, MQ-5, Sharp GP2Y1010AU0F, BME280, GPS NEO-6M
Инфраструктура данных
Node-RED для сбора данных, InfluxDB для хранения временных рядов, Grafana для отладки
Веб-платформа
FastAPI backend, Next.js frontend, ML-сервис на Python для классификации
📊Датчики и измерения
MH-Z19C
CO₂ (ppm)
Инфракрасный датчик углекислого газа с высокой точностью
MQ-135
VOC / Вредные газы (raw ADC)
Датчик качества воздуха для обнаружения аммиака, бензола и других вредных газов
MQ-5
Горючие газы (raw ADC)
Датчик для обнаружения утечек природного газа, пропана, бутана
Sharp GP2Y1010AU0F
Пыль / PM (мг/м³)
Оптический датчик пыли и дыма с аналоговым выходом
BME280
T / H / P (°C, %, гПа)
Комбинированный датчик температуры, влажности и атмосферного давления
Ublox NEO-6M
GPS (координаты)
GPS-модуль для определения местоположения и точного времени
🤖Машинное обучение
Задачи классификации
- Классификация состояния воздуха (clean/moderate/polluted/danger)
- Определение типа загрязнения (пыль/дым/VOC/утечка газа)
- Геокластеризация станций (KMeans)
- Детекция аномалий (IsolationForest)
Используемые алгоритмы
- • RandomForestClassifier — классификация с вероятностями
- • KMeans — кластеризация по геолокации
- • IsolationForest — обнаружение аномалий
- • Правила экспертной системы — базовая логика
📈Экологический индекс
Интегральный показатель качества воздуха от 0 до 100, где меньшие значения означают лучшее качество.
0-25
Чистый
25-50
Умеренный
50-75
Загрязнённый
75-100
Опасный
// Формула расчёта:
eco_index = (0.4×CO₂_norm + 0.3×dust_norm + 0.2×MQ135_norm + 0.1×MQ5_norm) × 100