Все началось с того что я работаю в офисе, где как водится нет нормальной вентиляции. Зато есть много народу, кому-то все время жарко, другим постоянно дует.
Для контроля качества воздуха в помещении знать температуру недостаточно. Даже с кондиционером часто бывает прохладно, но душно. Спертый воздух. Оказалось, на это больше всего влияет концентрация со2. Когда я узнал стоимость готовых приборов хотел от этой идеи отказаться. Но случайно увидел описание оптического датчика концентрации со2 MH-Z19.
Цена конечно тоже не маленькая, но все-таки близко к разумным пределам. И руки давно чесались по паяльнику. В качестве контролера использовать решил ESP8266. Во первых дешево, во вторых что бы передавать информацию на компьютер, свой и любого желающего в комнате. После того как собрал и оттестировал первый вариант, с программой-монитором на компьютере, решил добавить экран. Во первых это красиво. Во вторых во многих случаях удобно.
Устройство построено на модуле ESP8266 NodeMcu Lua wi-fi. Для него была написана программа на скриптовом языке LUA. Прошивку для интерпретатора Lua под мое устройство сгенерил на on-line сервере nodemcu-build.com. Выбрал там только те модули, которые мне были необходимы для создания проекта.
Дальше я взялся за сборку устройства. Подключил датчики температуры. ds18b20. Они работают по интерфейсу 1-wire:
Затем собственно датчик углекислого газа MH-Z19. Он может использовать два интерфейса ШИМ и UART. Я решил сперва попробовать ШИМ, и в результате он меня удовлетворил по надежности и точности показаний.
И подключил дисплей по шине ISP:
Была написана вот такая программа под Windows. На Delphi XE8:
Используемый мной контролер имеет встроенный модуль WIFI, который рассылает полученную с датчиков информации как UDP broadcast пакеты по всей сети офиса. И пользователи у которых стоит программа монитор, получают информацию о состоянии воздуха в помещении и предупреждения, если ситуация становится критической.
А теперь собственно впечатления.
Прибор оказался намного полезней и интереснее чем я ожидал. Во первых больше нет проблем с проветриванием, никто не возмущается, так как у всех выскакивает предупреждение и они довольно хорошо согласуются с личными ощущениями. Ну и просто наблюдения показали что в солнечный день уровень со2 значительно ниже чем в пасмурный и дождливый, утром загрязненность воздуха выше чем днем. С первого взгляда можно понять что делать, проветривать, если зашкаливает со2, или включить кондиционер, если повышенная температура. Датчик температуры на улице хорошо показывает получится ли охладить проветриванием, или только кондиционер. Стало очевидным и понятным, что творится в комнате и как в этом жить. Был случай когда решили проветрить, открыли окно, и тут же закрыли его, датчик буквально зашкалило, И дома прибор оказался очень полезным, особенно в детской комнате, тем более что за показаниями можно следить удаленно через WiFi.
В результате все это выглядит примерно так:
Программа для прошивки 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