Управление освещением или другим бытовым прибором можно сделать с помощью платы Ардуино и модуля реле 220 Вольт. Для включения и выключения реле можно использовать разные сенсоры и датчики, которые позволяют сделать автоматическое включение освещения. Рассмотрим пример бесконтактного управления освещением (светильником или светодиодной лентой 12В) с помощью ультразвуковых датчиков HC-SR04.
СОДЕРЖАНИЕ
Необходимые компоненты:
- Arduino Uno / Arduino Nano / Arduino Mega
- 2 ультразвуковых датчика HC-SR04
- твердотельное реле
- светильник 220V
- коннекторы
- библиотека Ultrasonic.h
Дополнительные материалы на эту тему:
Датчики ультразвука в этом проекте будут использованы в качестве датчика жестов для Arduino и управление освещением (или любым другим бытовым прибором) будет происходить с помощью проведения рукой перед сенсорами. Вместо лампы 220 Вольт можно использовать LED ленту на 12 Вольт. Чувствительность датчиков HC-SR04 и скорость обнаружения препятствий задается в программе с помощью переменных.
Управление лампой от ультразвукового датчика

В программе каждый датчик ультразвука HC-SR04 опрашивается несколько раз, чтобы исключить ложное срабатывание сенсоров. В зависимости от направления движения руки, твердотельное реле будет замыкать или размыкать контакт с нагрузкой. При использовании в проекте светодиодной ленты на 12 В вместо твердотельного или электромагнитного реле можно использовать mosfet соответствующей мощности.
Скетч управления освещением от датчика HC-SR04
#include "Ultrasonic.h"
Ultrasonic u1(11, 12); // порты Trig и Echo первого датчика
Ultrasonic u2(6, 7); // порты Trig и Echo второго датчика
#define RELE 2 // пин подключения реле
int dist = 50; // расстояние в сантиметрах
int x = 3; // количество измерений
int cm1, cm2;
int w = 0;
void setup() {
Serial.begin(9600);
pinMode(RELE, OUTPUT);
}
// измерения с 1 датчика
void sensor1() {
for (byte i = 0; i <= x; i++) {
cm1 = u1.Ranging(CM);
cm1 = cm1 + cm1;
delay(10);
}
cm1 = cm1 / x;
Serial.print("1 sensor - ");
Serial.println(cm1);
}
// измерения со 2 датчика
void sensor2() {
for (byte i = 0; i <= x; i++) {
cm2 = u2.Ranging(CM);
cm2 = cm2 + cm2;
delay(10);
}
cm2 = cm2 / x;
Serial.print("2 sensor - ");
Serial.println(cm2);
}
void loop () {
// опрашиваем первый датчик
sensor1();
delay(50);
// опрашиваем второй датчик
sensor2();
delay(50);
// если сработал первый датчик - заходим в 1 цикл
if (cm1 < dist) { w = 1; }
// если сработал второй датчик - заходим в 2 цикл
if (cm2 < dist) { w = 2; }
while (w == 1) {
// опрашиваем второй датчик
sensor2();
delay(50);
// если сработал второй датчик включаем реле и выходим из цикла
if (cm2 < dist) { digitalWrite(RELE, HIGH); w = 0; }
}
while (w == 2) {
// опрашиваем первый датчик
sensor1();
delay(50);
// если сработал первый датчик выключаем реле и выходим из цикла
if (cm1 < dist) { digitalWrite(RELE, LOW); w = 0; }
}
}
Заключение. Бесконтактный выключатель светильника с помощью жестов руки можно сделать не только с помощью ультразвуковых датчиков расстояния, но и на основе датчика жестов APDS 9960 или с помощью инфракрасных датчиков препятствия. Микроконтроллеры Ардуино позволяют воплотить в реальность любые интересные идеи, без большого опыта в программировании и знаний в схемотехнике.
