Появилась идея создания ночника – подсветить кровать при обнаружении движения. Проект легко реализуется на базе Arduino, используя недорогие компоненты и простой код.
Датчик движения (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 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, если использовать реле с задержкой времени.
Надеюсь мое решение будет кому то полезным.