Контроллер для вентиляции своими руками

Контроллер управления вытяжным вентилятором с WiFi


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

Но технический прогресс неумолимо бежит вперед и новые веяния опять не давали мне покоя. Давно вынашивал идею реализации концепции умного дома на WiFi модулях ESP8266. Некоторое время экспериментировал с этими модулями и теперь решил свой «умный дом» на них перевезти.

Основной целью проекта поставил реализацию новых возможностей, которые в дальнейшем буду применять в других устройствах.
Итак, что мне даст модернизация контроллера вентилятора на ESP8266?

Новые возможности

Перечень компонентов

$2.3
Четырехразрядный семисегментный дисплей на микросхеме TM1637 с I2C подключением

$1
Твердотельное реле OMRON G3MB-202P

$1
Блок питания 220В/3.3В 600мА

$2.2
Датчик температуры и влажности (точность низкая, но для моих задач достаточная) DHT11

$0.7
Приборный пластиковый корпус 110х73х34

$1

  • Фоторезистор, просто резисторы, макетка и провода
  • Итого около $9
    Все детали кроме корпуса и блока питания куплена на aliexpress.com. Корпуса и БП по адекватным ценам заказываю с taobao.com

    Сборка контроллера

    Этот контроллер — прототип для будущих устройств на ESP8266, поэтому монтаж сделал на макетной плате.

    Светофильтр под индикатор изготавливаю из папки-уголка для бумаг, купленной в магазине канцтоваров. Прозрачное окно для фоторезистора — защитная пленочка оставшаяся от какого-то телефона (заказывал когда-то с запасом, теперь валяются)

    А это мой старый контроллер, проработавший в ванной два года

    При отладке обнаружился технологический дефект — фотодиод за окошечком в корпусе получал слишком мало света и без усилителя не срабатывал при зажигании лампы в ванной комнате, пришлось его вывести наружу в сторону лампы

    Теперь расскажу об особенностях программы, алгоритмах управления и настройках этого контроллера.

    ESP8266, в отличие от Atmega328, на которой была реализована предыдущая версия, имеет гораздо больше памяти (ОЗУ, ПЗУ. EEPROM), что позволило вкупе со встроенным WiFi реализовать функции встроенного WEB-сервера, не экономя память для текстовых строк.

    А вот с GPIO у ESP8266 довольно плоховато, поэтому, такая роскошь, как управления семисегментным индикатором напрямую ему не доступна. Поэтому и выбран индикатор на микросхеме TM1637, требующий для подключения всего два вывода.

    Среда разработки

    Я достаточно наигрался с различными прошивками ESP8266 позволяющими писать программы на встроенных интерпретаторах LUA, JC и вообще программировать через WEB. Пробовал писать на одном SDK. Остановился на компромиссном варианте — программировании в Arduino IDE.
    Довольно простая установка, программирования и огромное количество готовых библиотек, которые, в большинстве своем, работают на ESP-шке. Эта среда позволила использовать много старого кода, обеспечивающего основную логику работы контроллера управления вентилятором сохранилось с предыдущей версии.

    В основном интересно было перенести хорошо зарекомендовавший себя алгоритм, реализующий конечный детерменированный автомат состояний, описанный в таблице переходов состояний:

    Подошли без проблем и ардуиновские библиотеки DHT для работы с датчиками влажности/температуры от Adafruit и для работы с индикатором на TM1637 DigitalTube.

    Подробности использования Arduino IDE для программирования ESP8266 хорошо описаны в этой статье

    Читайте также:  Пошаговая схема ковриков своими руками

    Реализация новых функций

    Очень неудобно делать WiFi контроллеры, в которых зашиваются параметры подключения к сети. Представляете, во что выльется смена имени точки доступа или пароля при наличии десятка таких контроллеров дома?

    Поэтому в данном программе реализованы функции сохранения параметров подключения в энергонезависимую память EEPROM и настройка их по сети. Структура для сохранения параметров, а также чтение и запись ее реализованы в файлах WC_EEPROM.h и WC_EEPROM.cpp моего проекта. Верификация чтения и записи производится при помощи вычисления контрольной суммы конфигурации и сравнения ее с записанной в EEPROM.

    Кроме конфигурации сети в память сохраняются также все таймауты и прочие параметры алгоритма управления вентилятора, что позволяет оптимизировать и настраивать данный контроллер прямо «по воздуху».

    Отображение режимов работы, настройка конфигураций контроллера, а также непосредственное управление вентилятором реализовано при помощи встроенного WEB-сервера (фалы WC_HTTP.h и WC_НTTP.cpp)

    Алгоритм настройки точки доступа следующий:

    Если ESP-шка не смогла подключиться к прописанной в конфигурации EEPROM точке доступа, то она поднимает свою точку доступа и по адресу 192.168.4.1, позволяет сконфигурировать.
    Ну а если подключилась, то работает в штатном режиме.
    Главная страница WEB-сервера показывает основные параметры контроллера и позволяет вручную включить/выключить контроллер (аналог нажатия кнопки ручного управления)

    Здесь же можно перейти на страницу сетевых настроек

    и страницу настроек алгоритма работы контроллера

    С этих двух страничек можно выполнить перезагрузку контроллера и сброс всех настроек «по умолчанию».

    «Наводить красоту» на интерфейс я еще планирую в будущем, когда концепция умного дома на WiFi более менее устаканится у меня в голове.

    Еще одна функция, реализованная в этой программе — часы реального времени, синхронизирующиеся по NTP протоколу в интернете. (Файлы WC_NTP.h и WC_NTP.cpp)

    Описание основного алгоритма описывать не буду, логика работы себя хорошо зарекомендовала и осталось прежней, почитать про нее можно в предыдущей статье. Основные изменения коснулись дисплея. Хочу обратить внимания на одну «фичу» — функцию DisplaySpecialChar(), которая позволяет по битовой маске вывести любой символ, который можно придумать для отображения на семисегментном индикаторе. Я придумал вот такой символ «процентов» в отображении влажности

    и символ «градусов» при отображении температуры

    Биты в битовой маске соответствуют сегментам индикатора.

    Ну и последняя из новых функций — сохранение параметров на сервер в интернете для отображения и последующего анализа. Сохраняются значения влажности, температуры, аналогового порта с фоторезистором для подстройки порога срабатывания освещения, время работы вентилятора, время горения света и UPTIME-время работы контроллера от последней перезагрузки.

    Запись на сервер происходит в двух режимах. С большей периодичностью записываются параметры, когда в ванной «что-то происходит», в это время либо горит свет, либо работает вентилятор. Все таймауты настраиваются через WEB-интерфейс.

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

    Довольно просто перенастроить сохранения параметров на тот же «народный мониторинг». Лично меня это сервер не устраивает ограничениями в периодичности сохранения данных и глубине архива.

    Оптимизация настроек контроллера

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

    • Влажность в зимнее время меняется на 35-40%
    • Время нормализации влажности при естественной вентиляции 20-25 минут
    • Время нормализации влажности с работающим вентилятором 10-12 мин
    • Вентилятор повышает эффективность проветривания вдвое
    Читайте также:  Как собрать секционные ворота своими руками

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

    Теперь, после проведения анализа можно увеличить период записи параметров на сервер.

    Выводы

    • Контроллер на ESP8266 работает стабильно, функции свои выполняет.
    • Функциональность его расширилась, теперь им легко управлять и он нормально интегрируется в систему Умного дома
    • Некоторые вещи требуют доработки, например, WEB-интерфейс, авторизация доступа, серверная часть и некоторые неточности в расчете времени работы вентилятора и света. Может быть выявятся и другие хотелки по улучшению.
    • Пилотный проект по Умному дому на WiFi можно признать успешным 😉

    Скетч можно скачать здесь. Буду очень признателен, если сообщите о найденных ошибках.

    Затраченное на проект время — два выходных дня

    P.S. Сразу отвечаю на вопрос, зачем так сложно? Можно посадить параллельно выключателю или на таймер?
    — Да можно. Но включение по таймеру и свету меня не устроили. К тому же это хобби, реализация некоторых идей, который применяются в других проектах.

    Хаброхранилище опять глючило, поэтому картинки с моего блога. Там же можно посмотреть про мои наработки по умному дому

    Источник

    Контроллер на Arduino для рекуператора. Часть 1

    Год назад я писал про недорогой рекуператор для системы приточно-вытяжной вентиляции, вот тут

    Он работает на своем контроллере, и в первую очередь контроллер мне был нужен для тестирования разных режимов, а так же видеть кпд и температуры.

    Как это все работает. Контроллер находится в боксе.

    Внутри дисплей, джойстик и автомат на 6А для защиты вентиляторов.

    На главном экране отображается, 4-е температуры, приток вытяжка, до и после рекуператора.

    Air я обозначил данные с датчика качества воздуха, сначала пытался перевести их в значения co2, но без успешно, хотя в сети есть примеры перевода. У кого получиться дайте знать.

    Efficiency % , это по сути кпд рекуператора, сейчас 52,7% это я давно не менял фильтры, а т.к. в внутри дома воздух грязнее чем уличный за городом, то дисбаланс, и приток чуть больше вытяжки, и чем больше забивается фильтр, тем меньше кпд. Надо менять.

    Для сравнения фильтр с вытяжки

    A post shared by Дмитрий Супрун (@sd.workshop) on Dec 19, 2016 at 3:07am PST

    Фильтр приточный, более черный, но менее забитый

    A post shared by Дмитрий Супрун (@sd.workshop) on Dec 19, 2016 at 3:08am PST

    Ниже отображается скорость приточного и вытяжного вентилятора и режим работы, режима три: авто, ручной и размарозка

    Движением джойстика вправо попадаем в меню.

    Выбор меню происходит также движением вправо.

    далее выбираем меню авто режима, ручного режима или выбора режимов.

    Начнем с последнего, выбрав mode попадаем в выбор режима

    В меню режима auto

    Есть выбор установок.

    И так co2_min — это минимальное значение качества воздуха при котором вентиляция выключится, например когда все ушли из дома, поймать этот момент очень сложно с данным датчиком.

    Читайте также:  Кузовной ремонт нивы шевроле своими руками

    co2_max — это значение качества воздуха при котором включается вторая скорость, реально работает когда увеличивается сильно кол-во людей, с +-1 человек скорей всего не сработает

    detrost — время в минутах, сколько размораживается теплообменик, а размараживаться он начинает при сильном падении КПД при наличии за на входячем датчике менее -5, т.к. пластины обмерзают то передача тепла падает, падает КПД, и чем больше обмерзание, чем сильнее падает КПД. Можно отследить по долям миллиметра толщину инея на пластинах, работает четко.

    Drying — режим не использую, сделал для теста отключает приток на заданное время постоянно через время заданное в значении Drying_T, тоесть чередование работает, не работает, задается и то и то время, вообще данная функция не нужна, только для экспериментов.

    На след странице последняя функция данного меню

    Eff_min — это значение кпд, при котором включается разморозка теплооменника.

    Теперь меню ручного режима.

    Drying, тоже самое что и в авто — «режим не использую, сделал для теста отключает приток на заданное время постоянно через время заданное в значении Drying_T, тоесть чередование работает, не работает, задается и то и то время, вообще данная функция не нужна, только для экспериментов.»

    Supply fan — задаем скорость приточного вентилятора, 0 — выключен, 1 скорость или 2 скорость

    Exhaust fan — задаем скорость вытяжного вентилятора, 0 — выключен, 1 скорость или 2 скорость

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

    Теперь как это все собрать.

    И так основной компонент это плата Arduino Nano

    Платформа Nano, построенная на микроконтроллере ATmega328 (по стоимости 400 руб)

    Питание и запись программы осуществляется по usb mini, в целом удобно.

    Так же мне потребовался LCD дисплей 128×64 12864 (по стоимости 350-400 руб)

    Джойстик для управления (по стоимости 200 руб)

    3-4 датчика температуры DS18B20 (по стоимости 100 руб)

    4-е реле для включения вентиляторов и переключения их скорости. (по стоимости 200 руб)

    У меня двух скоростные вентиляторы и их два, поэтому 4-е реле. Чуть ниже опишу как они работают.

    Датчик качества воздуха MQ135 (по стоимости 150 руб)

    Теперь все это надо соединить, желательно пайкой, для этого удобно купить макетную плату.

    И так соединяем там

    Далее чтобы все заработало необходимо подключить к ардуино компьютер и записать программный код.

    Программа для ардуино с необходимыми библиотеками лежит тут

    Сам код программы лежит тут

    Подробнее о нем расскажу в следующей части описания.

    Что бы я изменил, если не делать эксперименты, а просто собрать контроллер.

    Дисплей удобен, джойстик не особо нужен, все значения можно задать с компа, ведь они почти не меняются, один раз задал и ок. Меню соответственно убрать. А переключение скоростей сделать внешним переключателем, так удобнее, не очень удобно все время лазить по меню. Т.к. режимы переключать не надо, нужно только одно реле, а не 4-е, которое отключает приток при разморозке. Можно поставить второе реле для включения догрева при температурах за бортом ниже -10, будет комфортнее, но нужен другой корпус и керамический тэн. Датчик качества воздуха не особо нужен в небольшом доме, проще переключателем выключать или увеличивать скорость когда гости, а если уж и делать то ставить полноценный датчик СО2.

    Источник

    Оцените статью
    Своими руками