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) и настройку уведомлений...

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

Как вам статья?

ℹ️ Вы можете выбрать любую реакцию (доступен один голос на статью).

Обсуждение статьи (0)

Пока нет комментариев. Будьте первым!

Released under the MIT License.