Перейти к содержанию

Управление светом от ультразвукового датчика

Управление освещением от ультразвукового датчика

Управление освещением или другим бытовым прибором можно сделать с помощью платы Ардуино и модуля реле 220 Вольт. Для включения и выключения реле можно использовать разные сенсоры и датчики, которые позволяют сделать автоматическое включение освещения. Рассмотрим пример бесконтактного управления освещением (светильником или светодиодной лентой 12В) с помощью ультразвуковых датчиков HC-SR04.

Необходимые компоненты:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • 2 ультразвуковых датчика HC-SR04
  • твердотельное реле
  • светильник 220V
  • коннекторы
  • библиотека Ultrasonic.h

Дополнительные материалы на эту тему:

  1. Подключение ультразвукового датчика к Ардуино
  2. Подключение твердотельного реле SSR к Ардуино
  3. Подключение электромагнитного реле к Ардуино

Датчики ультразвука в этом проекте будут использованы в качестве датчика жестов для 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 или с помощью инфракрасных датчиков препятствия. Микроконтроллеры Ардуино позволяют воплотить в реальность любые интересные идеи, без большого опыта в программировании и знаний в схемотехнике.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

newzaym
➜