Русский
Русский
English
Статистика
Реклама

Co2 монитор

Погода в доме или бюджетный мониторинг CO2, PM2.5, температуры и влажности на ESP32 и Blynk

16.11.2020 14:12:10 | Автор: admin
По просьбах трудящихся в этой теме, решил сделать обзор-инструкцию, как можно сделать бюджетный измеритель CO2.

В данном обзоре я не буду описывать пагубность влияния CO2, а также низкой влажности на самочувствие и здоровье человека. Также, как и не буду доказывать, что без этого девайса не прожить. Об этом уже написаны тонны статей, как и споров в комментах. Я постараюсь лаконично описать создание максимально бюджетного устройства, но при этом измерительного устройства, а не показометра.

Также для максимальной простоты повторения, в обзоре выложу прошивку для ESP32 и проект Blynk.

Для создания нам понадобятся следующие комплектующие:

  • Датчик CO2 Senseair S8 $27,9
  • Микроконтроллер с Wi-Fi ESP32 (модель 30 pin) $3,2
  • Датчик температуры, влажности и давления BME280 $1,85 (опционально)
  • Датчик загрязнённости воздуха PM2.5 PMSA003 $14,9 (опционально)
  • Десяток коротких проводков, чтобы их соединить.

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

Все датчики уже давно отлично себя зарекомендовали. Имеют очень хорошую точность, отличное соотношение цена/качество, и доставляют минимум проблем при настройке и эксплуатации. Тот же Senseair S8 используется в топовых бытовых приборах AirVisual Pro, которые по $300.

Сразу оговорюсь, что в данном случае не будет конечного устройства. Так как аппетит приходит во время еды, и захотелось ещё мониторить чистоту воздуха. Датчик же PM2.5 частиц только недавно приехал, и 3D-печатный корпус под это всё хозяйство буду проектировать попозже. Плюс хочу заказать у китайцев печатные платки, чтобы с проводами не возиться. Но корпус любой уже может сделать на своё усмотрение, главное помнить, что через корпус должен хорошо проходить воздух, и датчик температуры нужно держать подальше от всех остальных компонентов, так как они греются и могут завышать температуру.

Как я дошел до этого


DIY устройств на этих датчиках в интернете вагон и маленькая тележка. Но почему-то, в основном люди зациклены на создании, так сказать, Standalone-решений. Т.е. коробочка с датчиками и экраном, на который выводятся показания. Но я не в восторге от экранчиков от Nokia и всяких символьных 1604 и подобных, тем более хотелось бы видеть графики для анализа изменений. А хороший IPS экран, во-первых, будет стоить больше всех датчиков вместе взятых, во-вторых, может потребовать более мощного контроллера, в-третьих, потребует возни с нормальным интерфейсом (те же графики рисовать).

А поскольку занимаюсь web-разработкой, сразу же пришла мысль об отделении мух от котлет. Т.е. датчики занимаются только сбором данных и отправкой их на сервер. Ну, а с сервера мы можем получить эти данные в нужном виде и для нужного устройства. В простейшем виде можем просто показания посмотреть, но в то же время спокойно можем к эти данным привязать исполнительное устройство (например, включение приточной вентиляции или открытие форточки сервоприводом).

Blynk


Перед тем, как делать свой велосипед. Решил глянуть возможные готовые решения. Естественно есть различные сервисы для сбора данных Народный мониторинг, thingspeak и т.п. Но как-то они показались слишком громоздкими для моего случая. Различные системы умных домов, которые умеют работать с датчики, тоже из пушки по воробьям.

Blynk в первую очередь привлек своим дизайном, и хорошей документацией с примерами. Прошли считанные минуты на ознакомление, и вот уже на экране телефона выводится температура и влажность с красивыми графиками. В итоге было решено остановиться на нём. Тем более, что для Blynk, при желании, можно настроить локальный сервер.

Вот так выглядит проветривание 10 минут, в режиме откинутое окно (в районе 0 часов), потом CO2 довольно быстро поднимается, при том, что я сейчас один в квартире.



Вроде всё хорошо, CO2 быстро снизился до 410 ppm, но график PM2.5 увеличился в 2,5 раза, и температура упала на 2 градуса.

Увеличение PM2.5 при проветривании


Цены


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



