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

payaem.ru

Паяем — Все о электронике

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

В этой статье рассказывается о самодельной подсветке лестницы на основе Arduino. Это очень интересная и удобная штука, не позволит вам шмякнуться с лестницы в тёмное время суток :). И смотрится довольно красиво. Итак, начнём.

Вот примерно так это должно работать

Собственно вот сама лестница.

Собрать электрическую схему управления

  • Мозг всего устройства — Arduino mini

  • В качестве датчиков используется пара PIR — сенсоров
  • Для увеличения пинов, применяется микросхема 74HC595

  • Лентами — LED управляет ИМС ULN2003A

  • Датчик освещённости — фототранзистор

  • Блок питания PD-45A с двумя выходами +12 и +5

2. Печатная плата схемы и корпус

Проектирование несложное. Использовать можно различные программы, одна из более удобных — EAGLE. Скачать файлы можно по этой ссылке https://docs.google.com/file/d/0B7mjQCYtg0hsOUdleFdIdlZRNVE/edit

Всё устройство сделано отдельным блоком с разъёмами, это на случай если вдруг случится поломка или будет модернизация устройства, чтобы можно было заменить модуль управления либо рабочий орган.

Коробка сделана из гетинакса. Разъёмы оторваны из ненужных устройств и приклеены на холодную сварку.

3. Написать программу

Код программы спрятан здесь

4. Производим монтаж на лестницу

Это самый трудоёмкий и утомительный этап работы, надо было проложить 40 метров кабеля и спаять примерно 80 проводников.Управляющее оборудование размещено под лестницей.

Провода убраны в кабельные каналы.Датчики спрятаны под первыми ступеньками сверху и снизу, их размещение находилось экспериментально, основная задача ограничить угол обзора, чтобы лестница не включалась зря.Фототранзистор стоит по центру лестницы, где меньше всего света, по этой причине в пасмурную погоду лестница работает великолепно.Светодиодные ленты приклеены с обратных сторон ступенек, чтобы не били в глаза своим светом при подъёме наверх. Поскольку ленты были от разных фирм и IP, пришлось чередовать их через ступеньку, а это знаете ли вышло очень даже оригинально :).

Можно сделать и получше. Более так сказать модифицировать:

  • Датчики закреплены на двухсторонний скотч, можно их закрепить понадёжней.
  • Получше замаскировать проводники под ступеньками.
  • Можно перенести блоки питания и управления, чтобы они закрывались шторкой.
  • Разъемы можно установить на плату, тогда устройство станет компактней, а пайки станет в 2 раза меньше.
  • Микросхему ULN2003A можно поменять на нормальный светодиодный драйвер, или же на транзисторную микросхему, тогда появится возможность ШИМ (т.е. плавного включения).
  • Также можно применить менее навороченный блок питания, подойдет и обыкновенный светодиодный на 12 Вольт. Arduino питать через стабилизатор на 5 Вольт.
  • Ну и конечно, в идеале, применить четыре датчика, или два дальномера вдоль лестницы, тогда будет возможность с точностью определить число человек и их поведение на лестнице.

Затраты на всё

Вот так всё получилось

Конечно же вы можете сделать всё как вам угодно. Можно сделать другой корпус или поэкспериментировать с деталями, это уже на ваше усмотрение.

Ну вот и всё. Всем пока. Удачи вам в проектировании различных интересных штучек :).

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

Дельта принтеры крайне требовательны к точности изготовления комплектующих (геометрия рамы, длины диагоналей, люфтам соединения диагоналей, эффектора и кареток) и всей геометрии принтера. Так же, если концевые выключатели (EndStop) расположены на разной высоте (или разный момент срабатывания в случае контактных концевиков), то высота по каждой из осей оказывается разная и мы получаем наклонную плоскость не совпадающая с плоскостью рабочего столика(стекла). Данные неточности могут быть исправлены либо механически (путем регулировки концевых выключателей по высоте), либо программно. Мы используем программный способ калибровки.
Далее будут рассмотрены основные настройки дельта принтера.
Для управления и настройки принтера мы используем программу Pronterface.
Калибровка принтера делится на три этапа:

1 Этап. Корректируем плоскость по трем точкам

