Умное освещение на Arduino UNO и реле: автоматическое управление по ультразвуку
Компоненты и материалы
| Arduino UNO | × | 1 |
| Ультразвуковой датчик HC-SR04 | × | 1 |
| Модуль реле 1-канальный (5V, active-low) | × | 1 |
| Энергосбергающая лампа 220В (или любая нагрузка) | × | 1 |
| Блок питания 5В DC (для Arduino) | × | 1 |
| Макетка, перемыжки, отвёртка, изолента/клеевой пистолет | × | 1 набор |
Инструменты и софт
- Мультиметр, паяльник (опционально)
- Arduino IDE или Visual Studio + Arduino Extension
- Библиотека NewPing (median-фильтр)
О проекте
Автоматическое включение/выключение света при прохождении через дверной проём. Ультразвуковой датчик фиксирует присутствие, реле коммутирует 220В нагрузку. Концепция «умный дом» за 15 минут.

⚠ Предостережение по безопасности
Проект работает с высоким напряжением 220В! Если вам нет 18 лет или нет опыта работы с AC — привлеките квалифицированного электрика. Можно отработать логику на низковольтной нагрузке (LED-лента 12В) — принцип тот же.
Подключение HC-SR04
- VCC → 5V
- GND → GND
- TRIG → D12
- ECHO → D11

Подключение реле (active-low)
- VCC → 5V
- GND → GND
- IN1 → D8
Проверка типа реле: подаёте 5V на IN — если реле не щёлкает, подаёте GND — щёлкает = active-low (как в проекте).

Коммутация лампы 220В
Один провод лампы — напрямую в розетку. Второй — разрывается: один конец → NO (нормально открытый) реле, второй → COM реле. При HIGH на IN1 реле разомкнуто (лампа ВЫКЛ), при LOW — замкнуто (лампа ВКЛ).


Полная схема

Программная часть
Чтение ультразвука с median-фильтром
HC-SR04 периодически выдаёт выбросы (0 или завышенные значения). Библиотека NewPing имеет встроенный median-фильтр:
sonar.ping_median(7); // 7 замеров, берём медиану
sonar.convert_cm(...); // в см
Также 0 означает «нет объекта в диапазоне» — заменяем на MAX_DISTANCE.

Детекция прохода
Порог critical_distance_cms ≈ половина ширины двери. Логика: как только расстояние < порога — ждём, пока объект уйдёт (> порога), затем инвертируем состояние реле. Стояние на месте не переключает свет.

Полный скетч (Smart House Light)
#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 200
#define RELAY_LINE1_PIN 8
#include "NewPing.h"
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
unsigned int critical_distance_cms = 50; // настройте под дверь
bool state = 0; // 0 = выкл, 1 = вкл
void setup() {
Serial.begin(9600);
pinMode(RELAY_LINE1_PIN, OUTPUT);
digitalWrite(RELAY_LINE1_PIN, HIGH); // реле active-low → HIGH = выкл
}
void loop() {
delay(50);
unsigned int distance = readDistance();
Serial.print("Ultrasonic: "); Serial.print(distance); Serial.println("cm");
if (distance < critical_distance_cms) {
while (distance < critical_distance_cms) {
distance = readDistance();
delay(5);
}
state = !state;
if (state) {
Serial.println("Door Open!");
digitalWrite(RELAY_LINE1_PIN, LOW); // вкл
} else {
Serial.println("Door Closed!");
digitalWrite(RELAY_LINE1_PIN, HIGH); // выкл
}
}
}
unsigned int readDistance() {
unsigned int distance = sonar.convert_cm(sonar.ping_median(7));
if (distance == 0) distance = MAX_DISTANCE;
return distance;
}
Тестовый скетч (только вывод расстояния)
#include
#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 200
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
void setup() { Serial.begin(115200); }
void loop() {
delay(50);
Serial.print("Ping: "); Serial.print(sonar.ping_cm()); Serial.println("cm");
}
Ресурсы
- Проект для Visual Studio (с правленной NewPing): GitHub
- Inkscape + Gcodetools для генерации G-кода (если адаптируете под ЧПУ)
Схемы

Производственный процесс
- TinyML-детектор языка на Arduino Nano 33 BLE Sense с Edge Impulse
- Создание игры в реальном времени на Arduino Nano с гироскопом MPU-6050 и OLED-дисплеем
- Цифровые кости на Arduino: генератор случайных чисел с LCD-дисплеем и кнопкой
- Логгер температуры и влажности на Arduino с DHT11 и Ethernet Shield
- Автоматическая система полива растений на Arduino — уходи в отпуск спокойно
- Find Me: Умный поисковик вещей на Arduino и Bluetooth
- Умные самозавязывающиеся туфли с встроенной сборкой энергии
- Измерение расстояния в реальном времени: Ардуино-сонар с визуализацией в Processing
- Празднуем со светом и звуком: DIY-проект «С днём рождения» на Arduino
- Бесшовное управление яркостью светодиодов с помощью Bolt IoT и Arduino UNO