В моем случае используются следующие виджеты:

  • 5 x 400 Labeled Value
  • 1 x 300 Gauge
  • 3 x 900 SuperChart

Итого 5000 энергии. Бесплатно даётся 2000. Можно докупить недостающее. Энергия покупается однократно, и может использоваться бесконечно, а если вы удаляете какой-то виджет то энергия возвращается в полном объеме. И можно использовать повторно.

Также можно установить свой Blynk сервер. Либо есть альтернативные Blynk серверы почти без ограничения.

Ну и ещё вариант, заменив Labeled Value на Value Display можно сэкономить 1000, плюс убрать один или 2 графика. На одном графике можно выводить 4 показателя.

О датчиках


Датчики SenseAir S8 бывают нескольких сильно отличающихся модификаций. Для наших целей отлично подходит модификация 004-0-0053, и у себя использовал именно её. Обратите внимание, что S8 датчики есть для промышленного применения, с виду одинаковые, но на значительно большие диапазоны, к примеру модель 004-0-0024 измеряет от 400 до 32000 ppm (но при этом точность 1000 ppm, у модели 0053 точность 40 ppm), в домашних же условиях 400-800 ppm это хорошо, а больше 2000 ppm уже будет очень плохое самочувствие.

Обращаю внимание, что датчики температуры BME280 в виде готовых модулей, бывают на напряжение 3,3 В и на 5 В. В нашем случае нужен именно на 3,3 В.

Датчики пыли PM 2.5 бывают тоже несколько вариантов PMSA003-A (вход и выход воздуха с одной стороны) и PMSA003-C (вход и выход с противоположных сторон). Тут в принципе без особой разницы, зависит от того, как удобнее будет в корпусе. Также есть более старые поколения этого датчика PMS7003, PMS5003 (без дополнительных букв). Они также подойдут и должны работать с прошивкой без изменений, но они больше по размерам. Для датчика PMSA003 желательно купить переходник, так как там контактная площадка с шагом 1 мм, и подпаиваться проводами несколько напряжно.

Что касается самого модуля ESP32, то это по сути самая дешевая плата на базе ESP32. Прошивка должна работать и на других модификациях, если там соответствующие пины свободны.

Подключение


Схема подключения выглядит так.



Для тех кому привычнее буквы, а не картинки
BME280 (подключаем по I2C)
VCC ->3V3
GBD -> GND
SCL -> D22
SDA -> D21

S8
G+ -> Vin
G0 -> GND
UART_RxD -> TX2
UART_TxD -> RX2

PMSA003
(тут на некоторых переходниках есть обозначения, у меня нет, но порядок одинаковый)
VCC -> Vin (1) (жирная дорожка на переходнике намекает на VCC)
GND -> GND (2)
RxD -> D35 (4)
TxD -> D34 (5)

А так страшно выглядит это пока у меня вживую

Прошивка


Сначала хотел выкладывать это в виде скетчей для Arduino IDE. Но тогда придется ещё рассказывать, как пользоваться этим самым Arduino. Поэтому для увеличения уровня доступности решил сделать готовую прошивку и добавить WiFi менеджер.

При первой загрузке, или, когда не удаётся подключиться к сети, девайс переходит в режим точки доступа, и создаёт сеть вида esp32_eae234 (где после esp32 кусочек серийного номера чипа, т.е. он будет разный).

Вы на смартфоне открываете список сетей и подключаетесь к этой сети. После чего телефон скажет, что для подключения нужно открыть браузер (точно также как в различных WiFi сетях магазинов, кафешек и т.п.). В браузере открывается страничка, в которой можно из списка доступных сетей выбрать нужную, ввести пароль для неё, а также ввести Token для Blynk.

Проект для Blynk можно будет клонировать просто отсканировав QR-код. И в дальнейшем вы сможете либо использовать его в готовом виде, либо изменить его под себя.

Саму же прошивку с инструкциями по установке и исходники, опубликую попозже. Хотелось бы получить обратную связь по необходимым функциям, ну и несколько добровольцев для опытов, чтобы можно было провести закрытое beta-тестирование, прежде, чем выкладывать в открытый доступ. Если будет востребовано, то могу и сайтик организовать, чтобы можно было обновления выкладывать.

Материалы по теме


