8 (800) 200 36 72
8 (800) 200 36 72 По России - бесплатно
Заказать звонок

г. Ярославль, ул. Максимова 4Б, оф. 1

Сравнение0 Отложенные 0 Корзина0 0
Войти
Giant4
Светодиодная лента оптом
Каталог
  • Адресная лента
    Адресная лента
  • Блоки питания
    Блоки питания
  • Комплекты
    Комплекты
  • Контроллеры
    Контроллеры
  • Светодиодная лента
    Светодиодная лента
  • Светильники
    Светильники
  • Профиль
    Профиль
  • Неон
    Неон
  • На новый год
    На новый год
  • Коннекторы и комплектующие
    Коннекторы и комплектующие
  • Экраны сетки
    Экраны сетки
  • Солнечные батареи
    Солнечные батареи
  • Сценическое оборудование
    Сценическое оборудование
Доставка и оплата
  • Условия оплаты
  • Условия доставки
  • Гарантия на товар
О компании
  • Контакты
  • Отзывы
  • Новости
  • Статьи
  • Вакансии
Акции
Купить оптом
Ещё
    Giant4
    Сравнение0 Отложенные 0 Корзина0 0
    Телефоны
    8 (800) 200 36 72 По России - бесплатно
    Заказать звонок
    • Личный кабинет
    • Главная
    • Каталог
      • Назад
      • Каталог
      • Адресная лента
      • Блоки питания
        • Назад
        • Блоки питания
        • Узкие блоки питания
        • Адаптеры питания
        • Герметичные блоки питания
        • Блоки питания 5V
      • Комплекты
      • Контроллеры
        • Назад
        • Контроллеры
        • Для адресной ленты
        • Для RGB ленты
        • Для одноцветной ленты
        • Программируемые платы
      • Светодиодная лента
        • Назад
        • Светодиодная лента
        • Разноцветная RGB лента
        • Яркая лента для основного освещения
        • Не яркая лента для фоновой подсветки
      • Светильники
        • Назад
        • Светильники
        • Потолочные светильники
        • Декоративные лампы и светильники
        • Умные трековые светильники Tuya
      • Профиль
      • Неон
      • На новый год
      • Коннекторы и комплектующие
        • Назад
        • Коннекторы и комплектующие
        • Коннекторы для светодиодной ленты и неона
        • Материалы для пайки
        • Отвертки и прочий инструмент
        • Запчасти для сборки Gyverlamp
      • Экраны сетки
      • Солнечные батареи
      • Сценическое оборудование
    • Доставка и оплата
      • Назад
      • Доставка и оплата
      • Условия оплаты
      • Условия доставки
      • Гарантия на товар
    • О компании
      • Назад
      • О компании
      • Контакты
      • Отзывы
      • Новости
      • Статьи
      • Вакансии
    • Акции
    • Купить оптом
    • Корзина0
    • Отложенные0
    • Сравнение товаров0
    • 8 (800) 200 36 72
    Контактная информация

    г. Ярославль, ул. Максимова 4Б, оф. 1

    admin@giant4.ru
    • Вконтакте
    • Telegram
    • YouTube
    Бесплатная доставка на заказы от 1500 Рублей

    Проект автоматического управления вытяжным вентилятором на ардуино

    Главная
    -
    Статьи
    -Проект автоматического управления вытяжным вентилятором на ардуино
    Поделиться

    Проект автоматического управления вытяжным вентилятором на ардуино

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

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


    Цель проекта 

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

    Сборка проекта

    Для сборки проекта нужны следующие компоненты из набора Arduino GyverKIT PRO:

    • Плата Arduino Nano
    • Блок питания 5В
    • Одноканальное электромеханическое реле, работающее от 5 вольт
    • Сенсорная кнопка ТТР223 в режиме триггера, запаять перемычку В (любая кнопка)
    • Дисплей ТМ1637 (можно изменить код под любой дисплей из набора)
    • Датчик температуры и влажности HTU21D (можно изменить код под любой датчик)
    • Фоторезистор и 1 резистор на 10 КОм
    • Беспаечная макетная плата
    • Соединительные провода (мама-папа, папа-папа)
      Изначально я пробовал сделать этот проект с использованием модуля с симистором (как диммер) для плавного управления скоростью вентилятора. Но, по некоторым причинам, я не смог настроить модуль и пришлось использовать обычное реле. Надеюсь позже я смогу написать рабочий код для симистора.

    Схема проекта:

    управление_вентилятором_1.png


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

    управление_вентилятором_2.png
    ФОТО  1 Проверка устройства

    управление_вентилятором_3.jpg
     ФОТО 2 Моё устройство в сборе

    Программирование

      Скетч я написал с учётом датчика влажности HTU21D и сенсорной кнопки из набора. Используется две библиотеки: GyverHTU21D.h и GyverTM1637.h. Скетч ещё нуждается в доработке, но в целом он рабочий.

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

    Скетч

    #include <GyverHTU21D.h >                 // подключаем библиотеку для работы с датчиком HTU21D

    GyverHTU21D htu;                                 // инициализация

    #define RELAY 2                                    // пин реле

    #include <GyverTM1637.h>                   // библиотека дисплея

    #define CLK 6                                         // пин CLK дисплей

    #define DIO 5                                          // пин DIO дисплей

    GyverTM1637 disp(CLK, DIO);            // подключаем дисплей

    unsigned long p;                                      // переменная для millis()

    long i = 12000;                                        // период чтения показаний датчика HTU21D

    long F = 1000;                                         // период чтения фоторезистора

    long s = 120000;                                      // период включения и выключения реле в режиме 2

    int RelayState = LOW;                            // изначально реле выключено

    int h = 0;                                                  // переменная влажности сначала равна 0

    int t = 0;                                                   // переменная температуры сначала равна 0

    int OldOneHum = 0;                               // переменные для работы с дисплеем

    int OldTwoHum = 0;

    int OldOneTem = 0;

    int OldTwoTem = 0;

    #define PinButton 7                                // пин сенсорной кнопки в режиме триггера

    uint32_t Now, clocktimer;                      // 2 переменные дисплея

    boolean flag;

    const int PIN_Photosensor = A7;          // указываем пин к которому подключен фоторезистор

    int sensorValue = 0;                               // объявляем переменную для хранения значений фоторезистора

     

    void setup()

    {

      Serial.begin(9600);                             // работа с дисплеем

      disp.clear();                                         // очистка дисплея

      disp.brightness(7);                              // яркость, 0 - 7 (минимум - максимум)

      byte hell[4] = {_A, _B, _C, _D};       // выводим при включении заставку на дисплей

      disp.twistByte(hell, 50);

      htu.begin();                                         // запустить датчик

      pinMode(RELAY, OUTPUT);

      pinMode(PinButton, INPUT);

      pinMode(PIN_Photosensor, INPUT);

    }

     

    void loop() {

      if (htu.readTick(i) ) {                              // чтение датчика с периодом i

        t = htu.getTemperature() ;                  // чтение температуры

        h = htu.getHumidity() ;                      // чтение влажности

      }

     

      //выводим на дисплей показания датчика. Можно использовать любой эффект из библиотеки.

      int NewOneHum = h / 10;           // первая цифра дисплея показывает десятичные данных влажности

      int NewTwoHum = h % 10;        // вторая цифра дисплея показывает единичные данных влажности

      int NewOneTem = t / 10;            // третья  цифра дисплея показывает десятичные данных температуры

      int NewTwoTem = t % 10;         // четвертая  цифра дисплея показывает десятичные данных температуры

      if (NewOneHum != OldOneHum) {         // эффектное изменение цифры 1

        OldOneHum = NewOneHum;

        disp.scroll(0, OldOneHum, 50);

      }

      if (NewTwoHum != OldTwoHum) {         // эффектное изменение цифры 2

        OldTwoHum = NewTwoHum;

        disp.scroll(1, OldTwoHum, 50);

      }

      if (NewOneTem != OldOneTem) {         // эффектное изменение цифры 3

        OldOneTem = NewOneTem;

        disp.scroll(2, OldOneTem, 50);

      }

      if (NewTwoTem != OldTwoTem) {         // эффектное изменение цифры 4

        OldTwoTem = NewTwoTem;

        disp.scroll(3, OldTwoTem, 50);

      }<

    //Считываем значения с фоторезистора через время F

      if (millis() - p >= F) {

        sensorValue = analogRead(PIN_Photosensor);

        p = millis();

      }

    //Режимы работы вентилятора в зависимости от показаний фоторезистора, датчика влажности и кнопки

    // Режим 1: если не нажата кнопка и влажность меньше 50%, то реле выключить

      if (digitalRead(PinButton) == 0 && h < 50) {

        digitalWrite(RELAY, LOW);

        RelayState = LOW;

      }

    // Режим 2: если свет горит и не нажата кнопка и влажность между 50% и 97%, то реле включать и

    // выключать с периодом  s

      else if (sensorValue > 200 && h >= 50 && h <= 97 && digitalRead(PinButton) == 0) {

          digitalWrite(RELAY, RelayState);

          if (millis() - p >= s) {

            p = millis();

            RelayState = !RelayState;

          }

      }

    // Режим 3: если свет горит и не нажата кнопка и влажность больше 97%, то реле включить

      else if (sensorValue > 200 && digitalRead(PinButton) == 0 && h > 97) {

        digitalWrite(RELAY, HIGH);

        RelayState = HIGH;

      }

    // Режим 4: если свет не горит и не нажата кнопка и влажность больше 50%, то реле включить

      else if (sensorValue < 200 && h >= 50 && digitalRead(PinButton) == 0) {

        digitalWrite(RELAY, HIGH);

      }

    // Режим 5: Если кнопка нажата, то вентилятор работает постоянно

     else if (digitalRead(PinButton) == 1) {

        digitalWrite(RELAY, HIGH);

      }

      else {

        digitalWrite(RELAY, LOW);

      }

    Итог

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

    Узнать больше об этом контроллере вентиляции можно на канале автора в Телеграмме: @AlmerAlex87 


    Поделиться

    Назад к списку
    • Комментарии
    Загрузка комментариев...
    Категории
    • Календарь Хакатонов и Роботонов16
    • Проекты победителей конкурса Arduino 20227
    • Советы покупателям11
    • Инструкции по Arduino от канала Рукопоп8
    • Обзоры товаров11
    Это интересно
    • Разработка бейсболки-сонара для слабовидящих с помощью Arduino Uno
      Разработка бейсболки-сонара для слабовидящих с помощью Arduino Uno
    • Радиозвонок на Ардуино
      Радиозвонок на Ардуино
    • Отпугиватель котов от ёлки на Ардуино
      Отпугиватель котов от ёлки на Ардуино
    • Светомузыка с управлением через Wi-Fi на Ардуино
      Светомузыка с управлением через Wi-Fi на Ардуино
    • Гирлянда на адресной светодиодной ленте на Ардуино
      Гирлянда на адресной светодиодной ленте на Ардуино
    Компания
    Каталог
    О компании
    Новости
    Вакансии
    Информация
    Купить оптом
    Условия оплаты
    Условия доставки
    Гарантия на товар
    Помощь
    Помощь
    Статьи
    Вопрос-ответ

    Оставайтесь на связи
    • Вконтакте
    • Telegram
    • YouTube
    Наши контакты
    8 (800) 200 36 72
    8 (800) 200 36 72 По России - бесплатно
    admin@giant4.ru

    г. Ярославль, ул. Максимова 4Б, оф. 1

    Giant4 - светодиодная лента оптом. Copyright 2016-2026© Все права защищены. При копировании материалов активная, индексируемая ссылка на сайт www.giant4.ru обязательна. Информация на данном интернет-сайте носит исключительно ознакомительный характер и ни при каких условиях не является публичной офертой, определяемой положениями статьи 437 Гражданского кодекса Российской Федерации. Внешний вид товара может отличаться от изображения, представленного на сайте. Для получения наиболее актуальных изображений товара, а также - информации о характеристиках товаров, их наличии и стоимости связывайтесь с менеджерами компании. Заполнение любых форм на нашем сайте означает ваше согласие с нашей политикой конфиденциальности.