Как стать автором
Обновить

Как я сделал Open-source монитор качества воздуха

Время на прочтение5 мин
Количество просмотров11K

За сутки человек вдыхает 12000 литров или 14 кг воздуха. Даже при малейшей концентрации вредных веществ суммарно за год набегает приличная масса. В России городское население составляет 74,95%. Туман может быть не просто конденсатом воды, но еще и смогом, состоящим из всевозможных опасных веществ. Поговорим только о части таких веществ. Помимо пыли человек вдыхает летучие органические соединения (VOC). Это широкий класс органических соединений, включающий ароматические углеводороды, альдегиды, спирты, кетоны, терпеноиды и др. К примеру, человек за один год спокойно может вдохнуть 6,5 граммов кетонов (токсичное вещество). Это примерно половина столовой ложки ацетона. Наверное, вдыхать ацетон не полезно, но как узнать, что в нашем воздухе много летучих органических соединений? Наше правительство тоже задумывается об этом, но сегодня мы поговорим об открытом проекте icaRUS.

Проект icaRUS.
Проект icaRUS.

Все начинающие ардуинщики первым делом делают температурный датчик, мы же пойдем чуть дальше. Будем мониторить не только температуру, но еще влажность, атмосферное давление и собственно концентрацию VOC.

Связь

В современном мире нужен именно беспроводной датчик, поэтому прожорливые варианты по типу 3G/4G/Wi-Fi пока отметаем. Локальные решения Zigbee/Z-wave/ Bluetooth тяжело масштабируются. Цена тоже играет роль, поэтому NB-IoT/CAT-M тоже пока не будем смотреть. Возможно, в скором времени цена на модули снизится, но сейчас цена на компоненты только растет. Поделитесь, пожалуйста, в комментариях, столкнулись ли вы тоже с подорожанием компонентов. Для сенсоров остается самая подходящая связь это — LPWAN.

В мире есть несколько конкурирующих технологий, я подробно рассмотрел каждую из них. Я столкнулся с большой сложностью поиска рабочей сети с покрытием в Москве, пожалуйста, расскажите в комментариях интересно ли Вам увидеть в следующей статье информацию о разговорах с операторами. Есть популярные LoRaWAN и SigFox, но выбор пал на отечественную технологию. Для меня самой подходящей связью в России оказалась сеть на базе российского протокола интернета вещей NB-Fi. Скажу сразу, что покрытие NB-Fi компания строит для корпоративных заказчиков (т.е. можно купить базовые станции и поставить куда надо). Но в Москве у компании оказалось покрытие, и мне дали к нему доступ для моего устройства. Связь реализуется через чип WA1470. Можно было взять готовый модуль, но я решил пойти по сложному пути.

Вид сверху.
Вид сверху.

Сенсоры

Изначально планировалось установить сенсор SGP30, который косвенно может давать информацию о концентрации CO₂. В первой ревизии платы все работало, но видимо при перепайке на вторую, я что-то нажал и все сломалось. Взял SGP40, как рекомендует производитель.

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

Первый прототип, еще без подпаянного датчика SGP30.
Первый прототип, еще без подпаянного датчика SGP30.

Для расчета VOC требуется сообщить сенсору SGP40 влажность и температуру, для этого установил BME280. Попутно этот сенсор умеет регистрировать атмосферное давление.

Микроконтроллер

Выбран микроконтроллер от STMicroelectronics STM32L412KB. Он имеет малое энергопотребление, был в наличии и содержит много памяти.

Вид снизу.
Вид снизу.

Питание

Для автономности установил Li-ion аккумулятор емкостью 180 мАч. В дальнейшем планируется увеличить емкость. Зарядка осуществляется через разъем Micro-USB. Для питания всей схемы используется линейный стабилизатор напряжения, планируется перейти на более эффективное решение.

Схема и печатная плата

Все исходники icaRUS можно найти здесь.

Схема. Нажмите для увеличения.
Схема. Нажмите для увеличения.

Схема в PDF находится здесь.

Плата делалась в Altium Designer с небольшой помощью авторазводки Eremex Topor.

Печатная плата.
Печатная плата.

Антенна

Антенна рассчитывалась под 868 МГц с учетом расположения датчика на бетонной стене.

Модель для расчета антенны.
Модель для расчета антенны.
Коэффициент отражения волны. Нажмите для увеличения.
Коэффициент отражения волны. Нажмите для увеличения.
Коэффициент стоячей волны. Нажмите для увеличения.
Коэффициент стоячей волны. Нажмите для увеличения.
Диаграмма направленности.
Диаграмма направленности.

Сборка

Паять такие корпуса микросхем в кустарных условиях очень тяжело, я бы не смог так сделать аккуратно. Спасибо за помощь друзьям! Собирали с помощью пасты, нижнего преднагревателя, паяльного фена и керамического паяльника. И всё получилось, можете посмотреть результаты:

