За сутки человек вдыхает 12 000 литров или 14 кг воздуха. Даже при малейшей концентрации вредных веществ суммарно за год набегает приличная масса. В России городское население составляет 74,95%. Туман может быть не просто конденсатом воды, но еще и смогом, состоящим из всевозможных опасных веществ. Поговорим только о части таких веществ. Помимо пыли человек вдыхает летучие органические соединения (VOC). Это широкий класс органических соединений, включающий ароматические углеводороды, альдегиды, спирты, кетоны, терпеноиды и др. К примеру, человек за один год спокойно может вдохнуть 6,5 граммов кетонов (токсичное вещество). Это примерно половина столовой ложки ацетона. Наверное, вдыхать ацетон не полезно, но как узнать, что в нашем воздухе много летучих органических соединений? Наше правительство тоже задумывается об этом, но сегодня мы поговорим об открытом проекте 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, как рекомендует производитель.
Сами сенсоры не проверялись на соответствие реальным показаниям. При желании можно откалибровать и подать на аттестацию. Сейчас проверялась сама концепция, что датчики качества воздуха можно сделать беспроводными.
Для расчета VOC требуется сообщить сенсору SGP40 влажность и температуру, для этого установил BME280. Попутно этот сенсор умеет регистрировать атмосферное давление.
Микроконтроллер
Выбран микроконтроллер от STMicroelectronics STM32L412KB. Он имеет малое энергопотребление, был в наличии и содержит много памяти.
Питание
Для автономности установил Li-ion аккумулятор емкостью 180 мАч. В дальнейшем планируется увеличить емкость. Зарядка осуществляется через разъем Micro-USB. Для питания всей схемы используется линейный стабилизатор напряжения, планируется перейти на более эффективное решение.
Схема и печатная плата
Все исходники icaRUS можно найти здесь.
Схема в PDF находится здесь.
Плата делалась в Altium Designer с небольшой помощью авторазводки Eremex Topor.
Антенна
Антенна рассчитывалась под 868 МГц с учетом расположения датчика на бетонной стене.
Сборка
Паять такие корпуса микросхем в кустарных условиях очень тяжело, я бы не смог так сделать аккуратно. Спасибо за помощь друзьям! Собирали с помощью пасты, нижнего преднагревателя, паяльного фена и керамического паяльника. И всё получилось, можете посмотреть результаты:
Корпус
Корпус выбирался для установки внутри помещений, т. к. люди проводят, как минимум, треть своей жизни в помещениях. Корпус диаметром 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"}
/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 передачи данных.
Куда выводить полученную информацию? Этот вопрос можно решить разными способами. Нашел интересную платформу народного мониторинга. Сюда можно добавить почти любой сенсор. У данной платформы есть один недостаток — для общедоступной публикации необходима установка датчиков снаружи зданий.
Результаты передачи данных
В дальнейшем планируется провести валидацию полученных данных.
Сравнение влажности с сайта Гидрометцентра с нашим датчиком.
В плате есть много недочетов. Например, перепутаны ножки стабилизатора 3,3 В. Поэтому потребуется третья ревизия платы.
Возможные апгрейды:
Установить всепогодные датчики, т. к. сейчас непонятно, как будет вести себя устройство на морозе.
Сделать дополнительный кейс для установки снаружи зданий для защиты от дождя и снега. Интересный похожий проект.
Установить дополнительные сенсоры опасных веществ.
Установить сбор солнечной энергии для полной автономности.
Проработать применение этой технологии в других сферах, например в теплицах.
Заключение
Получился прототип датчика, который показывает, что данные о качестве воздуха можно собирать удаленно. Вот так он выглядит внутри помещения и снаружи:
Комментарии (49)
juramehanik
15.11.2021 13:59+1Добрый день!
интересный конечно проект и круто что вы сами решили сделать радиотракт к чипу а не тупа соединить два модуля и вуаля, но немного "но" все таки есть, хотя они не совсем по теме:
-исходники конечно открытые, но если я что то захочу менять мне ведь нужна лицензия на альтиум? Это вообще больная тема open hardware , можно ли называть такие проекты полноценно опенсурсными, если они релизованы на софте , требующим лицензии (хотя это вопрос freeware конечно же)
-как простому смертному купить WA1470?kolyandex
15.11.2021 14:16В продаже на али есть stm32 с трансивером на борту из серии wl55/wle5. Суть та же.
juramehanik
15.11.2021 14:41nb-fi и lora разные протоколы, и вроде я так понял не совместимые
kolyandex
15.11.2021 14:53Посмотрел описание nb-fi, кмк это очередная попытка изобрести велосипед в погоне за финансированием и общественным признанием (чип их собственного производства, какие-то нереальные цифры емкости сети и куда же без этого - отечественные алгоритмы шифрования и росстандарт).
https://waviot.ru/technology/about-NB-Fi/
PS. И да, nb-fi судя по всему несовместим с распространенными трансиверами. WL поддерживает BPSK модуляцию, а тут DBPSK (не знаю в чем отличия, но они судя по всему есть)
SergeySavkin Автор
15.11.2021 14:27+1Добрый!
1)На мой взгляд есть разные уровни открытого проекта. Например, мой содержит альтиумовские файлы и проект под IAR. Для которых нужны платные программы. Ну во первых, эти файлы можно импортировать с помощью EasyEDA или KiCAD(пару лет назад точно можно было). Во вторых если вдаваться в глубину, то получается и Windows тоже платный. К сожалению, пока еще не дошел до уровня когда на чистом линуксе в кикаде и Vim сделать весь проект.
2)Как правило, сама компания только с юр.лицами работает, а с физ.лицами работают их дилеры, опубликованы у них на сайте. Думаю, им проще написать, указать нужные кол-во трансиверов, девкитов/бс, других компонентов и они сориентируют. Самое комфортное - купить девкит у них, но можно попробовать купить только радиомодуль (на нем кроме трансивера все необходимые компоненты есть - ТСXO, LDO, прочая нужная обвязка - эту рассыпуху в мелких количествах самому недорого купить затруднительно). Вот тут ссылка
soceng
16.11.2021 16:351)На мой взгляд есть разные уровни открытого проекта. Например, мой содержит альтиумовские файлы и проект под IAR. Для которых нужны платные программы. Ну во первых, эти файлы можно импортировать с помощью EasyEDA или KiCAD(пару лет назад точно можно было). Во вторых если вдаваться в глубину, то получается и Windows тоже платный. К сожалению, пока еще не дошел до уровня когда на чистом линуксе в кикаде и Vim сделать весь проект.
Какое ПО использовалось для моделирования антенны? Думается, что стоимость windows, altium и пр. на порядок ниже САПРа для ВЧ моделирования…
В итоге смысла в открытости такого проекта становится ещё меньше. Изменение форм-фактора платы приведет к разваливанию характеристик антенны, а подстроить её никто не сможет без дорогостоящего САПРа.SergeySavkin Автор
16.11.2021 17:06HFSS, но как отмечал ниже, что это делал знакомый. Сам я еще не готов моделировать антенны. Суть этого проекта, что как раз сделать открытым результаты интеллектуальной работы и расчета дорогих программ
Sensimilla
15.11.2021 16:05Уровень летучих органических соединений в воздухе - это не то, ради чего создаются гос. программы экологического мониторинга и не самое большое зло среди загрязнителей. Человеческий нос - прекрасный датчик VOC, он чувствует запах ацетона, бензина, уксуса и т.д. в невероятно низких концентрациях. Также и запах горячего кофе и жареных тостов человеческий нос чувствует не хуже этих датчиков.
Это я к тому, что всё это игрушечки. Какую-то пользу эти датчики могут принести, как измерители температуры, влажности и м.б. атмосферного давления (не знаю, может ли данный датчик), а этот VOC и еще т.н. "эквивалент CO2" - совсем бессмысленное дело
SergeySavkin Автор
15.11.2021 16:50+1Датчик измеряет температуру, влажность, атмосферное давление и собственно VOC. В датчике SGP30 был "эквивалент CO2", но в текущей реализации SGP40, который, как я понял не "эквивалент CO2". Правильно ли я понимаю, что вы предлагаете вести мониторинг экологической обстановки путем опроса людей?
Sensimilla
15.11.2021 17:05+4Зачем передегривать, я говорил про конкретный VOC. Сделайте датчики РМ2.5, NO2, SO2, O3, CO - вот это экология, это гораздо важнее
mortadella372
16.11.2021 13:02Кстати, вам не приходит в голову доступного датчика NOx?
SergeySavkin Автор
16.11.2021 13:32Была мысль прямо такой поставить https://www.sensirion.com/en/environmental-sensors/gas-sensors/sgp41/
Berkseo
16.11.2021 00:45Здравствуйте, в статье не увидел к сожалению ни одного графика с датчиков. В тексте нашел ссылку на гит проекта, интересовало как вы реализовали работу sgp40 ...мне показалось что вы получаете только raw, а это же прям совсем не voc. А подключаемой библиотечки сенсорион вок алгоритм не увидел. Поделитесь скринами графиков с данными работы вашего устройства.
Berkseo
16.11.2021 01:19Был невнимателен, скрин увидел по voc, но данные очень странные не находите?
SergeySavkin Автор
16.11.2021 09:28Согласен, что странные, поэтому сейчас как раз занимаемся проверкой этих данных.
pecherskih
15.11.2021 18:19+1Добрый день. Очень интересные эти датчики VOC. Я так же ими занимался пять лет назад, когда они только что появились. Мы передавали данные по BLE, bluetooth 4.0 на смартфон. Все было неплохо за исключением того, что датчики первого поколения чем то отправлялись и теряли свою чувствительность. Нагревом оживить их уже не получалось. Датчики второго поколения уже имели специальную мембрану, что бы не пропускать какой то вид соединений. Это частично помогало, но полностью решить проблему на тот момент качественно не удавалось. Не подскажите, как обстоит дело на данный момент.
SergeySavkin Автор
15.11.2021 18:41Пока только начал тестировать на долгую дистанцию. А у Вас как быстро они теряли чувствительность? Не было ли перегрева от постоянно включенного нагревателя?
pecherskih
16.11.2021 16:46+1Если нагреватель включали на постоянку, то потом датчики долго не могли выйти на режим. Но не сгорали. Мы их заставляли работать в импульсном режиме, как и рекомендует производитель. ШИМ с большой скважностью. В Москве на столе они вроде бы как то работали. Дело зимой было и мы их калибровали на чистый воздух, выставляя на улицу на подоконник. Как то работали. А потом меня отправили на производство в Китай :-) и там была полная беда. С утра датчики работали, а к вечеру падала чувствительность и мы не могли понять в чем дело. Я уже не помню какие мы сначала датчики применяли, а потом пытались использовать SGPC3. Вот на них мембрана и стояла. Под микроскопом выглядела как тонкая приклеенная пленка.
Nick0las
15.11.2021 19:41+1Спасибо за статью. Приятно когда люди не берут и спаивают модули проводками а проектируют плату, и расчитывают антенну, делают красивый корпус. Это показывает уровень разработчика.
А вот если обсуждать проект, то есть ряд вопросов:
У вас в большом корпусе получился очень маленький аккумулятор, соответственно маленькая автономность. Я не считал милиметры но навскидку можно легко подобрать аккум с 10 раз больше в этот корпус. В итоге будет 180 дней автономности или отправка раз в 10 мин и примерно месяц автономности. Чем обусловлен выбор маленького аккумулятора?
Наиболее интересные показатели в помещении это температура и концентрация CO2 (потому что система умного дома может на них легко влиять). Но VOC датчик не самый лучший инструмент мерять CO2. И для автоматической вентиляции мерять раз в час редко на мой взгляд (когда много человек набивается в небольшую комнату CO2 выходит за комфортные границы быстрее чем за час). Для эксплуатации в системе умного дома надо бы докрутить параметры.
-
Если делать уличный вариант то стоит начинать в проектирования корпуса и положения датчика в нем. Стоит позаботиться чтобы дождь и городская пыль не убила датчик. Я бы ставил датчик внутри корпуса, отверстием вниз и позаботился о защите от брызг. Хотя это вообще вопрос - пылеустойчивость VOC датчиков, MEMS барометров и твердотельных датчиков влажности. У меня SHT21 просто лежал на столе чувствительной стороной вверх, наловил пыли за несколько лет и стал странно себя вести (показания немного врут + если поднести к нему что-то влажное то вначале идет заброс показаний вниз, а только потом рост).
SergeySavkin Автор
16.11.2021 09:41Спасибо, очень приятно!
Аккумулятор попался случайным образом из наличия в ЧИПиДИП. В этот корпус можно вместить и в 20 раз больше аккумулятор. Или вставить тионилхлоридные батарейки.
Сейчас концентрация VOC измеряется раз в 30 секунд. Можно передавать раз в час, но с процентовкой в 2.5 минуты. Или задействовать светодиод при превышении допустимого уровня. CO2eq мы измеряли на датчике SGP30, вот даже графики. Но сам датчик оказался не самым стабильным.
3.Согласен про корпус. Как мне кажется, потребуется некая мембрана, которая пропустит только воздух и задержит пыль, но получается все равно придется периодически обслуживать датчик. Даже банально температурные датчики имеют тенденцию со временем уходить. Недавно видел новость, что придумали как делать периодическую самокалибровку, но она требует нагрева до температуры размагничивания, если я не ошибаюсь.
Nick0las
16.11.2021 14:29Теперь с аккумулятором понятно. Батарейки тоже неплохо, но в таком корпусе чтоб сменить батарейки надо корпус разбирать весь.
Если данные используются для управления автоматикой а не только для записи в лог то проблема будет не в разрешении а в задержке. Например если в небольшую комнату пришли люди, человек 5-10 пора увеличивать подачу свежего воздуха уже через 10-20 мин, а автоматика узнает об этом через час.
С мембранами и сетками тоже все не так однозначно. У меня есть опыт использования колпачка SF2 для датчика SHT21. Если капля дождя попадает на колпачок датчик показывает сильно завышенную влажность др нескольких часов пока колпачок не просохнет. Надо делать комбинацию из крупных сеток, и сложной геометрии корпуса чтобы до датчика добирался воздух но не пыль с водой. Про уход и калибровку термодатчиков - все зависит от используемого физического принципа. Как раз с температурой все просто - можно найти датчик который хорошо изоирован от среды и не уходит. А вот по влажности и газовым датчикам - вопросов много.
SergeySavkin Автор
16.11.2021 15:231.Есть нюанс, если поменять батарейку, то придется и регулировать антенну, т.к. все элементы играют роль для радиоволн.
2. Если датчик близко к базовой станции, то он перепрыгивает на скорость 25600 и соответственно радиопередача длится в 512 раз меньше и еще и сама мощность передатчика может снижаться. Тогда батарейка будет жить дольше и можно будет передавать чаще.
3. Все датчики температуры уходят, просто некоторые совсем незаметно или не критично. Газовые датчики, на мой взгляд, уходят в сотни раз быстрее и получается слабым звеном здесь. При выборе корпуса надо понимать, что если совсем далеко запрячем сам датчик, то время реакции на изменение окружающей среды увеличится.
Nick0las
18.11.2021 21:00+1Можно взять аккум побольше и расчитать насколько сдвинуть чтобы изменения были минимальны.
тогда надо пересчитать время жизни.
Уход датчиков сильно зависит от применяемого физического принципа. Чем меньше влияет диффузия тем меньше уход. Терморезисторы из метаооа уходят очень мало. А с полупроводниками все сложно. А вот что касается корпуса, и времени реакции вы совершенно правы. Любое заграждение снижает воздухообмен, порой очень сильно + еще происходит теплопередача от датчика к заграждению излучением. Сложностей много. Стоит подумать об отдельном продуваемом термодатчике.
RV3EFE
15.11.2021 20:41+1А в чём антенна считалась?
SergeySavkin Автор
16.11.2021 09:42+1Антенную помогал делать знакомый в HFSS, если интересно могу дать контакты.
RV3EFE
16.11.2021 09:49Спасибо! Не, контактов не надо. Просто иногда сам стараюсь изучать софт из той области. С интересом смотрю на то, в чём люди работают. Насколько часто слышал про HFSS, но вот именно его ни разу ещё не пробовал..
RV3EFE
16.11.2021 09:51А Ваш знакомый может пояснить, чем обусловлено открытие именно хвоста антенны от паяльной маски? Ведь если не учитываются неоднородности паяльной маски и замедление фронта в ней, то открывают всю. А тут только кусок на конце.
SergeySavkin Автор
16.11.2021 10:04+1Это сделано чисто для возможности небольшой корректировки после векторного анализатора. Можно уменьшить немного антенну или же наоборот удлинить. В финальном проекте обычно закрываю полностью, чтобы не было лишнего окисления или замыкания.
Karlson_rwa
15.11.2021 23:431. Зачем micro-USB? Почему не type-C?
2. Зачем столько переходных отверстий? Вы тем самым удорожаете плату.
3. Зачем преобразователь уровней для SWD? Рассчитываете на совсем low-end программаторы?
4. Почитайте про фидучиалсы, что это и зачем они нужны. Они у вас сделаны неправильно.SergeySavkin Автор
16.11.2021 09:49Корпус был под микроюсб и плюс он сейчас дешевле и в доступе.
Переходные отверстия можно сократить, но сейчас цену самой платы можно сократить уменьшив габариты самой платы, т.к. очень много пространства не задействовано.
Да, изначально планировался под ST-Link/v2, но сейчас там не потребовалось питание 1.8В, и работает все на 3.3В. Сейчас там стоят перемычки. Схему с преобразователями уровней можно выкинуть.
Спасибо, надо поправить реперные метки.
Lucky007
16.11.2021 09:49+1Поправьте пожалуйста схему - при увеличении ничего не видно. (Плохое качество?)
chyvack
16.11.2021 13:25+1Про SGP30
Вчера только я наткнулся на видео тестирование этого датчика в качестве
измерителяпоказометра CO2https://www.youtube.com/watch?v=SMHAZ7jkiiA
Относительно дешевый "измеритель" CO2 MH-Z19B тоже не подходит для улицы. Т.к. периодически минимальные показания принимает за 400ppm (типа вы проветриваете же, а на улице, как известно, уровень СО2 400ppm). Нужен дорогой измеритель CO2 содержащий референсный канал (ампула с нужной концентрацией газа). Про это всё здесь же на хабре были статьи и в комментариях к ним, можно почерпнуть много интересного.
SergeySavkin Автор
16.11.2021 15:26У MH-Z19B есть механизм калибровки, который как раз и принимает уличный воздух за 400 ppm. Его можно отключить, но тогда надо будет заранее откалибровать его в референсном газе и измерять относительные величины.
chyvack
19.11.2021 13:40это надо делать периодически. Т.к. лампа (которая используется в качестве источника излучения) стареет со временем, изменяется эмиссия излучения.
PR200SD
17.11.2021 12:14Паять такие корпуса микросхем в кустарных условиях очень тяжело, я бы не смог так сделать аккуратно.
Это только первый раз, дальше легче, сам недавно собирал плату с esp32picod4, все проще чем кажется на первый взгляд, использовал только фен.
morphal
19.11.2021 10:52Поделитесь, пожалуйста, подходом к выбору корпуса. У вас есть список производителей корпусов, каталоги которых планомерно перебираете в поисках нужного? Или это как то по-другому происходит?
SergeySavkin Автор
19.11.2021 12:07Выбор корпуса происходил так: друзья на китайском рынке закупили все имеющиеся корпуса и далее выбирался самый подходящий.
Crazy_Pit
20.11.2021 09:44так же интересует от какого прибора использовали корпус... производитель артикул и тд... для самоделки датчика вполне пригодно. да и слс шлюз можно засунуть
imengineer-org
На мой взгляд, один из самых интересных показателей - содержание двуокиси углерода в воздухе.
kolyandex
Можно взять тоже sensirion, только scd30. Минус - он жрет много и с таким периодом измерений девайс проживёт недолго.
imengineer-org
scd30 очень дорогой датчик.
kolyandex
Относительно нормальные СО2 датчики все дорогие.
saege5b
Любые нормальные газовые датчики - дорогие.
Mike-M
Да чего уж там, любые датчики дорогие :-))