Skip to content

ESP32, SCD40, 4G-модем - система мониторинга воздуха для пожилых

Система мониторинга

👁0просмотров

Чек-лист на выходные

Вы не покупаете датчик. Вы покупаете спокойствие.

В важности контроля состояния воздуха, сегодня, убеждать никого не приходится. Наши оценки окружающей нас среды являются субъективными и, порой, еще и далеки от объективных показателей. Причем, разные люди по-разному оценивают одни и те же состояния окружающей среды. Для каждого человека комфортными могут быть разные значения параметров, но они (эти параметры) хорошо изучены и, достаточно конкретно, определяются медицинскими показателями в виде промежутков значений "от" и "до".

Особую роль в оценке состояния окружающей среды имеет возраст человека. По молодости, мы редко задумываемся о возможном вреде отклонения этих показателей от идеальных, да и молодые люди легче переносят эти отклонения. Совсем по-другому отклонение показателей оценивается пожилыми людьми и по-другому эти отклонения влияют на их здоровье.

В этой статье речь пойдет о заботе о пожилых, как минимум о родителях. Электроника в этом может помочь.

1. Боль - почему воздух в квартире ухудшается незаметно.

Нормальными и комфортными для самочувствия считаются: температура 20–25 °C, относительная влажность 30–60%, а уровень углекислого газа (CO₂) - ниже 1000 ppm. Эти значения основаны на санитарных нормах, рекомендациях ВОЗ и данных медицинских исследований. Но на основе своего внутреннего состояния, когнитивных особенностей и возрастных искажений, а так же личностных черт эти значения нами воспринимаются по-разному.

Объективность в этот вопрос может внести наука Физика, в части Электроники, одним из разделов которой являются Датчики. Датчик – это устройство преобразующее некоторую физическую величину в значение тока или напряжения.

Человек – не датчик. Мы оцениваем окружающую среду не объективно и не одинаково, а наш возраст, в этом вопросе, добавляет дополнительный градиент. Например, с возрастом, чувствительность к CO₂ притупляется и, если молодой человек начинает зевать, у него снижается концентрация внимания уже при 1000 ppm, то пожилой человек просто «ложится пораньше» и списывает сонливость на давление. При возрастной адаптации, сухость слизистых воспринимается как норма, «В горле першит - наверное, простуда», а на самом деле влажность 22 % и слизистая носа не защищает от вирусов. Проветривание = сквозняк = болезнь. Это не лень и не упрямство.

2. Решение в одном абзаце - SCD40 + Wi-Fi + Go + Grafana.

Часто, наши родители живут на расстоянии, и присутственный контроль этого вопроса осуществлять оказывается сложно. Решением данной проблемы является установка в комнате (помещении) небольшой коробочки, содержащей датчики контроля вышеуказанных показателей. Также, необходим, как минимум, 4G-модем с выходом в интернет. На приемной стороне необходим компьютер, ноутбук или VPS-сервер. Для организации системы потребуется не более 3 дней. Цена вопроса обсуждается ниже – на мой взгляд достойно и не дорого. Здоровье не купишь!

Конструктивно, система оценки параметров воздуха, заключена в небольшую коробочку, внутри которой расположен микроконтроллер ESP32 и датчик SCD40 способный контролировать CO₂, температуру и влажность.

Схема проекта

