Open-source монитор качества воздуха icaRUS с российским интернетом вещей
За сутки человек вдыхает 12 000 литров или 14 кг воздуха. Даже при малейшей концентрации вредных веществ суммарно за год набегает приличная масса. В России городское население составляет 74,95%. Туман может быть не просто конденсатом воды, но еще и смогом, состоящим из всевозможных опасных веществ. Поговорим только о части таких веществ. Помимо пыли человек вдыхает летучие органические соединения (VOC)(Широкий класс органических соединений, включающий ароматические углеводороды, альдегиды, спирты, кетоны, терпеноиды и др.). К примеру, человек за один год спокойно может вдохнуть 6.5 граммов кетонов (токсичное вещество). Это примерно половина столовой ложки ацетона. Наверное, вдыхать ацетон не полезно, но как узнать, что в нашем воздухе много летучих органических соединений? Наше правительство тоже задумывается об этом, но сегодня мы поговорим об открытом проекте icaRUS.
Проект icaRUS
Все начинающие ардуинщики первым делом делают температурный датчик, мы же пойдем чуть дальше. Будем мониторить не только температуру, но еще влажность, атмосферное давление и собственно концентрацию VOC.
Связь:
В современном мире нужен именно беспроводной датчик, поэтому прожорливые варианты по типу 3G/4G/Wi-Fi пока отметаем. Локальные решения Zigbee/Z-wave/ Bluetooth тяжело масштабируются. Цена тоже играет роль, поэтому NB-IoT/CAT-M тоже пока не будем смотреть. Возможно в скором времени цена на модули снизится, но сейчас цена на компоненты только растет. Поделитесь пожалуйста в комментариях столкнулись ли вы тоже с подорожанием компонентов. Для сенсоров остается самая подходящая связь это LPWAN. В мире есть несколько конкурирующих технологий, я подробно рассмотрел каждую из них. Про то как я выбирал подходящую сеть с покрытием в Москве можно написать отдельную статью, пишите кому будет интересно. Есть популярные LoRaWAN, SigFox, но выбор пал на отечественную технологию. Для меня самой подходящей связью в России оказалась сеть на базе российского протокола интернета вещей NB-Fi. Скажу сразу, что покрытие NB-Fi компания строит для корпоративных заказчиков (т.е. можно купить базовые станции и поставить куда надо). Но в Москве у компании оказалось покрытие, и мне дали к нему доступ для моего устройства. Связь реализовывается через чип WA1470. Можно было взять готовый модуль, но я решил пойти по сложному пути.
Сенсоры:
Изначально планировалось установить сенсор SGP30, который косвенно может давать информацию о концентрации CO2. В первой ревизии платы все работало, но видимо при перепайке на вторую, я что-то нажал и все сломалось. Взял SGP40, как рекомендует производитель.
Сами сенсоры не проверялись на соответствие реальным показаниям. При желание можно откалибровать и подать на аттестацию. Сейчас проверялась сама концепция, что датчики качества воздуха можно сделать беспроводными.
Первый прототип еще без подпаянного датчика SGP30
Для сенсора VOC требуется сообщить влажность и температуру, для этого установил BME280. Попутно этот сенсор умеет регистрировать атмосферное давление.
Микроконтроллер:
Выбран микроконтроллер от STMicroelectronics STM32L412KB. Он имеет малое энергопотребление, был в наличии и содержит много памяти.
Питание:
Для автономности установил Li-Ion аккумулятор емкостью 180 мАч. В дальнейшем планируется увеличить емкость. Для зарядки используется MicroUSB. Для питания всей схемы используется линейный стабилизатор напряжения, планируется перейти на более эффективное решение.
Исходники icaRUS можно найти здесь.
Плата делалась с небольшой помощью авторазводки Eremex Topor.
Антенна:
Антенна рассчитывалась под 868 МГц с учетом расположения датчика на бетонной стене.
Паять такие корпуса микросхем в кустарных условиях очень тяжело, я бы не смог так сделать аккуратно. Спасибо за помощь друзьям! И всё получилось, можете посмотреть результаты.
Корпус:
Корпус выбирался для установки внутри помещений, т. к. люди проводят как минимум треть своей жизни в помещениях. Корпус диаметром 90 мм имеет съемное крепление на стену, отверстие под microUSB и отверстие под кнопку.
Софт:
Данные отправляем раз в час с процентовкой каждые 2.5 минуты. Т. е. данные передаются раз в час, но с дополнительной информацией внутри часа. Сам протокол можно посмотреть здесь.
Пока не реализовывал функционал светодиода и не стали впаивать кнопку сброса.
Самым большим вопросом было общение с WA1470. Документации немного, есть только библиотека в которую можно интегрироваться. Сам чип общается по SPI и имеет еще две ножки: одна — это выход для подачи прерываний, а вторая это вход для включения или выключения всей микросхемы. Есть возможность взять просто модуль и общаться АТ-командами.
Потребление энергии:
Измерение с периодом в 30 секунд потребляет 15.6 микроампер. Вместе с передачей раз в час, получается 405 мкА. Получается на аккумуляторе датчик проработает всего 18 дней. Но тут сейчас передается много избыточной информации и в реальности так часто измерять не требуется. Плюс сейчас стоит ничтожно малый аккумулятор 180 мАч. Если просто вставить батарейку размера АА, то получается уже 260 дней автономности.
Данные далее попадают на сервер NB-Fi, где их можно будет получить через API.
Технические особенности работы с серверами
После общения с технической поддержкой необходимо зарегистрироваться здесь https://auth.waviot.ru/
Далее при покупке чипов WA1470, нужно запросить ID с ключами, которые зашиваются во Flash память микроконтроллера по адресу 0×0801ff80.
Сами сообщения в графическом интерфейсе можно будет посмотреть на сайте 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 как в этих примерах https://kb.waviot.ru/entry/68/
GET https://lk.waviot.ru/api.modem/full_info/?id=[ваш ID]
Authorization: bearer [JWT]
Формат передачи данных для сайта народного мониторинга описан на сайте в разделе Справка- API передачи данных
Куда выводить полученную информацию? Этот вопрос можно решить разными способами. Нашел интересную платформу народного мониторинга. Сюда можно добавить почти любой сенсор. У этой платформы есть один недостаток, для публичной публикации необходима установка датчиков снаружи зданий.
Результаты испытания передачи данных. В дальнейшем планируется провести валидацию полученных данных.
Сравнение влажности с сайта гидрометцентра и с нашим датчиком.
В плате есть много недочетов. Например, перепутаны ножки стабилизатора 3.3В. Поэтому потребуется третья ревизия платы.
Возможные апгрейды:
1) Установить всепогодные датчики, т. к. сейчас непонятно как будет вести себя устройство на морозе.
2) Сделать дополнительный кейс для установки снаружи зданий для защиты от дождя и снега. Интересный похожий проект.
3) Установить еще и другие сенсоры опасных веществ.
4) Установить харвестинг солнечной энергии для полной автономности.
5) Проработать применение этой технологии в других сферах: например, в теплицах.
Заключение:
Получился прототип датчика, который показывает, что данные о качестве воздуха можно собирать удаленно. Вот так он выглядит внутри помещения и снаружи.