mysku.ru/blog/china-stores/75648.html
mysku.ru/blog/china-stores/75322.html
sprut.ai/client/blog/730
habr.com/ru/post/482352
wiki.liutyi.info/display/CO2/AirVisual+inside

P.S.


Кстати, выяснилось, почему так увеличивался PM 2.5 при проветривании, оказывается в очередной раз что-то горит под Киевом. И сейчас Киев вошел в 10-ку городов мира с самым грязным воздухом. Причем почувствовал запах гари я значительно позже, чем начал показывать датчик. Так что тоже полезно, сигнализировать, что сейчас не время для проветриваний.

156 это показания в местных попугаях, а в PM 2.5 это 64 g/m.

Подробнее..

Получение данных с датчика углекислого газа Даджет в системы умного дома

05.07.2020 20:11:11 | Автор: admin
Датчик углекислого газа Даджет KIT MT8057S давно зарекомендовал себя как достаточно надежный и недорогой прибор. Один недостаток, на мой взгляд официально данные с него можно получать только фирменной программой под windows, и никак иначе.

Тем не менее, получить данные в linux относительно несложно. Пришлось использовать небольшой костыль, но в итоге показатели co2 и температуры можно получить в консоль, и отправить дальше.
В этой статье рассмотрена отправка данных в IoBroker и Home Assistant.



Потребуется библиотека libhidapi и небольшая программка co2mon, размещена на гитхабе.

apt-get install git cmake g++ pkg-config libhidapi-dev

Скачиваем и компилируем программу co2mon

mkdir co2
cd co2
git clone github.com/dmage/co2mon.git
cd co2mon
mkdir build
cd build
cmake
make
cd co2mond
mv co2mond ../../../co2mond

Возможно, пути придется подкорректировать под вашу систему.

Программа эта работает в двух режимах постоянное получение данных в консоли, и в режиме демона. Будучи запущенной без параметров, программа постоянно выводит в консоль текущие показания, пока не будет принудительно закрыта. Немного странное решение, может я не разобрался, но работаем с тем что имеем.
В обоих режимах программа может сохранять данные в текстовые файлы, достаточно добавить ключ -D и указать путь к каталогу.

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

#!/bin/bash
cd /home/server/co2
./co2mond -D /home/server/co2 > log.txt &
sleep 5
pkill co2mond
rm log.txt


Добавляем скрипт в cron, я запускаю его раз в минуту, этого более чем достаточно.
Готово! Теперь в двух текстовых файлах, которые создает программа, есть текущие показания климата.
Важный момент для получения данных с usb нужны администраторские права, то есть cron надо запускать от root'a, соответственно создаваемые текстовые файлы будут тоже рутовыми, это надо учитывать.

Теперь вторая часть отправляем полученные данные в системы умного дома. Начнем с IoBroker. Для начала с него, так как на тот момент, когда я задался этой задачей, пользовался им.

Там все просто есть адаптор systeminfo, который умеет читать в том числе и файлы с файловой системы. Не то, чтобы данные температуры были нужны, но почему бы и нет.

Сохраняем, и вуаля:


А потом я перешел на Home Assistant. В нем я использую mosquitto, и данные решил отправлять через него, нацеливаясь на разделение компьютеров в будущем или добавление датчиков. Установку и настройку брокера не рассматриваю, это выходит за пределы статьи.

На компьютер, к которому подключен датчик, надо установить клиент mosquitto, если он не стоит:
apt-get install mosquitto-clients

В конфиг Home Assistant добавляем два сенсора, и перезагружаем:
platform: mqtt
state_topic: co2/co2
name: co2.co2
unit_of_measurement: ppm

platform: mqtt
state_topic: co2/temp
name: co2.temp
unit_of_measurement: C

В скрипт, который получает данные, добавляем четыре строчки:
read co2 /home/server/co2/CntR
read temp /home/server/co2/Tamb
mosquitto_pub -h localhost -t co2/co2 -m $co2 -u пользователь -P пароль
mosquitto_pub -h localhost -t co2/temp -m $temp -u пользователь -P пароль

Готово, вы прекрасны) Теперь наш крон раз в минуту публикует показания датчиков в топик co2, и которого Home Assistant в свою очередь их считывает:


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

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru