
Интернет-магазин «Неглупый Дом»
KY-015 отслеживает влажность воздуха в ванной или теплице — как только она подскакивает выше порога (после душа, полива), включается вытяжной вентилятор через реле, а после проветривания выключается сам.
KY-015 — готовый модуль на базе датчика DHT11, измеряющий влажность и температуру воздуха по одному цифровому проводу. Для ванной комнаты актуальна именно влажность: после душа она резко подскакивает (конденсат на зеркале, запотевшие стены), и если не проветрить вовремя, на стенах и в углах может появиться плесень.
Проект работает по тому же принципу гистерезиса, что и вентиляция теплицы: вентилятор включается при высокой влажности (`onHumidity`) и не выключается сразу, как только влажность чуть снизилась, а ждёт, пока она реально упадёт до более низкого порога (`offHumidity`). Это предотвращает частое щёлканье реле и даёт вентилятору время реально проветрить помещение, а не выключаться на первом же небольшом колебании показаний.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.
#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: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу в корзину: 197 ₽ 177 ₽ (экономия 20 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.