Евгения Пронькина

Делюсь лайфхаками для любителей самоделок. Пишу статьи по созданию самоделок и пошаговые инструкции, которые помогут без проблем собрать и использовать в быту или на работе выбранную вами самоделку.

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

(чертежи, схемы, руководство, видео)

Автоматическая подсветка лестницы с помощью 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 Бесплатно

Программный код:

#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 (чертежи, схемы, руководство, видео)

Скачать:

Автоматическая подсветка лестницы.pdf (327 кБ)

Видео:


 

You have no rights to post comments