Добрый день! В этом посте хочу поделится с интернет сообществом о том, как мне довелось сделать автоматическое освещение лестницы в своем двухэтажном коттедже. Около четырех месяцев назад, возвращаясь с работы в полной темноте, я не удачно подскользнулся и сломал две плюсниевых кости (пальца) на левой ступне. Целый месяц пришлось провалятся в постеле, так как наступать на ногу было невероятно больно. Потом еще пол месяца хромал без гипса (у кого были переломы меня сразу поймут). После этой печальной истории я начал задумываться об автоматизации освещения ступенек лестницы. Немного поиграв с поисковыми запросами, нашел для себя очень простое решение в этом блоге, как раз на основе моего любимого микроконтроллера Arduino. Схема не вызвала каких то трудностей, но отпугивало количество и длина проводов, которые мне предстояло смонтировать. До этого ничего подобного не делал. Покупать готовые решения или нанимать кого-то — накладно. В течении месяца заказал нужные комплектующие и не торопясь смонтировал за несколько дней на свою лестницу. Всем кому интересно, что из этого получилось, добро пожаловать под кат!
Компоненты
Приведу примерную стоимость всех компонентов, которые были использованы в работе. Большинство комплектующих куплены в магазинах моего города поэтому приведу все в рублях.
Arduino Pro Mini | 300 р |
Ultrasonic Module HC-SR04 Distance Sensor — 2 шт | 230 р |
Драйвер светодиодов M5450 | 88 р |
Регулятор напряжения L78M05CV | 26 р |
Фоторезистор ФР-764 | 16 р |
Кабель-канал 20×10 мм — 10 М | 100 р |
Провод 2×0,12 — 100 М (с запасом для лент) | 190 р |
Провод 4×0,12 — 20 М (для сенсоров) | 60 р |
Светодиодная лента LSP0603W15 White — 17 шт по 30 см | 1020 р |
Мелочевка: текстолит 15×15 см, хлорное железо, сверло 0,9 мм, штыревые соединители типа PLS, разъемы на плату BLS, термоусадочная трубка, конденсаторы и резисторы | 200 р |
Блок питания 12В (он же корпус) от сигнализации «Парус 4» | Бесплатно |
Итого | 2230 р |
Прототип
Отладку прошивки для Arduino, как и все, я производил на макетной плате с использованием обычных светодиодов.
Схема
С помощью небезызвестной среды для проектирования Eagle CAD была доработана схема автора и печатная плата. Здесь я добавил регулятор напряжения на 5 В, изменил датчики с 3х контактных дорогих Ping на четырех контактные дешевые HC-SR04. Для того, что бы подсветка лестницы срабатывала только в темное время суток, в схему добавлен советский фоторезистор ФР-764 (можно использовать и другой).
Скетч
В скетче используется свободно распространяемая библиотека для работы со светодиодным драйвером M5450, а также библиотека для работы с ультразвуковым дальномером HC-SR04.
#include "lightuino3.h" #include "Ultrasonic.h" //Устанавливаем контакты для первого датчика #define TRIG_PIN 12 #define ECHO_PIN 13 //Устанавливаем контакты для второго датчика #define TRIG2_PIN 10 #define ECHO2_PIN 11 //Определяем первый датчик Ultrasonic OurModuleUp(TRIG_PIN, ECHO_PIN); //Определяем второй датчик Ultrasonic OurModuleDown(TRIG2_PIN, ECHO2_PIN); // pins 0, 1 used by Serial const unsigned char DataPin = 6; const unsigned char clockPin = 7; // задержка между ступеньками const long lightSpacing = 280; //задержка свечения всей лестницы const long lightHold = 10000; //задержка выстрела сенсоров const long pingReadDelay = 50; // Диапазон при котором сработает сенсор const float minBottomIn = 33.0f; const float minTopIn = minBottomIn; LightuinoSink sinks(clockPin, DataPin, 100, 4); boolean bClimbStarted = false; boolean bDescentStarted = false; int val; void setup() { Serial.begin(9600); pinMode(DataPin, OUTPUT); pinMode(clockPin, OUTPUT); delay(1000); sinks.set(0,0,0); } void loop() { val = analogRead(0); //Проверяем освещенность в помещении if (val>=1020){ UltrasonicDownFire();//Выстрел нижнего датчика if(bClimbStarted) { bClimbStarted = false; bDescentStarted = false; climbLightSequence(); } else { // Выстрел верхнего датчика UltrasonicUpFire(); if(bDescentStarted) { bClimbStarted = false; bDescentStarted = false; descentLightSequence(); } } delay(pingReadDelay); } } //Обработка верхнего датчика void UltrasonicUpFire() { if((OurModuleUp.Ranging(INC) < minTopIn) && (OurModuleUp.Ranging(INC) > 0)) { Serial.println("Top sensor tripped."); bDescentStarted = true; } } //Обработка нижнего датчика] void UltrasonicDownFire() { if((OurModuleDown.Ranging(INC) < minTopIn) && (OurModuleDown.Ranging(INC) > 0)) { Serial.println("Bottom sensor tripped."); bClimbStarted = true; } } void climbLightSequence(){ LedsOnDown(); } void LedsOnDown(){ //Обнуляем byte ledState[9]; for (int j=0;j=0;k--) { for (int j=8;j>=1;j--) { ledState[k] = (ledState[k] >> 1) + 128; sinks.set(ledState); delay(lightSpacing); } } //Задержка delay(lightHold); //Гасим for (int k=1;k>=0;k--) { for (int j=8;j>=1;j--) { ledState[k] = (ledState[k] >> 1); sinks.set(ledState); delay(lightSpacing); } } delay(pingReadDelay); } void descentLightSequence(){ LedsOnUp(); } void LedsOnUp(){ //Обнуляем byte ledState[9]; for (int j=0;j ledState[j] = B00000000; } //Зажигаем for (int k=0;k { for (int j=0;j { ledState[k]=(ledState[k] << 1) + 1; sinks.set(ledState); delay(lightSpacing); } } delay(lightHold); for (int k=0;k { for (int j=0;j { ledState[k]=(ledState[k] << 1); sinks.set(ledState); delay(lightSpacing); } } delay(pingReadDelay); }
Немного про монтаж
Так как у меня самая простая деревянная лестница (без подступенной доски), крепление светодиодных лент осуществил с торца каждой ступеньки.
По всей длине проходит кабель-канал с уложенными проводами, который приклеен на жидкие гвозди. Светодиодные ленты изначально имеют клейкую сторону, они прекрасно держатся на дереве.
Сенсоры были установлены в начале каждой первой ступени вверху и внизу лестницы. В качестве крепления использовал обычные подрозетники для гипсокартона.
Из корпуса блока питания сигнализации был выброшен севший аккумулятор, в место него легко поместился наш контроллер.
Крышка на месте. Размещаем контроллер под лестничной площадкой.
Результат
На самом деле видео не отражает реальной картины. Лестница освещается намного красивее и ярче.
lesenka.zip (79,3 KiB, 12 764 загрузок)
Здравствуйте, Игорь!
Скиньте, пожалуйста, схему и скетч на yushkoff01@mail.ru
Заранее благодарен.
Игорь… ну Вы поняли. Интерес ширится. Оч жду от Вас комплектик документации. Скорее всего с ключами, поскольку заявленный ток микросхемки думаю не потянет ленты по метру…(18 ступеней)
Буду крайне благодарен.
teleserviss@inbox.lv
Игорь, буду благодарен, если поделитесь своими наработками.
votodef@gmail.com
P.S. Кому-нибудь из вопрошавших Игорь ответил?
Друзья! Не переживайте, в скором времени я собираюсь обновить блог, где выложу схему. А если кто то не может ждать — поищите по ключевым словам arduino и tlc5940. И будет вам счастье.
Обновил схему, изучайте.
Здравствуйте. Я в этом деле новичок, так что извините, сли глупый вопрос.
Можно ли ипользовать например Arduino Nano V3.0 AVR ATmega328 P-20AU.
и какие изменения нужно внести, чтобы данная схема заработала на другой ардуине?
Можете использовать любую ардуину. В скетче в самом начале указываются пины к которым нужно подключать датчики и драйвер.
Спасибо, будем практиковатся
извиняюсь разобрался 🙂
А я не разобрался 🙁
Добрый день. Я практически полностью гуманитарий, но хочу попробовать собрать вашу схему. Все компоненты идентичные, все понятно кроме того, как подключаются светодиоды на макетной плате, такое чувство, что у каждого светодиода всего по 1 ноге. Не подскажите куда катод и андо светодиода подключать.
На схеме для диодов есть 20 выходов, 1 диод использует 2 выхода?
Сразу видно, что вы гуманитарий. 🙂 Катоды диодов к драйверу, а аноды все подключать к +12В.
Спасибо 🙂