Подсветка кровати с датчиком движения на Arduino своими руками

Создание подсветки для кровати – это интересный проект для автоматизации освещения

Появилась идея создания ночника – подсветить кровать при обнаружении движения. Проект легко реализуется на базе Arduino, используя недорогие компоненты и простой код.

Компоненты

  1. Arduino (Nano, Uno или другие)
  2. Модуль MOSFET транзистора IRF520
  3. Датчик движения AM312
  4. Соединительные провода
  5. Блок питания на 12V
  6. LED контроллер
  7. Светодиодная лента RGB

Логика работы

Датчик движения (PIR) обнаруживает движение, подает сигнал на Arduino, на которой залит код, далее подается питание на 30 секунда через транзистор на LED-контроллер, который включает ленту. Когда истекают 30 секунд, питание отключается и лента гаснет.

LED-контроллер добавлен в схему для того, чтобы управлять RBG лентой со смартфона (можно менять цвета и мерцание).

Фото необходимых компонентов

Arduino Nano

Модуль MOSFET транзистора IRF520

Датчик движения AM312

Соединительные провода

Блок питания 12В

LED контроллер Wi-Fi

RGB светолдиодная лента

Схема подключения

1. Датчик движения AM312

VCC → 5V Arduino

GND → GND Arduino

OUT → цифровой пин D2

2. Модуль MOSFET транзистора IRF520

VCC → 5V Arduino

GND → GND Arduino

SIG → цифровой пин D4

V+ → LED-контроллер «+»

V- → LED-контроллер «-»

VIN → VIN Arduino и «+» на блоке питания

GND→ 5V Arduino и «-» на блоке питания

3. RGB LED-лента

R → «R» на LED-контроллер

G → «G» на LED-контроллер

B → «B» на LED-контроллер

12v → «12v» на LED-контроллер

Скетч для Arduino

Скетч заливаем через приложение «Arduino IDE». Скетч простой, при необходимости можно оптимизировать под себя.

// Пины
const int pirPin = 2;    // Пин, к которому подключен выход PIR
const int RelePin = 4;  // Пин, на котором будет подаваться питание/сигнал

// Переменные
int pirState = LOW;      // Текущее состояние датчика
int val = LOW;           // Чтение с датчика

void setup() {
  pinMode(pirPin, INPUT);
  pinMode(RelePin, OUTPUT); // Настраиваем D4 как выход

  digitalWrite(RelePin, LOW); // Изначально отключаем питание на D4 - Выключаем реле - посылаем высокий сигнал

  Serial.begin(9600);          // Для отладки
}

void loop() {
  val = digitalRead(pirPin);  // Считываем сигнал с датчика

  if (val != pirState) {      // Если изменилось состояние
    pirState = val;

    if (pirState == HIGH) {
       digitalWrite(RelePin, HIGH); // Подаем "питание" на D4
      Serial.println("Движение обнаружено, включаем ленту на 30 сек!");
      delay(30000);                  // Устройство работает 30 секунд
      digitalWrite(RelePin, HIGH);  // Выключаем устройство через 30 секунд
      Serial.println("Питание снято.");
    } else {
      digitalWrite(RelePin, LOW);  // Гарантированно выключаем D4
      Serial.println("Движение прекратилось.");
    }
  }

  delay(100); // Небольшая пауза для стабильности
}

Готовое решение

Подсветка

Заключение

Лента при работе нагревается, крепить ее лучше к алюминиевому профилю или специальному профилю для светодиодных лент. Вместо MOSFET можно использовать реле HW-307, однако при таком решении реле будет щелкать при каждом включении ленты. В схеме можно обойтись без Arduino, если использовать реле с задержкой времени.

Надеюсь мое решение будет кому то полезным.

Добавлено: 5 мая в 00:56
Поддержать автора

Коментарии