Выставление в одну плоскость трех точек — A, B, C (расположенных рядом с тремя направляющими). По сути необходимо уточнить высоту от плоскости до концевых выключателей для каждой из осей.
Большинство (если не все) платы для управления трехмерным принтером (В нашем случае RAMPS 1.4) работают в декартовой системе координат, другими словами есть привод на оси: X, Y, Z.
В дельта принтере необходимо перейти от декартовых координат к полярным. Поэтому условимся, что подключенные к двигателям X, Y, Z соответствует осям A, B, C.(Против часовой стрелки начиная с любого двигателя, в нашем случае смотря на логотип слева — X-A, справа Y-B, дальний Z-C) Далее при слайсинге, печати и управлении принтером в ручном режиме, мы будем оперировать классической декартовой системой координат, электроника принтера сама будет пересчитывать данные в нужную ей систему. Это условность нам необходима для понятия принципа работы и непосредственной калибровки принтера.

  • Обнуляем высоты осей X, Y, Z командой M666 x0 y0 z0.
    И сохраняем изменения командой M500. После каждого изменения настроек необходимо нажать home (или команда g28), для того что бы принтер знал откуда брать отсчет.
  • Калибровка принтера производится “на горячую”, то есть должен быть включен подогрев стола (если имеется) и нагрев печатающей головки (HotEnd’а) (Стол 60град., сопло 185 град.) Так же нам понадобится щуп, желательно металлический, известных размеров. Для этих задач вполне подойдет шестигранный ключ (самый большой, в нашем случае 8мм, он предоставляется в комплекте с принтерами Prizm Pro и Prizm Mini)
  • Опускаем печатающую головку на высоту (условно) 9мм (от стола, так, что бы сопло еле касалось нашего щупа, т.к. высота пока что не точно выставлена.) Команда: G1 Z9.
  • Теперь приступаем непосредственно к настройке наших трех точек.
    Для удобства можно вместо g- команд создать в Pronterface четыре кнопки, для перемещения печатающей головки в точки A, B, C, 0-ноль.

  • Последовательно перемещаясь между тремя точками (созданными ранее кнопками или командами) выясняем какая из них находится ниже всего (визуально) и принимает эту ось за нулевую, относительно нее мы будем менять высоту остальных двух точек.
  • Предположим, что точка A у нас ниже остальных. Перемещаем головку в точку B(Y) и клавишами управления высотой в Pronterface опускаем сопло до касания с нашим щупом, считая величину, на которую мы опустили сопло (в лоб считаем количество нажатий на кнопки +1 и +0.1)
    Далее командой меняем параметры высоты оси Y: M666 Y <посчитанная величина>
    M666 Y0.75
    M500
    G28
  • Ту же операцию проделываем с оставшимися осями. После чего следует опять проверить высоту всех точек, может получится, что разброс высот после первой калибровки уменьшится, но высота все равно будет отличатся, при этом самая низкая точка может изменится. В этом случае повторяем пункты 6-7.
  • 2 Этап. Исправляем линзу

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

    Читайте также:  Суперсамоделка! Самодельное судно на воздушной подушке

    Калибровка:

    1. Отправляем головку на высоту щупа в любую из трех точек стола. Например G1 Z9 X-52 Y-30
    2. Сравниваем высоту центральной точки и высоту точек A,B,C. (Если высота точек A, B, C разная, необходимо вернутся к предыдущей калибровки.)
    3. Если высота центральной точки больше остальных, то линза выпуклая и необходимо увеличить значение дельта радиуса. Увеличивать или уменьшать желательно с шагом +-0,2мм, при необходимости уменьшить или увеличить шаг в зависимости от характера и величины искривления (подбирается экспериментально)
    4. Команды:
      G666 R67,7
      M500
      G28
    5. Подгоняем дельта радиус пока наша плоскость не выровняется
    3 Этап. Находим истинную высоту от сопла до столика

    Третьим этапом мы подгоняем высоту печати (от сопла до нижней плоскости — столика) Так как мы считали, что общая высота заведомо не правильная, необходимо ее откорректировать, после всех настроек высот осей. Можно пойти двумя путями решения данной проблемы:
    1 Способ:
    Подогнав вручную наше сопло под щуп, так что бы оно свободно под ним проходило, но при этом не было ощутимого люфта,

    • Командой M114 выводим на экран значение фактической высоты нашего HotEnd’а
    • Командой M666 L получаем полное значение высоты (Параметр H)
    • После чего вычитаем из полной высоты фактическую высоту.
    • Получившееся значение вычитаем из высоты щупа.

    Таким образом мы получаем величину недохода сопла до нижней плоскости, которое необходимо прибавить к полному значению высоты и и записать в память принтера командами:
    G666 H 235.2
    M500
    G28

    2 Способ:
    Второй способ прост как валенок. С “потолка”, “на глаз” прибавляем значение высоты (после каждого изменение не забываем “уходить” в home), добиваясь необходимого значения высоты, но есть шанс переборщить со значениями и ваше сопло с хрустом шмякнется об стекло.

    Как сделать авто калибровку для вашего принтера и что при этом авто калибрует принтер вы узнаете из следующих статей.

    Вы можете помочь и перевести немного средств на развитие сайта

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

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

    Компоненты

    Приведу примерную стоимость всех компонентов, которые были использованы в работе. Большинство комплектующих куплены в магазинах моего города поэтому приведу все в рублях.

    Arduino Pro Mini300 р
    Ultrasonic Module HC-SR04 Distance Sensor — 2 шт230 р
    Драйвер светодиодов M545088 р
    Регулятор напряжения L78M05CV26 р
    Фоторезистор ФР-76416 р
    Кабель-канал 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) 0))
    <
    Serial.println(“Top sensor tripped.”);
    bDescentStarted = true;
    >
    >

    //Обработка нижнего датчика]
    void UltrasonicDownFire() <

    if((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]

    Arduino.ru

    Автоматическая подсветка лестницы и MM5450

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

    Все заработало, но проблема в колличестве загораемых светодиодов: по скетчу автора их загораеться 16, а мне нужно 20 (так как у меня 20 ступенек). С паяльником и схемотехникой дружу, а вот с прогрпммированием, к сожалению, нет :(. Пробовал разобраться сам, изучал http://code.google.com/p/arduino-m5451-current-driver/ но так и не допер, что нужно поменять, что бы засветились 20 светиков , а не 16. Буду ОЧЕНЬ благодарен за подсказку ! Ато каждый вечер, при подъеме в темноте на 2 этаж, вспоминаю, что лежит не доделанная подсветка. Автор, к сожалению не ответил на письмо 🙁

    Читайте также:  Чудная лампа настроения своими руками

    Скетч автора выглядит так:

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

    Простите не заметил сразу как всавлять программный код в сообщение. А отредактировать сообщение не пойму как 🙁

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

    Рекомендую вам выбросить этот код и написать свой. Не использую этих бесполезных библиотек.

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

    Рекомендую вам выбросить этот код и написать свой. Не использую этих бесполезных библиотек.

    К сожалению, я не силен в написании 🙁 А обидно, работает но не до конца .

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

    Для начала давайте избавимся от бестолковой библиотеки Ultrasonic.h

    В сериал-монитор должны выводиться дистанции с обоих датчиков. Выводятся?

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

    Для начала давайте избавимся от бестолковой библиотеки Ultrasonic.h

    В сериал-монитор должны выводиться дистанции с обоих датчиков. Выводятся?

    Спасибо за отклик !

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

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

    Не может такого быть. Какой мусор? копируйте и сюда выложите, вы скорость сериал-соединения правильно установили?

    Если у вас датчики HC-SR04 и они правильно подключены, то все должно работать. Единственное что может не работать – это 1 датчик из-за того что Е1 на 13 выводе – это я подправил, но никак не мусор.

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

    Сори, скорость нета действительно стояла

    Работает ! Пишет расстояние !

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

    Дальше давайте избавимся от еще более бесполезной библиотеки lightuino3.h. Для этого надо заглянуть в даташит ММ5450 из которого после беглого осмотра ясно, что для работы драйвера нужно отправить в него 36 бит, первый бит должен быть 1, а остальные 35 – соответсвуют выводам микрухи, так же там написано ,что после передачи 36 бита защелкнется защелка. Так что если у вас все светодиоды подключены к выводам от 1 до 20 по порядку, то в следующем примере кода они должны все загораться и тухнуть:

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

    Дальше давайте избавимся от еще более бесполезной библиотеки lightuino3.h. Для этого надо заглянуть в даташит ММ5450 из которого после беглого осмотра ясно, что для работы драйвера нужно отправить в него 36 бит, первый бит должен быть 1, а остальные 35 – соответсвуют выводам микрухи, так же там написано ,что после передачи 36 бита защелкнется защелка. Так что если у вас все светодиоды подключены к выводам от 1 до 20 по порядку, то в следующем примере кода они должны все загораться и тухнуть:

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

    Ну а теперь давайте попробуем подвигать их туда – сюда. Туда:

    Кстати, если двигаются, то куда? снизу-вверх или сверху-вниз?

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

    Зажигаеться последовательно только 8 штук Двигаються от output bit 1

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

    Так все загораются?

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

    Так все загораются?

    Мигает только 8. Не по очереди а все 8 сразу

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

    А пример из сообщения #8 ?

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

    А пример из сообщения #8 ?

    там мигают все, только что перепроверил !

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

    так все заграются по порядку ! правда у меня 20й (последний) не распаян на плате но думаю и там все ок

    Померял на 20м выходе тестором все ОК !

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

    Ну и остается объединить в один кода два примера и задать условия:

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

    Зажигаются периодически сами по себе без датчиков и с 1 по 20.

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

    Я бы еще сделал например так, что когда срабатывает один датчик светодиоды загораются, поднимаешься/спускаешься по леснице – проходжишь через второй датчик и только после этого светодиоды тухнут, ну и естественно на тот случай если первый датчик сработал, а второй нет – тоесть на лесницу кто-то вошел, но не вышел, светодиоды тухли бы через некоторое время. Все это для того что бы не вычислять время, за которое человек поднимается/спускается, ну и мало ли остановился на леснице.

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

    Это из-за того что иногда датчики 0 возвращают, когда не могут померить расстояние.

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

    Это из-за того что иногда датчики 0 возвращают, когда не могут померить расстояние.

    И так загораются сами по себе с 1 по 20 без влияния датчиков 🙁 И еще у меня в семе есть фоторезистор (для включения светиков только в темное время суток).

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

    Так не бывает. Значит что-то попадает в зону действия датчика от 1см до 99см, либо датчик подглючивает.

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

    Так не бывает. Значит что-то попадает в зону действия датчика от 1см до 99см, либо датчик подглючивает.

    Ок проверю есче. Попробую уменшить расстояние выстрела датчика. Отпишусь.

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

    Уменшил расстояние УЗ датчиков до 50 см. В итоге работает вроде как так: при вкл. ждет срабатывания датчика. Срабатывет правильно, тоесть зажигает или снизу или сверху в зависимости от датчика. Но ! после 1 срабатывания работа зацикливаеться – после срабатывания идет -поджих светиков – потухли – снова поджих через паузу – поджиг итд но без ожидания сработки датчика. Нужно, что ли, какоето обнуление схемы, ожидание начального сотояния. Пр ивкл. схемы ардуина мигает красным, ждет срабатывания датчика, а после первого срабатывания уже не мигает, а просто периодически поочередно засвечивает. Вот как то так.

    Свобода в действии

    Записки по применению свободных технологий в программировании и повседневной работе с персональным компьютером

    Подсветка лестницы. Продолжение 1

    • Получить ссылку
    • Facebook
    • Twitter
    • Pinterest
    • Электронная почта
    • Другие приложения

    Что может этот прототип

    Что ещё предстоит добавить

    Пошаговая сборка прототипа

    Подключаем линейный регулятор

    Подключение драйвера светодиодных лент

    На фотографии внизу драйвера подключены зелёный (на цифровой пин 7 arduino) и белый (на цифровой пин 6) провода. Это то, что на схеме называется “CLOCK IN” и “DATA IN” соответственно. Сверху драйвера на фото вино, что к первому пину (VDD) подключен красный провод – это +12 вольт. Второй пин драйвера (BRIGHTNESS CONTROL) так же подключен к +12 вольт через резистор номаналом 1 КОм. Последний пин в верхнем ряду драйвера на фото подключен жёлтым проводом к “минусу” двенадцати вольт. Оставшиеся пины (OUTPUT BIT) подключены к катодам (короткие ножки, “минусы”) двенадцативольтовых светодиодов. Аноды (длинные ножки, “плюсы”) светодиодов подключены к +12 вольт.

    Читайте также:  Полностью автономная камера наблюдения

    Подключаем дальномеры

    Подключаем фоторезистор

    Мой скетч

    В скетче используется библиотека для работы со светодиодным драйвером lightuino3, взятая из пакета по ссылке. Только пришлось внести небольшую правку в эту библиотеку (иначе не компилировалось). Строку 81 дополнил словом “const”. Было:
    Стало:

    • Получить ссылку
    • Facebook
    • Twitter
    • Pinterest
    • Электронная почта
    • Другие приложения

    Комментарии

    Хорошая статья! А как насчёт ШИМ?

    Светодиодный драйвер M5451 умеет плавно зажигать/тушить своих подопечных. Как это реализуется на практике опишу в “Продолжении 2”. Пока (как находится время) делаю платку со всей обвязкой для светодиодных лент.

    У меня имеется М5450. Она тоже умеет плавно зажигать? Жду с нетерпением продолжения проекта)

    Различия между этими драйверами минимальные. Так что почти все возможности и трудности совпадают. На макетке я собрал схемку, где плавное зажигание/гашение работали (программа чужая из тырнета), но уже успел всё разобрать. Но зарисовал всё в Fritzing и пытаюсь найти время всё это спаять. А вот с программой мне ещё предстоит разбираться, т.к. мои хотелки несколько больше, чем те примеры, которые нашлись.

    Нескромный вопрос: когда можно ожидать готовую третью часть? заранее спасибо. P.S. наглость второе счастье

    Ох, медленно дело продвигается 🙁 До готового установленного изделия ещё далеко. Но в ближайшие пару недель выложу “Продолжение 2” по “железу” – плата с транзисторами uln2803 и инверторами логики 74hc04. За окончательную программу ещё не брался.

    И снова здравствуйте. Подскажите пожалуйста, как регулировать количество ступенек на даном этапе?

    В данной программе из статьи отдельной переменной для количества ступенек нет. За количество “ступенек” отвечают наибольшие числа в циклах за комментариями “//Обнуляем”, “//Зажигаем”, “//Гасим”. Там стоит “9” (в некоторых местах 9-1=”8″) – вместо девяти поставьте ваше количество ступенек.

    здравствуйте, помогите разобраться в ошибке Arduino: 1.6.5 (Windows XP), Плата”Arduino Uno”

    In file included from C:Documents and SettingsLonerМои документыArduinolibrarieslightuino5/lightuino3.h:28:0,
    from sketch_jul21c.ino:1:
    C:Documents and SettingsLonerМои документыArduinolibrarieslightuino5/lightuinoSink.h:158:31: error: ‘prog_uchar’ has not been declared
    AniPattern(Lightuino& shld, prog_uchar* anim,prog_uint16_t* delayLst, int total_frames): shield(shld) ^
    C:Documents and SettingsLonerМои документыArduinolibrarieslightuino5/lightuinoSink.h:158:48: error: ‘prog_uint16_t’ has not been declared
    AniPattern(Lightuino& shld, prog_uchar* anim,prog_uint16_t* delayLst, int total_frames): shield(shld) ^
    C:Documents and SettingsLonerМои документыArduinolibrarieslightuino5/lightuinoSink.h:166:3: error: ‘prog_uchar’ does not name a type
    prog_uchar* ani;
    ^
    C:Documents and SettingsLonerМои документыArduinolibrarieslightuino5/lightuinoSink.h:167:3: error: ‘prog_uint16_t’ does not name a type
    prog_uint16_t* delays;
    ^
    C:Documents and SettingsLonerМои документыArduinolibrarieslightuino5/lightuinoSink.h: In constructor ‘AniPattern::AniPattern(Lightuino&, int*, int*, int)’:
    C:Documents and SettingsLonerМои документыArduinolibrarieslightuino5/lightuinoSink.h:158:115: error: ‘delays’ was not declared in this scope
    AniPattern(Lightuino& shld, prog_uchar* anim,prog_uint16_t* delayLst, int total_frames): shield(shld) ^
    C:Documents and SettingsLonerМои документыArduinolibrarieslightuino5/lightuinoSink.h:158:132: error: ‘ani’ was not declared in this scope
    AniPattern(Lightuino& shld, prog_uchar* anim,prog_uint16_t* delayLst, int total_frames): shield(shld) ^
    Ошибка компиляции.

    Это сообщение будет содержать больше информации чем
    “Отображать вывод во время компиляции”
    включено в Файл > Настройки

    Я пока проверить не могу. Видимо, в какой-то момент изменились доступные типы переменных в языке программирования для Arduino. Возможно, поможет, изменить “prog_uchar” на “const unsigned char”, а “prog_uint16_t” на “const uint16_t”. Я постараюсь выяснить и добавить в статью это.

    Олег,
    здравствуйте!
    Планировал установку контроллера у себя в доме. Прошу Вас написать мне на эл.почту ovchinnikovr собака mail.ru . Надеюсь, что получится посотрудничать.

    Hello
    I’m trying to build this project but stummble on some problems. when importing sketch i get errors related to lightuino library.

    Подсветка лестницы с датчиком движения: монтаж системы с помощью комплектующих Ардуино

    Автоматическая подсветка лестниц с датчиком движения довольно удобна и смотрится стильно. Чтобы пройти по лестнице ночью необходимо включить свет, а это может побеспокоить остальных домочадцев.

    Подсветка будет эстетично смотреться. В отличие от привычного нам освещения, энергозатраты на такую подсветку небольшие. Подсветка с датчиком движения безопасна даже если в доме находятся дети. Автоматическая подсветка придаст индивидуальности дому и подчеркнет вкус хозяев.

    Элементы устройства

    В наше время всё большую популярность обретают светильники c датчиком движения.

    В случае подсветки лестницы, лучшим вариантом будет отдать предпочтение производителям серии плат и контроллерам Arduino (Ардуино) или их аналогам.

    Устройство автоматической подсветки лестницы с датчиком движения состоит из контроллера управления с диодными лентами.

    В состав контроллера входит:

    • блок питания;
    • микроконтроллер;
    • два датчика движения;
    • датчик сумерек.

    Датчики движения предназначены для установки в зоне первой и последней ступенек. Они могут быть как инфракрасными, так и ультразвуковыми. Он подаёт сигнал устройству, когда к нему приближается человек.

    Датчик сумерек предназначен для исключения срабатывания устройства в светлое время суток либо при достаточном искусственном освещении лестницы.

    Управление устройством

    Схема подключения комплектующих Ардуино (нажмите для увеличения)

    Управление обычным устройством осуществляется с пульта управления. На пульте управления расположены:

    • элементы индикации, показывающие включение самого устройства;
    • срабатывание одного из двух датчиков движения;
    • индикатор датчика сумерек.

    Управление осуществляется с помощью кнопок. Правые две кнопки — это кнопки увеличения или уменьшения значения управляемого параметра. Левые две кнопки предназначены для управления яркостью света, яркостью подсветки. При одновременном нажатии левых кнопок осуществляется регулировка задержки освещения лестницы, до её выключения.

    Если вы предпочли устройство Ардуино, то оно работает при помощи компьютерной программы, которую можно либо скачать на компьютер, либо напрямую подсоединить устройство к компьютеру и установить.

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

    При подсветке с помощью Arduino светятся верхняя и нижняя ступеньки. Они будут светиться практически всю ночь, для того чтобы человек мог ориентироваться в темноте где ступенька и идти на этот свет.

    Датчик сумерек и движения подключаются к клемам. Для каждого датчика есть отдельная клема. Когда датчик сумерек заблокирован резистором, то устройство считает, что наступили сумерки.

    Как работает устройство

    Если человек подойдёт сверху лестницы, то в этом случае сработает верхний датчик. Свет на лестнице распространиться волной сверху вниз.
    Далее, подсветка будет светиться некоторое время, чтобы человек прошёл по лестнице. По истечении заданного времени задержки, лестница также плавно погаснет волной сверху вниз.

    Если человек подойдёт снизу сработает нижний датчик, и устройство даст световую волну снизу от первой до последней ступеньки. Также произойдёт выдержка по времени освещения и свет плавно погаснет в том же направлении, в котором включился.

    На ступеньках отображается уровень выставленной задержки в секундах. Но этот уровень не отражает время включения и выключения лестницы. Он отражает только задержку между двумя этими состояниями и его можно регулировать.

    Как подобрать светильник бра под интерьер, Вы можете узнать здесь.

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

    Как работает автоматическая подсветка лестницы, Вы можете увидеть в следующем видео:

    Ссылка на основную публикацию