Подсветка лестницы на ардуино своими руками

Подсветка лестницы на ардуино своими руками Автоматическая подсветка лестницы с помощью ArduinoДобрый день! В этом посте хочу поделится с хабро сообществом о том, как мне довелось сделать автоматическое освещение лестницы в своем двухэтажном коттедже. Начну с небольшого грустного отступления.
Около четырех месяцев назад, возвращаясь с работы в полной темноте, я не удачно подскользнулся и сломал две плюсниевых кости (пальца) на левой ступне. Целый месяц пришлось провалятся в постеле, так как наступать на ногу было невероятно больно. Потом еще пол месяца хромал без гипса (у кого были переломы меня сразу поймут). После этой печальной истории я начал задумываться об автоматизации освещения ступенек лестницы. Немного поиграв с поисковыми запросами, нашел для себя очень простое решение в этом блоге, как раз на основе моего любимого микроконтроллера Arduino. Схема не вызвала каких то трудностей, но отпугивало количество и длинна проводов, которые мне предстояло смонтировать. До этого ничего подобного не делал. Покупать готовые решения или нанимать кого-то — накладно. В течении месяца заказал нужные комплектующие и не торопясь смонтировал за несколько дней на свою лестницу. Всем кому интересно, что из этого получилось, добро пожаловать под кат (осторожно трафик)!

Компоненты


Приведу примерную стоимость всех компонентов, которые были использованы в работе. Большинство комплектующих куплены в магазинах моего города поэтому все в рублях. Arduino Pro Mini 300 р Ultrasonic Module HC-SR04 Distance Sensor — 2 шт 230 р Драйвер светодиодов M5450 88 р Регулятор напряжения L78M05CV 26 р Фоторезистор ФР-764 16 р Кабель-канал 20x10 мм — 10 М 100 р Провод 2x0,12 — 100 М (с запасом для лент) 190 р Провод 4x0,12 — 20 М (для сенсоров) 60 р Светодиодная лента LSP0603W15 White — 17 шт по 30 см 1020 р Мелочевка: текстолит 15x15 см, хлорное железо, сверло 0,9 мм, штыревые соединители типа PLS, разъемы на плату BLS, термоусадочная трубка, конденсаторы и резисторы 200 р Блок питания 12В (он же корпус) от сигнализации «Парус 4» Бесплатно

Прототип


Отладку прошивки для Arduino, как и все, я производил на макетной плате с использованием обычных светодиодов.

Схема


С помощью небезызвестной среды для проектирования Eagle CAD была доработана схема автора и печатная плата. Здесь я добавил регулятор напряжения на 5 В, изменил датчики с 3х контактных дорогих Ping на четырех контактные дешевые HC-SR04. Для того, что бы подсветка лестницы срабатывала только в темное время суток, в схему добавлен советский фоторезистор ФР-764 (можно использовать и другой).

Автоматическая подсветка лестницы с помощью Arduino

Автоматическая подсветка лестницы с помощью Arduino

Автоматическая подсветка лестницы с помощью Arduino

Скетч


В скетче используется свободно распространяемая библиотека для работы со светодиодным драйвером 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<9;j++) {
    ledState[j] = B00000000;
  }
  //Зажигаем
  for (int k=1;k>=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<9;j++) {
    ledState[j] = B00000000;
  }
//Зажигаем
  for (int k=0;k<=1;k++)
  {
  for (int j=0;j<9;j++)    
  {
    ledState[k]=(ledState[k] << 1) + 1;
    sinks.set(ledState);          
     delay(lightSpacing);
  }    }
  delay(lightHold);
  for (int k=0;k<=1;k++)
  {
  for (int j=0;j<9;j++)    
  {
    ledState[k]=(ledState[k] << 1);
    sinks.set(ledState);          
     delay(lightSpacing);
  }    
}
delay(pingReadDelay);  
}


Немного про монтаж


Так как у меня самая простая деревянная лестница (без подступенной доски), крепление светодиодных лент осуществил с торца каждой ступеньки.
Автоматическая подсветка лестницы с помощью Arduino

По всей длине проходит кабель-канал с уложенными проводами, который приклеен на жидкие гвозди. Светодиодные ленты изначально имеют клейкую сторону, они прекрасно держатся на дереве.
Автоматическая подсветка лестницы с помощью Arduino

Сенсоры были установлены в начале каждой первой ступени вверху и внизу лестницы. В качестве крепления использовал обычные подрозетники для гипсокартона.
Автоматическая подсветка лестницы с помощью Arduino

Из корпуса блока питания сигнализации был выброшен севший аккумулятор, в место него легко поместился наш контроллер.
Автоматическая подсветка лестницы с помощью Arduino

Крышка на месте. Размещаем контроллер под лестничной площадкой.
Автоматическая подсветка лестницы с помощью Arduino

Результат


На самом деле видео не отражает реальной картины. Лестница освещается куда более красивее и ярче.

Скачать все необходимые файлы одним архивом

Источник: DIY или Сделай Сам

Подсветка лестницы на ардуино своими руками фото. Поделитесь новостью Подсветка лестницы на ардуино своими руками с друзьями!
Подсветка лестницы на ардуино своими руками 20
Подсветка лестницы на ардуино своими руками 93
Подсветка лестницы на ардуино своими руками 37
Подсветка лестницы на ардуино своими руками 67
Подсветка лестницы на ардуино своими руками 41
Подсветка лестницы на ардуино своими руками 4
Подсветка лестницы на ардуино своими руками 79
Подсветка лестницы на ардуино своими руками 10
Подсветка лестницы на ардуино своими руками 37
Подсветка лестницы на ардуино своими руками 16
Подсветка лестницы на ардуино своими руками 2
Подсветка лестницы на ардуино своими руками 44
Подсветка лестницы на ардуино своими руками 98
Подсветка лестницы на ардуино своими руками 18
Подсветка лестницы на ардуино своими руками 96
Подсветка лестницы на ардуино своими руками 69
Подсветка лестницы на ардуино своими руками 59
Подсветка лестницы на ардуино своими руками 26
Подсветка лестницы на ардуино своими руками 90
Подсветка лестницы на ардуино своими руками 75