Контроль качества воздуха (со2 и температуры) в офисе и дома, своими руками

в 12:08, , рубрики: Lua, Разработка для интернета вещей, со2

Все началось с того что я работаю в офисе, где как водится нет нормальной вентиляции. Зато есть много народу, кому-то все время жарко, другим постоянно дует.

Для контроля качества воздуха в помещении знать температуру недостаточно. Даже с кондиционером часто бывает прохладно, но душно. Спертый воздух. Оказалось, на это больше всего влияет концентрация со2. Когда я узнал стоимость готовых приборов хотел от этой идеи отказаться. Но случайно увидел описание оптического датчика концентрации со2 MH-Z19.

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

image

Устройство построено на модуле ESP8266 NodeMcu Lua wi-fi. Для него была написана программа на скриптовом языке LUA. Прошивку для интерпретатора Lua под мое устройство сгенерил на on-line сервере nodemcu-build.com. Выбрал там только те модули, которые мне были необходимы для создания проекта.

Дальше я взялся за сборку устройства. Подключил датчики температуры. ds18b20. Они работают по интерфейсу 1-wire:

image

Затем собственно датчик углекислого газа MH-Z19. Он может использовать два интерфейса ШИМ и UART. Я решил сперва попробовать ШИМ, и в результате он меня удовлетворил по надежности и точности показаний.

image

И подключил дисплей по шине ISP:

image

Была написана вот такая программа под Windows. На Delphi XE8:

image

Используемый мной контролер имеет встроенный модуль WIFI, который рассылает полученную с датчиков информации как UDP broadcast пакеты по всей сети офиса. И пользователи у которых стоит программа монитор, получают информацию о состоянии воздуха в помещении и предупреждения, если ситуация становится критической.

А теперь собственно впечатления.

Прибор оказался намного полезней и интереснее чем я ожидал. Во первых больше нет проблем с проветриванием, никто не возмущается, так как у всех выскакивает предупреждение и они довольно хорошо согласуются с личными ощущениями. Ну и просто наблюдения показали что в солнечный день уровень со2 значительно ниже чем в пасмурный и дождливый, утром загрязненность воздуха выше чем днем. С первого взгляда можно понять что делать, проветривать, если зашкаливает со2, или включить кондиционер, если повышенная температура. Датчик температуры на улице хорошо показывает получится ли охладить проветриванием, или только кондиционер. Стало очевидным и понятным, что творится в комнате и как в этом жить. Был случай когда решили проветрить, открыли окно, и тут же закрыли его, датчик буквально зашкалило, И дома прибор оказался очень полезным, особенно в детской комнате, тем более что за показаниями можно следить удаленно через WiFi.

В результате все это выглядит примерно так:

Тут ссылки на исходники и все что необходимо для повторения данной конструкции
USB драйвер для Windows: www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx
Программа для прошивки ESP8266: github.com/nodemcu/nodemcu-flasher
Прошивка MCU lua: drive.google.com/file/d/0B4KYGXb6-nxpOUdXdTFpcjlFZXM/view

Тут можно взять скрипты lua: drive.google.com/file/d/0B4KYGXb6-nxpeGNNbGM0U2g2dEU/view
ESPlorer для загрузки скриптов на esp8266 и отладки: esp8266.ru/esplorer/#download

Windows приложение написано на Delphi XE8. Тут исходники: drive.google.com/file/d/0B4KYGXb6-nxpei1RUWhHVXV5aTQ/view

Необходимы дополнительные компоненты:

JEDI:

wiki.delphi-jedi.org/index.php?title=JEDI_Code_Library
sourceforge.net/projects/jvcl/files

SDL Delphi Component Suite:

www.lohninger.com/sdlindex.html

Скомпилированная программа для windows: drive.google.com/file/d/0B4KYGXb6-nxpUmVXcElLektOQXM/view

Автор: Migrator

Источник

Поделиться новостью

* - обязательные к заполнению поля