Создание подсветки для мебели с использованием светодиодной ленты с датчиком движения

By | 27.10.2016

Доброго времени суток!

Сегодня у нас стоит не обычная задача (для данного блога):

Дано:

Шкаф-прихожая, без подсветки

Задача:

Установить подсветку в шкафу-прихожей, с использованием светодиодной ленты, с плавным освещением при обнаружении движения и затуханием при его отсутствии.

Материалы:

Светодиодная лента (RGB) на пульте ДУ (цвет по вкусу) — 689,23 руб.

Arduino Nano v3 Микроконтроллер (МК)  — 148,31 руб.

Датчик движения (PIR Motion sensor) HC-SR501 — 80,61 руб.

Транзистор irl3705n (полевой) — 161,21 руб.

Резистор 100 Ом (100 шт) — 48,37 руб. (Либо можно купить на будущее, сразу набор разных резисторов 21 вид — 511,99 руб.)

Макетная плата (10 шт.) — 105 руб.

Коробка (box) для проекта BMD60017 (60x58x28 мм) 2 шт. 343,05 руб. (можно взять дешевле Коробка (box) для проекта (82 x 52 x 35) — 99,95 руб.)

Аппаратная часть

Сперва необходимо вырезать макетную плату, согласно размерам Вашего корпуса, используя бытовые ножницы:

img_0166

img_0167

img_0168

img_0169

img_0170

После того, как Вы подогнали по размерам макетную плату, необходимо примерно разместить на ней наши радиоэлементы и МК, начнем с подготовки транзистора irl3705n, так как при работы он выделяет много тепла, будет целесообразным соединить его с каким-нибудь элементом отвода тепла,в нашем случае это оказался миниатюрный радиатор от raspberry pi (имеет при себе двухсторонний скотч 3M):

img_0174

img_0176

Далее размещаем сам управляющий элемент — МК.

img_0191

Чтобы не использовать 2 источника питания (ИП) (для светодиодной ленты и для МК) было принято решение подключить оба потребителя от одного ИП в 12v, а именно от блока питания, который идет в комплекте с лентой, который выдает силу тока в .

ps ps2

В Arduino Nano v3 есть специальный пин (VIN), со стабилизатором напряжения (до 15v), туда и необходимо подключить «плюс» от БП в 12v, а также подключить «землю» на пин GND (расположен рядом с пином VIN). Далее, берем светодиодную ленту и убираем в сторону «белую коробочку» которая идет в комплекте, так как мы будем создавать и использовать свою. Для того, чтобы в ленте загорались одновременно 3 цвета, нужно спаять 3 контакта, замаркированных текстом R(red),G(green),B(blue) и оставить отдельно «плюс» питания ленты, так как светодиодная лента имеет на каждый цвет отдельный провод и общее питание(!!!ВНИМАНИЕ!!! цвет проводов может отличаться!!!):

img_0207

Не обязательно припаивать контакты от ленты на её концах, их можно вывести и посередине ленты, например в дальнем левом(правом) углу шкафа.

img_0201

Также, для эстетичности и безопасности, можно насадить термоусадочную трубку:

img_0203

Припаиваем датчик движения (PIR) и другие элементы согласно схеме:

pir-led_bb

img_0205

img_0204

Теперь необходимо вырезать отверстие в корпусе, где расположена основная микросхема, сначала нужно прочертить карандашом, примерное расположение датчика:

img_0190

затем высверлить отверстие: проще всего сделать это дрелью (шуруповертом) и далее, можно закрепить датчик используя пистолет для термоклея, предварительно выровняв края напильником с прямой гранью.

img_0227

также можно сделать отверстие для вывода проводов, в боковой части пластикового корпуса (используя закругленный напильник):

img_0225

Прежде чем «защелкнуть» корпус, не забудьте подключить блок питания на 12v, согласно схеме, представленной выше. Далее закрепляем светодиодную ленту, используя двухсторонний скотч (обычно приклеен производителем) на поверхность освещаемой области:

img_0228

img_0229

Программная часть

Для работы аппаратной части, не нужны дополнительные библиотеки, достаточно стандартных, используемых в Arduino IDE, далее приводится сектч:

int ledPin = 13;  // инициализируем пин для светодиода
int inputPin = 4;  // PIR инициализируем пин для получения сигнала от пироэлектрического датчика движения
int pirState = LOW;  // начинаем работу программы, предполагая, что движения нет
int val = 0;  // переменная для чтения состояния пина
int ledstrip = 5;    // LED connected to digital pin 5

void setup() {
pinMode(ledPin, OUTPUT);  // объявляем светодиод в качестве  OUTPUT
pinMode(inputPin, INPUT);  // объявляем датчик в качестве INPUT
Serial.begin(9600);
}

void loop(){
val = digitalRead(inputPin);  // считываем значение с датчика
if (val == HIGH) {  // проверяем, соответствует ли считанное значение HIGH
digitalWrite(ledPin, HIGH);  // включаем светодиод
if (pirState == LOW) {
// Зарегистрировано движение
Serial.println("Motion detected!");
pirState = HIGH;
//Запускаем постепенное включение ленты
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
    // sets the value (range from 0 to 255):
    analogWrite(ledstrip, fadeValue);
    // wait for 30 milliseconds to see the dimming effect
    delay(30);
  }
}
} else {
digitalWrite(ledPin, LOW); // выключаем светодиод
if (pirState == HIGH){
// Движения не обнаружено
Serial.println("Motion ended!");
//Запускаем постепенное ЗАТУХАНИЕ ленты
pirState = LOW;
 for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
    // sets the value (range from 0 to 255):
    analogWrite(ledstrip, fadeValue);
    // wait for 30 milliseconds to see the dimming effect
    delay(30);
  }
}
}
}

Итог

Далее, отсоединяем МК от компьютера и пробуем подключить блок питания в розетки 220v, если Вы сделали всё правильно, то должны увидеть примерно следующий результат:

img_0236

Видео демонстрация работы подсветки:

На этом, создание подсветки для шкафа-прихожей, с использованием светодиодной ленты завершено, спасибо за внимание!

Поделиться!