Автоматическая подсветка лестницы
В качестве контроллера использовал всем знакомый Arduino Pro Mini.
Сначала о самой лестнице количество ступеней 11, ширина 550 мм. В общей сложности необходимо 6 м светодиодной ленты (заказал 2 шт по 5 м 5050 SMD), со степенью защиты IP67 (то есть защита от пыли и воды), чтобы можно было протереть пыль и не задумываться о том, попадешь ли под напряжение или повредишь ленту.
После подключения 5-ти м светодиодной ленты ток через нее оказался всего 2,5 A, то есть, для 6-ти м светодиодной ленты нужен блок питания на 36 Вт. Выбор остановился на китайском блоке питания 12 В 8.3 А 100 Вт. 100, конечно, много, но 12 В понадобилось для другого проекта, поэтому подключился к нему же.
В качестве питания самого контроллера, а также сенсоров (питание 5 В) использовал простенькую схему понижения напряжения с помощью стабилизатора напряжения L7805CV и двух керамических конденсаторов 0,1 мкФ и 0,33 мкФ.
В качестве датчиков фиксирующих движение остановился на ультразвуковых сенсорах HC-SR04, так как испускают узкий пучок ультразвуковых импульсов и можно настроить расстояние срабатывания. Таким образом, можно установить на отслеживании пересечения импульса на первой и последней ступенях. Вдаваться в подробности характеристик, способа подключения, принципа работы сенсора не вижу смысла в интернете достаточно много информации о них.
Вопрос измерения освещенности решился, также, довольно просто с помощью схемы делителя напряжения, в которой в качестве переменного резистора используется фоторезистор Gl5516.
Далее рассмотрим вопрос количества использованных контактов 11 цифровых для ступеней, 4 для двух сенсоров и один аналоговый для измерения освещенности. Итого 15 цифровых, что не дает нам Arduino. Недолго думая, использовал микросхему 74НС595N, а точнее каскад из двух сдвиговых регистров для увеличения количества цифровых выходов Arduino.
Почитав литературу и мнения радиолюбителей, поставил керамический конденсатор 0,1 мкФ на 12-ой ножке STcp первого регистра, якобы для минимизации шума при подачи «защелкивающего» импульса. При опробовании мною каскада «на столе», действительно с конденсатором работает лучше, в особенности при первой подачи питания на микросхемы.
Одно дело подключать к Arduino слабую нагрузку, наподобие светодиода, другое подключать кусок светодиодной ленты, длиной 500-550 мм (максимальный ток цифрового выхода Arduino 40 мА). Более доступно для меня оказалась микросхема ULN2003A (сборка Дарлингтона), максимальный ток через один выход которой составляет 0,5 А.
Хочу обратить внимание, что контакт Echo второго сенсора приходит на 13-й контакт Arduino, на котором находится светодиод самого контроллера.
Сделано это специально, для удобства, в тот момент, когда удовлетворяется условие «достаточно ли темно для начало опроса сенсоров?», светодиод на 13-ом контакте начинает мигать.
Плату рисовал в Sprint-Layout. Делал акцент на том, чтобы микросхемы и контроллер снимались, припаивал панельки SCS-14 и 16, а также гнездо на плату PBS 2×12 2.54. Единственный минус пришлось выгибать в другую сторону ножки микросхем 74НС595N.
Составление скетча
При составлении скетча использовалась только одна библиотека Ultrasonic (для работы с сенсорами HC-SR04) и то можно было обойтись без неё. Пришлось повозиться с битовыми операциями, так как необходимо определенным образом загружать два байта в каскад сдвиговых регистров (в самом скетче сделал доходчивые пояснения).
// ***Скетч подсветка лестницы V1***
// Библиотеки
#include «Ultrasonic.h»
// Пины
#define Trig_1 10 // Устанавливаем контакты для первого датчика.
#define Echo_1 11
#define Trig_2 12 // Устанавливаем контакты для второго датчика.
#define Echo_2 13
#define Ds 8 // Ds/SDI первого сдвигового регистра 75HC595N_1.
#define STcp 7 // STcp/RCLK сдвиговых регистров 75HC595_1, 2.
#define SHcp 6 // SHcp/SRCLK сдвиговых регистров 75HC595_1, 2.
#define LDR A0 // Аналоговый сигнал с фоторезистора.
Ultrasonic Sensor_1(Trig_1, Echo_1); // Определяем первый датчик.
Ultrasonic Sensor_2(Trig_2, Echo_2); // Определяем второй датчик.
// Параметры
const int Limit = 100; // Переменная для хранения предела сравнения с освещенностью.
const float Min_Disrance = 50.0; /* Диапазон, при котором сработает сенсор
Ширина ступеньки 55 см.*/
boolean Up_Sensor_Started = false; // Переменная отражающая факт срабатывания верхнего сенсора.
boolean Down_Sensor_Started = false; // Переменная отражающая факт срабатывания нижнего сенсора.
const int Read_Delay = 50; // Переменная для хранения времени задержки опроса сенсоров.
unsigned int leds = 0; // Переменная для хранения передаваемых битов в регистры.
const int N = 10; /* Переменная для хранения количества ступеней лестницы.
Отсчет идет с нуля! Максимум выходов 14-ть 2 Сборки Дарлингтона.*/
const int T_Ladder = 3000; // Переменная для хранения времени включенной лестницы.
const int T_Stair = 500; // Переменная для хранения времени между включениями.
void setup()
<
pinMode(Ds, OUTPUT);
pinMode(STcp, OUTPUT);
pinMode(SHcp, OUTPUT);
// Serial.begin(9600); // Инициализация последовательного порта на скорости 9600 бойд.
>
void loop()
<
int LDR_Value = analogRead(LDR); // Считываем значение с фоторезистора.
// Serial.println(LDR_Value); // Проверяем уровень освещенности в пределах от 0 до 1023.
if(LDR_Value 0))
// Если измеренное расстояние больше нуля, но меньше предела то.
<
Up_Sensor_Started = true; // Факт срабатывания верхнего сенсора.
>
>
// Процедура опрос нижнего датчика
void Down_Sensor()
<
if((Sensor_2.Ranging(CM) 0))
// Если измеренное расстояние больше нуля, но меньше предела то.
<
Down_Sensor_Started = true; // Факт срабатывания нижнего сенсора.
>
>
// Процедура загрузки битов в регистры
void updateShiftRegister()
<
digitalWrite(STcp, LOW); // Подаем низкий сигнал для загрузки битов в регистры.
byte First = lowByte(leds); /* Разделяем наш байт на младший и старший,
так как функция shiftOut за раз пропускает только 8 бит.*/
byte Second = highByte(leds);
shiftOut(Ds, SHcp, MSBFIRST, Second); // Проталкиваем 1-й байт и читаем его слева направо.
shiftOut(Ds, SHcp, MSBFIRST, First); // Проталкиваем 2-й байт.
digitalWrite(STcp, HIGH); // Сбрасываем на выходы полученные биты.
>
// Процедура включения подсветки снизу вверх
void Turing_Upward()
<
for (int i = 0; i = 0; i—)
<
bitSet(leds, i); // Изменение всех N битов на состояние 1 (или HIGH).
updateShiftRegister(); // Включение подсветки загрузкой измененного байта.
delay(T_Stair); // Задержка между включением ступеней.
>
delay(T_Ladder); // Задержка включенной лестницы.
leds = 0; // Обнуление байта.
updateShiftRegister(); // Потушить подсветку.
>
Особенности монтажа
Теперь про монтаж, укладывать светодиодную ленту, конечно же, лучше в специально для неё созданный профиль, но стоимость его довольно высока. Я брал кабель канал 12×12, срезал раскаленным канцелярским ножом лишнее, получилось следующее.
Чтобы спрятать сенсоры HC-SR04, нашел для них по размеру коробку IEK 20 мм.
Монтаж щитка особого труда тоже не составил, так как на плате заранее задумывалось установка винтовых клеммников.
Получившийся проект удовлетворил все поставленные задачи, во время работы автоматики не было замечено каких-либо отказов, замечаний.
Единственное, по моему мнению, можно было бы сделать щиток более компактным и полностью его закрыть от посторонних рук.
Источник
Народный контроллер подсветки лестницы на Arduino/ATmega328
Друзья, наконец-то приехали с завода платы контроллера. Теперь вы можете заказать себе набор деталей и компонентов для самостоятельного изготовления контроллера или готовое устройство в сборе.
Конструктор (Arduino Nano)
Готовый контроллер (Arduino Nano)
Конструктор (ATmega328P)
Готовый контроллер (ATmega328P)
1) Набор деталей для сборки (2350р)
- Печатная плата
- Впаиваемые компоненты и детали
- Arduino Nano v3 / ATmega328P
- 2 Датчика расстояния HY-SRF05
- Датчик освещенности TEMT6000
- Инструкция по пайке
- Инструкция по программированию
Конструктор на Arduino Nano:
набор для самостоятельной сборки контроллера подсветки лестницы на Arduino Nano
Конструктор на ATmega328P:
набор для самостоятельной сборки контроллера подсветки лестницы на ATmega328P
2) Готовый контроллер (2950р)
- Готовая плата со всеми впаянными компонентами
- Arduino Nano / ATmega328P-PU запрограммированная
- 2 Датчика расстояния HY-SRF05
- Датчик освещенности TEMT6000
Готовый контроллер на Arduino Nano:
Контроллер подсветки лестницы на Arduino Nano
Готовый контроллер на ATmega328P:
Контроллер подсветки лестницы на ATmega328P
Вариант крепления датчиков:
И напоминаю, что для данных контроллеров есть удобная утилита для настройки, позволяющая редактировать параметры «на лету».
КАК ЗАКАЗАТЬ:
- Постучаться в WhatsApp +7(903)775-5805
- или написать мне на почту demid@demid.net
- или сделать заказ в магазине
ДОСТАВКА:
Самовывоз в Москве:
- ул.Гришина, 2к2 (м. Кунцевская)
- Головинское ш., 14 (м. Водный стадион)
В другие города доставка Почтой России (от 260р) Посылка первым классом, трек-номер для отслеживания.
ОПЛАТА:
- наличными
- на карту
- наложенный платеж
Источник
Автоматическая подсветка лестницы. Своими руками. Последний раз.
Я бы не писал здесь эту статью если бы из всех найденных в инете решений больше не понравилось вот это.
Почему-то не в разделе DIY, ну не суть…
Кстати автоматическая подсветка лестницы – это одна из немногих вещей, которая является исключением из правила «Всё что ты придумал сегодня – китайцы позавчера сделали и вчера продали» © [моё]
Автору статьи респект и уважение, все-таки дело было в 2015-ом, 20 ноября будет юбилей 4 года, но не понравилось несколько моментов:
— Софт явно требовал серьезной передоработки.
— Размер платы — жесть. Это чисто мои внутренние стремления к минимализму. Не обращайте внимания.
— Использование громадных NPN-транзисторов еще и с радиаторами. Не сколько претензия к громадным, сколько к NPN.
Ну ладно размер, уже предупредил не обращать внимания, но NPN-то зачем? TLC5940 кладет выходы на землю. Автору понадобилось городить инверторы 74LS04 там, где они в принципе не нужны, чтобы получить плюс на базе для NPN. Ну допустим, сделал из того что было под рукой, но при этом никто не задумался что все ступеньки лестницы постоянно подключены к 12в, а ШИМ дергает за минусы. Еще раз: вся лестница, каждая ступенька подключена постоянно к 12в. Даже когда ленты не горят. Ничего не смущает?
И поехали тиражировать эту плату в больших количествах по всем городам бывшего союза…
Что-то увлекся критикой. Никого не хочу обидеть. Простите. У вас уже всё работает а у меня нет. Давайте лучше меня критиковать.
В общем первый прототип на коленке получился вот так:
Та же самая Arduino Nano, та же самая TLC5940, мосфеты сдвоенные IRF7314 P-канальные 20v 5.3A, разводка питания двойная под LM7805 и под AMS1117-5.0. От последней потом отказался. Греется, не нравится, выкинул в окно.
Заказал платы на заводе, приехали. Да, кстати, размеры 48*100мм, свободного места почти нет.
По-быстрому запаял…
…и почти расслабился, не подозревая что ожидает впереди.
Ну хотя нет, конечно подозревая, поэтому заказал плат чуть больше чем нужно 🙂
Чуть-чуть транзисторов
Чуть-чуть резисторов с конденсаторами
Немного сонаров
Немного ардуин
Кстати, припаиваю к ним ножки сам. На фотке их 1500 🙂 Весьма медитативное занятие.
Из софта тут же выкинул PIR. Не по фен-шую это. Если ты хочешь использовать PIR – повесь себе лампочку над лестницей и не морщ мозг. Зачем эти ардуины, ШИМы, БП, ленты, куча проводов?
Увеличил количество градаций яркости, выкинул ресет сонаров (HY-SRF05 не припомню чтобы зависали), добавил чтение датчика освещенности temt6000, вынес всё что можно менять в структуру, причесал сомнительные моменты.
В общем начальник контроллер подключил, более-менее настроил.
Правда устал ковыряться в переменных и перезаливать прошивку, о чем мне непременно и высказал, что мол у белых людей крутилки на плате, кнопки, LCD-экранчики с менюшками а мы как негры правим код. И тут я обратил внимание на маленькую железку, торчащую сбоку Arduino Nano. Называется «разъем miniUSB». А сама ардуина в системе уже видится как виртуальный COM-порт. Бинго! Добавляем сохранение/чтение структуры в EEPROM, делаем изменение параметров через UART:
Ну да, добавил кое-чего своё. Если вдруг кто узнал имена переменных 🙂
А потом расчехляем C# и делаем утилиту настройки контроллера по USB. Подключил шнур, запустил утилиту и меняй всё что можно. Последняя версия выглядит так:
Конечно скетч под это дело был серьезно перелопачен, да и сама идея такого регулирования параметров понравилась знакомым и не очень знакомым людям. Это ведь и с ноутбука можно и с планшета на винде. Контроллер пошел потихоньку продаваться.
Маленькая сморщенная, есть в каждой женщине… Правильно, изюминка.
Так и в плате контроллера есть изюминка, изначально заложенная. Платы стекируемые. То есть объединив 2,3,4 платы последовательно 5pin шлейфиками, можно получить 32,48,64 ШИМ каналов соответственно, управляемые одной Arduino, установленной только в первой плате.
Запилил сдуру даже несколько контроллеров на DIP-компонентах.
На ATmega328P. Да, именно так выглядит 476 резисторов с 952 ножками, которые надо вставить в 952 отверстия, 952 раза припаять и 952 раза откусить кусачками. +784 ножки DIP-кроваток +504 ножки клеммников. Мне кажется именно после этого оттопырились какие-то неизвестные мне доселе чакры и я начал отступать от задуманного :)))))
Параллельно я занимался одним проектом, в котором были использованы сенсорные выключатели. Не в том смысле что готовые типа Livolo или как их там… а самодельные сенсоры на микроконтроллере.
Наткнулся в инете на статью про сенсорную клавиатуру на Attiny2313. Прям готовый проект, схема, программа, всё есть. Решил побаловаться.
Конечно из авторской платы 60*50мм я сделал свою 33*40мм 🙂
Я вообще люблю уменьшать всё что можно уменьшить. Клавиатурка заработала, идея прикольная, вполне рабочая, можно делать неплохие панели управления. И тут подумалось, а чем собственно нажатие пальцем на пластину через диэлектрик отличается от наступания ногой на лестницу? Если, скажем, пластину скрытно установить под ступенькой? Правильно, отличается толщиной этого диэлектрика, причем весьма существенно. Ступенька это вам не пленка на текстолит.
И я сделал свой двухканальный сенсорный драйвер с преферансом и куртизанками… (размер платы 27.64*15.24мм) Он умеет «пробивать» 60мм дерева достаточно уверенно. Бетон сантиметра 3-4.
Да, сразу на завод, я уверен – это бомба. Это не только сенсор для ступенек, но и скрытый выключатель внутри стены, и еще куча применений. 27.64*15.24мм кстати тоже можно уменьшить и сделать 23.83*15.24 убрав клеммники. Дальше уменьшать мешает камень 🙂 Первые удобнее подключать, вторые удобнее прятать. Сложно решить какие лучше – оставил оба варианта. Микроконтроллер PIC18 в TQFP-44 если что… Мой любимый.
Ну так вот… У этого модуля (на фотке их 24шт) есть своя утилита для настройки обычным UART-USB шнурком. C# же уже расчехлен – его уже не остановить. Креатив прёт. Пишем, дебажим, наводим красоту… Переключение режимов работы, изменение/сохранение настроек/параметров, вывод в реальном времени, полный интерактив.
По работе модуля и утилиты настройки снял 3 видео, но звук плохой. Если кто осилит мое бубнение – будет в восторге от этой уличной магии.
Источник