flowchart LR
    A["🌡 SCD40"] -->|"I²C"| B["⚙ ESP32
JSON каждые 60с"] B -->|"WiFi"| C["📡 4G-модем"] C -->|"MQTT/HTTP"| D["🐹 Go-сервер"] D --> E[("🗄 БД
временные ряды")] E --> F["📈 Grafana
аналитика"] E --> G["💻 Дашборд
для меня
(полный)"] E --> H["👴 Дашборд
для родителей
(простой)"] style A fill:#e8f5e9,stroke:#4caf50,stroke-width:2px style B fill:#fff9c4,stroke:#f57f17,stroke-width:2px style C fill:#ffccbc,stroke:#e64a19,stroke-width:2px style D fill:#e3f2fd,stroke:#2196f3,stroke-width:2px style E fill:#b3e5fc,stroke:#0288d1,stroke-width:2px style H fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px

Микроконтроллер ESP32 читает данные с датчика SCD40 по шине I²C, формирует JSON и отправляет его по протоколу MQTT/HTTP, через WiFi --> 4G-модем, на сервер. Прошивка ESP32 простая, без OTA-обновлений по воздуху (сознательно: меньше точек отказа). На сервере находится программа (в моем случае, написанная на golang), принимающая данные с модема, складывающая их в БД, а сервис Grafana позволяет отображать собранные данные в браузере на дашборде после анализа необходимых характеристик.

HTML программы две: одна для меня – более сложная, другая, более простая с крупными буквами, без лишних цифр, для родителей. Никаких подписок на «умный дом», никаких хабов, никаких приложений, которые надо обновлять.

Такая архитектура выбрана по следующим причинам:

  • На контролируемой стороне нет стационарного интернета.
  • Большое расстояние (700 километров).
  • Пользователь не должен ничего настраивать.

Используемые компоненты

  1. ESP32 - популярный и недорогой 32-битный микроконтроллер (система на кристалле) со встроенными модулями Wi-Fi и Bluetooth.
  2. SCD40 (Sensirion) - это не «китайский датчик газа за 200 рублей». Внутри, оценивающая система, представляющая собой фотоакустический NDIR-элемент, который измеряет CO₂ напрямую по поглощению инфракрасного излучения, что позволяет получить:
    • Точность ±40 ppm + 5 % от показаний - для бытовой задачи более чем достаточно;
    • Не реагирует на запах борща, одеколона, жареную картошку (в отличие от дешёвых MQ-сенсоров, которые показывают «газ» от любого запаха);
    • Встроенные датчики температуры (±0,2 °C) и влажности (±1,8 % RH) в том же корпусе;
    • Самокалибровка (ASC) - не нужно раз в полгода ехать и «обнулять» прибор;
    • Заявленный ресурс без деградации - 10+ лет.
  3. 4G-модем - для подключения к сети интернет
  4. Go (Golang) - бэкенд для обработки данных
  5. InfluxDB - база данных для хранения результатов измерений и анализа данных
  6. Grafana - популярная платформа с открытым исходным кодом для визуализации, мониторинга и анализа данных.

На Рис.1. изображена тестовая плата разработки ESP32 с подключенным, по протоколу I²C, датчиком SCD40. Плата рабочая, на Рис.2., изображен суточный график контроля CO₂ для одного человека.

Датчик

Рис.1. Подключение датчика CO₂ SCD40 к ESP32

Датчик

Рис 2. Суточный график контроля CO₂
  • 1 - ушел на работу (окно открыто);
  • 2 - пришел с работы (окно открыто);
  • 3 - ушел на тренировку (окно открыто);
  • 4 - пришел с тренировки, закрыл окно и лег спать;
  • 5 - в 5 утра открыл окно;
  • 6 - в 6 утра встал и пошел на работу (окно открыто, работал утюг).

Именно ночной участок показывает главную проблему, когда CO₂ к утру доходит до 1800, а то и более 2000 ppm. И это данные для одного человека. Поэтому главной проблемой является не дневная духота, а ночная. И решать её нужно не «открой окно днём», а менять привычку перед сном.

3. Пороги и логика.

Когда система должна молчать, а когда - кричать

При разработке пороговых значений, на мой взгляд, необходимо придерживаться двух принципов: безопасности (пороги должны предупреждать только о реальной угрозе здоровью) и практичности (система не должна превращаться в источник стресса из-за ложных срабатываний).

Первый принцип, практически полностью, может быть разрешен использованием анализа временных рядов по методу Хольта. В этом случае, система будет оценивать не только текущие цифры данных, но и скорость их нарастания или убывания. Если какой-либо параметр растет слишком быстро, система отправит превентивное сообщение об опасности, еще до того, как показатели перейдут в красную зону.

Второй принцип достигается использованием гистерезиса, который исключает ложные срабатывания на границах зон и бережет нервы.

В результате, было бы правильным организовать трехуровневое информирование: 'Норма' (зеленый), 'Внимание' (желтый) и 'Тревога' (красный), динамически адаптирующееся под время суток и сезонность (например, нормы влажности зимой и летом существенно различаются).

Какие пороги я посчитал объективными. Сложилась такая таблица базовых порогов:

Таблица базовых порогов:

Параметр🟢 Норма🟡 Внимание🔴 ТревогаОбоснование
CO₂до 800 ppm800–1100 ppm> 1100 ppm800 ppm - порог комфорта по ASHRAE; >1100 ppm влияет на когнитивные функции (исследования Гарварда)
Температура21–23 °C18–20 или 24–26 °C<17 или >27 °CДля пожилых оптимальный диапазон уже, чем для молодых, из-за сниженной терморегуляции
Влажность40–55 %30–40 или 55–65 %<30 или >70 %40–55% - зона комфорта для дыхательных путей, а также минимального роста плесени

Сезонная логика

❄ Зимний сценарий (октябрь–апрель)

УсловиеДействиеПочему
CO₂ > 1100 ppm и T > 23°CДушно. Приоткройте окно на 5 минутТепло на улице - можно проветрить без риска переохлаждения
CO₂ > 1100 ppm и T < 21°CДушно, но прохладно. Откройте окно в другой комнатеИзбегаем сквозняков - пожилые люди чувствительны к холоду
RH < 25%Включите увлажнитель / повесьте мокрое полотенцеСухой воздух зимой - частая проблема из-за отопления

☀ Летний сценарий (май–сентябрь)

УсловиеДействиеПочему
CO₂ > 1100 ppm и T < 28°CОткройте окно, если на улице не жарчеЕстественная вентиляция эффективна, если снаружи прохладнее
CO₂ > 1100 ppm и T > 28°CВключите вентилятор, окно не открывайтеВ жару открытое окно только нагревает помещение
RH > 60%Становится душно. Включите вентилятор или кондиционер (режим осушения/сушки).Организм перегревается

Анти-спам: как не превратить заботу в пытку

Первые недели тестирования показали, что отправлять уведомления на каждое кратковременное превышение - плохая идея. Это создает 'информационный шум' и снижает доверие к системе. Всё собрал в три уровня фильтрации:

МеханизмЗначениеЦель
Скользящее среднее (15 мин)Алерт срабатывает только при среднем значении за 15 мин, а не на пикИгнорировать кратковременные скачки (открытие духовки, дыхание рядом с датчиком)
Тишина между алертами (2 часа)После отправки алерта - пауза 2 часаНе надоедать пользователю, даже если CO₂ продолжает оставаться высоким
Ночной режим (23:00–7:00)Уведомления только при >1500 ppm более 1 часаНе будить пожилых людей ночью; утром - сводка

Мониторинг здоровья устройства

Отсутствие данных - более критичный сигнал, чем высокий CO₂. Если ESP32 не отправляет показания более 30 минут, система должна отправить отдельное уведомление. Отсутствие поступающих данных может означать: отключение электричества, проблемы с интернетом, также, родители могут случайно выключить устройство. Такой алерт - повод позвонить и проверить, все ли в порядке.

P.S. Вы спросите: "Пауза 2 часа! А если превышение CO₂ состоялось из-за протечки газа, как раз в период паузы?"

Ответ прост: То, что мы сейчас обсуждаем: CO₂, влажность и температура, - это системы комфорта. Здесь риск - духота или сухость, а не угроза жизни. А вот детекция газа (метан, пропан, угарный газ) - это система безопасности, и к ней совсем другие требования. И это другой датчик MQ-2 / MQ-5 / MQ-9 и другие реакции на события - другой пост.

4. Основные научные исследования показывающие важность мониторинга здоровья

  • Избыток CO₂ в крови меняет кислотно-щелочной баланс (вызывает ацидоз), нарушая работу внутренних органов. Инженерный центр СЕМ ТЕСТ ИНСТРУМЕНТ
  • Исследования (включая данные британских ученых) показывают, что при росте CO₂ выше 1000 ppm, продуктивность и внимание человека заметно снижаются. ('Наука и жизнь', №3 2011)
  • Влияние высокого CO₂ на сонливость и засыпание (Исследование 2024 года в журнале Environmental Research): Это исследование на здоровых добровольцах показало, что воздействие CO₂ на уровне 4851 ppm значительно сокращает время засыпания (латентность сна) и усиливает субъективную сонливость по сравнению с контрольными условиями (1102 ppm). Это прямое доказательство того, что высокий уровень CO₂ вызывает дневную сонливость.
  • Влияние уровня CO₂ на качество сна (Исследование из Корейского индекса цитирования): В этом исследовании сравнивали качество сна при концентрации CO₂ 700-800 ppm и 2000-3000 ppm. Был сделан вывод, что высокая концентрация углекислого газа вызывает "эффект пробуждения" центральной нервной системы, приводит к фрагментации REM-сна (сна со сновидениями) и поддерживает возбужденное состояние.
  • Влияние CO₂ на стабильность сна (Исследование 2024 года в Journal of Sleep Medicine): Это исследование, проведенное на людях с бессонницей, показало, что воздействие 2% CO₂ (очень высокая концентрация) парадоксальным образом улучшает общую стабильность сна. Этот результат не отменяет предыдущие, а скорее иллюстрирует сложность и дозозависимость эффекта CO₂.
  • Связь CO₂ и когнитивных функций после сна (Исследование из University of North Carolina at Charlotte): Работа показала, что высокий уровень CO₂ в спальне напрямую влияет на субъективное и объективное качество сна и снижает рабочую память на следующий день, хотя этот эффект опосредован нарушениями сна.

Какие сообщения видят родители на своём дашборде

Дашборд родителей - это одна страница с тремя крупными блоками:

При красном уровне:

┌──────────────────────────────────────────────-─┐
│ 🔴 ПРОВЕТРИ КОМНАТУ 🌿                         │
│                                                │
│ 💨CO₂: 1250          🌡 25°         💧 33%      │
│                                                │
│ ✨Совет: открой окно прямо сейчас на 10 минут  │
└──────────────────────────────────────────────-─┘

При желтом уровне:

┌───────────────────────────────────────────────┐
│ 🟡 ДУШНОВАТО 🌿                               │
│                                               │
│ 💨CO₂: 950          🌡 24°         💧 38%      │
│                                               │
│ ✨Совет: приоткрой окно на 5 минут            │
└───────────────────────────────────────────────┘

При зеленом уровне:

┌───────────────────────────────────────--───────┐
│ 🟢 ХОРОШО 🌿                                   │
│                                                │
│ 💨CO₂: 620          🌡 23°         💧 41%       │
│                                                │
│ ✨Совет: всё в порядке, ничего делать не нужно │
└─────────────────────────────────────--─────────┘

Совет меняется в зависимости от сезона и времени суток.

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

 
┌──────────────────────────────────────────────────────┐
│ ☀️ ДОБРОЕ УТРО!                                      |
│                                                      │
│ 📊 СВОДКА ЗА ВЧЕРА:                                  │
│                                                      │
│ 💨 CO₂: превышал 1100 ppm 3 раза                     │
│ (суммарно 1 ч 20 мин)                                │
│                                                      │
│ 🌡️ Температура: в норме (21–23°C)                    |
│                                                      │
│ 💧 Влажность: падала ниже 30%                        │
│ (с 14:00 до 16:00)                                   |
│                                                      |
│ ✨ РЕКОМЕНДАЦИЯ:                                     |
│ Включите увлажнитель на 2 часа сегодня               |
│                                                      |
│ 🟢 Всё под контролем. Хорошего дня! 🌿                |
└──────────────────────────────────────────────────────┘

В следующей части мы рассмотрим непосредственно программную часть ESP32 и сервера (С и Go) и настройку уведомлений...

Продолжение следует...

Released under the MIT License.