Трансивер WA1470.
Трансивер WA1470.

Корпус

Корпус выбирался для установки внутри помещений, т. к. люди проводят, как минимум, треть своей жизни в помещениях. Корпус диаметром 90 мм имеет съемное крепление на стену, отверстие под Micro-USB и отверстие под кнопку.

Вид сбоку.
Вид сбоку.

Софт

Данные отправляем каждый час с процентным расходом передаваемых показателей каждые 2,5 минуты. Т. е. данные передаются раз в час, но с дополнительной информацией внутри часа. Сам протокол можно посмотреть здесь.

Пока что не реализовал функционал светодиода и не стал впаивать кнопку сброса.

Самым большим вопросом было общение с WA1470. Документации немного, есть только библиотека, в которую можно интегрироваться. Сам чип общается по SPI и имеет еще две ножки: одна — это выход для подачи прерываний, а вторая — это вход для включения или выключения всей микросхемы. Есть возможность взять просто модуль и общаться АТ-командами.

Плата в корпусе.
Плата в корпусе.

Потребление энергии

Измерение с периодом в 30 секунд потребляет 15,6 мкА. Вместе с передачей раз в час получается 405 мкА. Получается, на аккумуляторе датчик проработает всего 18 дней. Но тут сейчас передается много избыточной информации, и в реальности так часто измерять не требуется. Плюс сейчас стоит ничтожно малый аккумулятор 180 мА·ч. Если просто вставить батарейку размера АА, то получается уже 260 дней автономности.

Потребление без передачи.
Потребление без передачи.
Среднее потребление.
Среднее потребление.

Сеть и данные

Далее данные попадают на сервер NB-Fi, где их можно будет получить через API.

Технические особенности работы с серверами

После общения с технической поддержкой необходимо зарегистрироваться здесь https://auth.waviot.ru/

Далее при покупке чипов WA1470 нужно запросить ID с ключами, которые зашиваются во Flash память микроконтроллера по адресу 0x0801FF80.

Сами сообщения в графическом интерфейсе можно будет посмотреть на сайте https://b.waviot.ru/

Обмен данными. Нажмите для увеличения.
Обмен данными. Нажмите для увеличения.

Авторизация идёт так: https://kb.waviot.ru/entry/67/

POST https://auth.waviot.ru/?action=user-login&true_api=1

Content-type: application/json
X-requested-with: XMLHttpRequest
{"login": "example@example.com","password":"your_password"}

 https://kb.waviot.ru/entry/66/#%D0%97%D0%B0%D0%BF%D1%80%D0%BE%D1%81%20DL%20%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%BE%D0%B2 

  /api/dl?modem_id=8407701&from=1574780505&to=1574783503&limit=2

Необходимо еще добавить jwt токен, полученный после авторизации.

Как добавлять jwt можно посмотреть в этих примерах.

GET https://lk.waviot.ru/api.modem/full_info/?id=[ваш ID]
Authorization: bearer [JWT]

Формат передачи данных для сайта народного мониторинга описан на нём в разделе Справка -> API передачи данных.

Куда выводить полученную информацию? Этот вопрос можно решить разными способами. Нашел интересную платформу народного мониторинга. Сюда можно добавить почти любой сенсор. У данной платформы есть один недостаток — для общедоступной публикации необходима установка датчиков снаружи зданий.

Результаты передачи данных

В дальнейшем планируется провести валидацию полученных данных.

График VOC. Нажмите для увеличения.
График VOC. Нажмите для увеличения.

Сравнение влажности с сайта Гидрометцентра с нашим датчиком.

Данные сайта Гидрометцентра. Нажмите для увеличения.
Данные сайта Гидрометцентра. Нажмите для увеличения.
Данные с нашего датчика. Нажмите для увеличения.
Данные с нашего датчика. Нажмите для увеличения.

В плате есть много недочетов. Например, перепутаны ножки стабилизатора 3,3 В. Поэтому потребуется третья ревизия платы.

Возможные апгрейды:

  1. Установить всепогодные датчики, т. к. сейчас непонятно, как будет вести себя устройство на морозе.

  2. Сделать дополнительный кейс для установки снаружи зданий для защиты от дождя и снега. Интересный похожий проект.

  3. Установить дополнительные сенсоры опасных веществ.

  4. Установить сбор солнечной энергии для полной автономности.

  5. Проработать применение этой технологии в других сферах, например в теплицах.

Заключение

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

Датчик в интерьере.
Датчик в интерьере.
Датчик возле окна.
Датчик возле окна.
Теги:
Хабы:
Всего голосов 33: ↑33 и ↓0+33
Комментарии52

Публикации

Истории

Ближайшие события

12 – 13 июля
Геймтон DatsDefense
Онлайн
14 июля
Фестиваль Selectel Day Off
Санкт-ПетербургОнлайн
19 сентября
CDI Conf 2024
Москва