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


- 1 - ушел на работу (окно открыто);
- 2 - пришел с работы (окно открыто);
- 3 - ушел на тренировку (окно открыто);
- 4 - пришел с тренировки, закрыл окно и лег спать;
- 5 - в 5 утра открыл окно;
- 6 - в 6 утра встал и пошел на работу (окно открыто, работал утюг).
Именно ночной участок показывает главную проблему, когда CO₂ к утру доходит до 1800, а то и более 2000 ppm. И это данные для одного человека. Поэтому главной проблемой является не дневная духота, а ночная. И решать её нужно не «открой окно днём», а менять привычку перед сном.
3. Пороги и логика.
Когда система должна молчать, а когда - кричать
При разработке пороговых значений, на мой взгляд, необходимо придерживаться двух принципов: безопасности (пороги должны предупреждать только о реальной угрозе здоровью) и практичности (система не должна превращаться в источник стресса из-за ложных срабатываний).
Первый принцип, практически полностью, может быть разрешен использованием анализа временных рядов по методу Хольта. В этом случае, система будет оценивать не только текущие цифры данных, но и скорость их нарастания или убывания. Если какой-либо параметр растет слишком быстро, система отправит превентивное сообщение об опасности, еще до того, как показатели перейдут в красную зону.
Второй принцип достигается использованием гистерезиса, который исключает ложные срабатывания на границах зон и бережет нервы.
В результате, было бы правильным организовать трехуровневое информирование: 'Норма' (зеленый), 'Внимание' (желтый) и 'Тревога' (красный), динамически адаптирующееся под время суток и сезонность (например, нормы влажности зимой и летом существенно различаются).
Какие пороги я посчитал объективными. Сложилась такая таблица базовых порогов:
Таблица базовых порогов:
| Параметр | 🟢 Норма | 🟡 Внимание | 🔴 Тревога | Обоснование |
|---|---|---|---|---|
| CO₂ | до 800 ppm | 800–1100 ppm | > 1100 ppm | 800 ppm - порог комфорта по ASHRAE; >1100 ppm влияет на когнитивные функции (исследования Гарварда) |
| Температура | 21–23 °C | 18–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) и настройку уведомлений...
Продолжение следует...