🛒
0 товаров
0 руб.

Интернет-магазин «Неглупый Дом»


🚪 Проект: вытяжной вентилятор по влажности на KY-015

Датчик KY-015, реле и вентилятор

KY-015 отслеживает влажность воздуха в ванной или теплице — как только она подскакивает выше порога (после душа, полива), включается вытяжной вентилятор через реле, а после проветривания выключается сам.

Как это работает

KY-015 — готовый модуль на базе датчика DHT11, измеряющий влажность и температуру воздуха по одному цифровому проводу. Для ванной комнаты актуальна именно влажность: после душа она резко подскакивает (конденсат на зеркале, запотевшие стены), и если не проветрить вовремя, на стенах и в углах может появиться плесень.

Проект работает по тому же принципу гистерезиса, что и вентиляция теплицы: вентилятор включается при высокой влажности (`onHumidity`) и не выключается сразу, как только влажность чуть снизилась, а ждёт, пока она реально упадёт до более низкого порога (`offHumidity`). Это предотвращает частое щёлканье реле и даёт вентилятору время реально проветрить помещение, а не выключаться на первом же небольшом колебании показаний.

Пошаговая сборка

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

  1. Подключите KY-015: сигнал → D2, VCC → 5V, GND → GND.
  2. Подключите модуль реле KY-019 (вентилятор): сигнал → D7, VCC → 5V, GND → GND.
  3. Установите библиотеку DHT (например DHT sensor library от Adafruit) через Менеджер библиотек в Arduino IDE перед прошивкой.
  4. Вентилятор подключайте к контактам реле через его собственный источник питания — реле не питает вентилятор напрямую от Arduino.
  5. Для влагостойкости корпуса платы в ванной рекомендуется разместить саму плату Arduino за пределами зоны прямого попадания воды/пара, протянув только провод датчика в нужную точку.

Скетч

// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.

#include <DHT.h>

#define DHTPIN 2        // пин датчика KY-015
#define DHTTYPE DHT11   // KY-015 использует чип DHT11
DHT dht(DHTPIN, DHTTYPE);

const int relayPin = 7;      // реле вытяжного вентилятора
const float onHumidity = 70.0;  // включить вентилятор при этой влажности, %
const float offHumidity = 55.0; // выключить только когда влажность упадёт до этого значения

void setup() {
  Serial.begin(9600);
  dht.begin();
  pinMode(relayPin, OUTPUT);
}

void loop() {
  float h = dht.readHumidity();

  if (isnan(h)) {
    // DHT11 иногда не успевает ответить вовремя — пропускаем цикл
    Serial.println("Ошибка чтения датчика, пропускаем измерение");
    delay(3000);
    return;
  }

  if (h > onHumidity) {
    digitalWrite(relayPin, HIGH);
  } else if (h < offHumidity) {
    digitalWrite(relayPin, LOW);
  }
  // между offHumidity и onHumidity состояние реле не меняем (гистерезис)

  Serial.print("Влажность: ");
  Serial.print(h);
  Serial.println(" %");

  delay(5000);
}

Гистерезис между `onHumidity` и `offHumidity` не даёт вентилятору включаться и сразу выключаться на границе одного значения после каждого замера.

Частые проблемы

Как улучшить проект

Товары по теме

Ещё модули для Arduino: Электронные модули.

← 📉 предсказание погоды по тренду давления на …🔥 плавный обогрев террариума через MOSFET FR… →

🎁 Купить весь комплект со скидкой 10%

Все 2 товара сразу в корзину: 197 ₽ 177 ₽ (экономия 20 ₽)

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

Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.

Корзина


Поиск



Пример: понижающий или DC-DC или mini360 или aw-023 или арт. OZ/WB/YA