Теперь тайминги
Изначально на ножке стоит лог. единица. Для перевода светодиода в режим получения сигнала необходимо подать логический ноль в течение 5 мс. После этого идут биты данных: для передачи «нулевого» символа необходимо подать логическую единицу, и сразу подать логический ноль. Для передачи «единичного» символа необходимо подать логическую единицу, подождать 3 мкс и подать логический ноль. Интервал между сигналами от 6 до 20 мкс. Временные интервалы можете увидеть на осциллограммах в разных временных развертках.(рис3, рис2, рис1).
После подачи последнего информационного бита на шину необходимо подать логическую единицу. Установленные таким образом цвета будут светиться пока вы не выключите питание или не обновите цветовой рисунок новым пакетом данных.
И последний нюанс — на моей ленте при таком управлении светодиодами, если долго не отправлялись данные, и при попытке начала передачи нового пакета данных первый светодиод принимает 24 бита, дальнейшие биты начинает передавать на следующие светодиоды, но свой цвет не меняет.
Пока с проблемой справился таким образом: в исходном состоянии стоит лог. единица, даю сигнал инициализации (5 мс), 24 бита — пакет данных для первого светодиода, жду 30 мкс, снова даю сигнал инициализации (5 мс), и отправляю информационные биты для всех светодиодов.
Виды транзисторных ключей
- Биполярный;
- Полевой;
- Составной (сборка Дарлингтона).
При подаче высокого логического уровня (digitalWrite(12, HIGH);) через порт вывода на базу транзистора через цепочку коллектор-эмиттер потечет опорное напряжение на нагрузку. Таким образом можно включать и отключать светодиод.
Аналогичным образом работает и полевой транзистор, но поскольку у него вместо «базы» сток, который управляется не током, а напряжением, ограничительный резистор в этой схеме необязателен.
Биполярный вид не позволяет регулировать мощные нагрузки. Ток через него ограничен на уровне 0,1-0,3А.
Полевые транзисторы работают с более мощными нагрузками с током до 2А. Для ещё более мощной нагрузки используют полевые транзисторы Mosfet с током до 9А и напряжением до 60В.
Вместо полевых можно использовать сборку Дарлингтона из биполярных транзисторов на микросхемах ULN2003, ULN2803.
Микросхема ULN2003 и принципиальная схема электронного коммутатора напряжения:
Установка электроники в корпус часов.
Подготовил всю необходимую электронику.Нарезал провода нужной длины. На необходимые проводники установил разъём Dupont. Загрузил прошивку в Arduino Pro Mini. Как это сделать, читайте в статье: «Прошивка Arduino Pro Mini с помощью конвертера PL2303HX». И после чего приступим к пайке.
Схема подключения часов на Arduino Pro Mini и светодиодах WS2812B.
Паяем электронику по схеме.
Вот такой результат получился, осталось уложить все в корпус часов.
Чтобы Arduino Pro Mini и DS-3231 не стучали об корпус, приклеил их на двухсторонний вспененный скотч.
А сейчас немного о прошивке часов.
Код часов на Arduino и светодиодах WS2812B.
Для начала необходимо установить 2 библиотеки: DS3232RTC –для работы с модулем реального времени DS3231 и FastLED – для управления адресными светодиодами WS2812B.
Внимание! При установке библиотеки FastLED будьте внимательны нужно ставить версию, не больше, чем 3.3.2. Если у вас уже установлена более поздняя версия библиотеки, её нужно переустановить.. Установить эти библиотеки можно из файла
Скачать их можно внизу статьи в разделе “”.
Установить эти библиотеки можно из файла. Скачать их можно внизу статьи в разделе “”.
Также установить данные библиотеки можно через менеджер библиотек. Для этого в Arduino IDE переходим в пункт меню Скетч > Подключить библиотеку > Управлять библиотеками …
Подождите, пока диспетчер библиотек загрузит индекс библиотек и обновит список установленных библиотек.
DS3232RTC
FastLED FastLED
Выбираем версию 3.3.2. и устанавливаем. Если у вас была установлена более новая версия, её нужно переустановить что можно сделать через менеджер – библиотека. Аналогичным образом.Выбрать нужную версию и нажать, установить. Ваша версия библиотеки будет переустановлена на ту версию, которую вы выбрали.
Модуль DS-3231 подключён по шине I2C, по этому контакт SDA подключаем к пину А4 Arduino и SCL подключаем к A5.
#define LED_PIN 6 // Пин поключения ленты 6
Контакт данных ленты подключаем к 6 пину Arduino. Тактовые кнопки подключаем к 3 и 4 пинам Arduino.
byte button_1 = 4; // кнопка byte button_2 = 3; // кнопка
Данные настройки можно оставить без изменений, но про них нужно знать.
После чего можно приступить к загрузке скетча в Arduino. Код мы рассмотрели, тут ничего сложного нет, а сейчас приступим к сравнению предыдущей версии часов с текущей.
Временная диаграмма управления модулем WS2812B
Если аппаратные соединения между модулями WS2812B просты – питание (5 В и GND) и данные (выходной сигнал одного модуля идет на вход следующего модуля), – то о протоколе связи этого сказать нельзя. В модулях WS2812B используется однопроводный интерфейс с протоколом NRZ. Пакет данных, содержащих значения RGB, посылается со скоростью 800 Кбит/с.
Рисунок 2. | Представление «0» и «1» в коде NRZ для модуля WS2812B. |
Пакет передается после периода сброса (RET или RES), когда сигнал данных удерживается на низком уровне более 50 мкс. Как видно из Рисунка 2, и «0», и «1» начинаются с «лог. 1», а разница между ними заключается в относительной длительности состояний высокого (TxH) и низкого (TxL) уровней (Таблица 1).
Таблица 1. | Временные соотношения сигналов передачи данных | ||||||||||||||||||||
|
Поскольку цвет каждого RGB светодиода задается с использованием 8 бит, для определения цвета каждого модуля WS2812B требуется 24 бита. На Рисунке 3 показана 24-битная последовательность, адресованная одному модулю WS2812B. Данные посылаются в порядке G-R-B, причем младший значащий бит передается первым.
Рисунок 3. | 24-битный пакет данных для модуля WS2812B. Младший значащий бит зеленого цвета (G7) передается первым. |
Как уже отмечалось, каждому модулю WS2812B требуются 24 бита данных. После того, как первый модуль цепочки примет 24 бита, он будет смотреть, имеются ли еще данные на его входе. Если поступление данных продолжается, он пропускает их через себя на следующий модуль цепочки. Модули делают это до тех пор, пока не прекратится поступление данных, после чего они используют принятые значения для управления RGB светодиодами.
Сфера применения
Адресные светодиоды используются там, где обычные виды линейных светильников оказываются несостоятельны и справиться с поставленной задачей не могут. Основная сфера использования:
- создание полноцветных модулей;
- конструирование световых приборов типа «soft lights»;
- в оформлении участков интерьера, декора фасадов или иных элементов;
- в рекламных конструкциях;
- для создания LED экранов. Которые популярны при оформлении мероприятий шоу-бизнеса или рекламных кампаний.
Адресные светодиоды относительно дороги, что заметно снижает распространение и востребованность таких конструкций. Кроме того, необходимость использования дополнительных устройств (контроллер), загрузки в них программного обеспечения и прочие сложности отпугивают массового пользователя.
Светодиодная лента Ардуино — Подключение
Настройте свою схему следующим образом:
1. Подключите контакты Arduino 9, 6 и 5 к концам затвора трех МОП-транзисторов и подключите резистор 10 кОм в соответствии с заземлением. 2. Подключите ножки источника к заземлению. 3. Подключите дренажные опоры к разъемам Green, Red и Blue на светодиодной ленте. 4
Подключите шину питания к разъему +12v светодиодной полосы (обратите внимание, что на изображении выше провод питания черный, чтобы соответствовать цветам разъемов на моей светодиодной полосе). 5
Подключите заземление Arduino. 6. Подключите стабилизатор питания 12 В в сеть. Большинство светодиодных полосок имеет разъемы Dupont, к которым легко подключиться. Если у вас нет таких, вам понадобится припаять провода к диодной ленте. Не паникуйте, если вы новичок в пайке — это легкая работа. В интернете есть множество руководств по началу работы с паяльником, с которыми можно ознакомиться, если пайка доставляет вам трудности. Для этого проекта мы будем управлять нашей платой Arduino по USB . Вы можете выбрать питание платы с помощью вывода VIN, но перед этим убедитесь, что вы знаете ограничения мощности для своего устройства.
2Управление светодиодами WS2812B (или WS2812)
Если просто подать на светодиодную ленту напряжение, ничего не произойдёт. Светодиоды ждут определённый сигнал, который будет ими управлять. Для управления используется последовательный однопроводный интерфейс. Биты “0” и “1” кодируются импульсами различной длины.
Коды нуля, единицы и сброса светодиода WS2812B
На диаграмме обозначены:
- T0H – время выдержки высокого уровня при передаче кода логического нуля;
- T0L – время выдержки низкого уровня при передаче кода логического нуля;
- T1H – время выдержки высокого уровня при передаче кода логической единицы;
- T1L – время выдержки низкого уровня при передаче кода логической единицы;
- Treset – время сигнала оповещения об окончании управляющей последовательности.
Причём временные допуски заданы весьма жёстко. Так, для WS2812B время T0H = T1L и составляет 0,35 мкс, а время T1H = T0L и составляет 0,9 мкс. Для светодиода WS2812 временные параметры более изощрённые: T0H = 0,35 мкс, T1H = 0,7 мкс, T0L = 0,8 мкс, T1L = 0,6 мкс. Но длительность передачи одного бита и там, и там составляет 1,25 мкс.
Для указания цвета светодиода используется 24-битная схема RGB: под каждый из трёх каналов отводится по 8 бит. И расположены цвета в следующем порядке:
Кодирование цвета в пространстве RGB для светодиода WS2812B
То есть для того чтобы выставить желаемый цвет на первом светодиоде в цепочке, необходимо сформировать 24-битный код и подать его на вход DIN цепочки. Если мы хотим выставить цвет на двух светодиодах, необходимо сформировать уже 48-битный сигнал и так же подать его на вход DIN цепочки. И так далее. Чем больше светодиодов в цепочке – тем более длинную последовательность мы должны подать на её вход. Получив управляющий сигнал, контроллер светодиода берёт из неё первые 24 бита и выставляет тот цвет, который указан в этих 24 битах. Затем он отбрасывает эти 24 бита, а оставшуюся часть последовательности передаёт дальше. Там ситуация повторяется. Когда вся последовательность обработана или когда приходит сигнал сброса Reset, светодиоды запоминают состояние и не меняют его, пока не придёт новый управляющий сигнал.
Осталось дело за малым: передать цепочке светодиодов WS2812B осмысленную управляющую последовательность.
На этот счёт есть такая идея. По сути нам необходимо передавать 24-битные значения цвета в соответствии с положением светодиода в матрице 10 на 10. Аналогичным образом данные хранятся в графических файлах формата *.BMP. Только у них в начале файла ещё присутствует заголовок, который содержит дополнительную информацию: размер изображения, сколько бит приходится на один пиксель, есть ли сжатие и т.д. Вот как в деталях устроен формат BMP:
Внутреннее устройство формата BMP
Можно в любом графическом редакторе (например, Paint .NET) нарисовать изображение размером 10 на 10 пикселей (или такого, какой размерности у вас светодиодная панель), сохранить его в 24-битном формате, а затем взять массив байтов из раздела Image Data Pixel Array с данной схемы, и таким образом мы получим управляющий массив для загрузки светодиодной панели.
Обратите внимание, что в массиве данных о точках изображения BMP содержатся заполнители (Padding), которые дополняют строку байтов до числа, кратного 4. Т.е., например, в нашем случае строка содержит 10 пикселей по 24 бита на цвет (3 байта)
Соответственно, строка будет содержать 3×10=30 байтов. Но 30 не кратно 4. Ближайшее число, кратное 4, это 32. Соответственно, в файле BMP будет на каждую строку изображения на 2 байта заполнителя больше. Байты-заполнители нужно пропускать и не включать в управляющий массив.
Ах, да, чуть не забыл. В файле изображения BMP данные о цвете хранятся в формате R-G-B, а светодиод WS2812 принимает цвет в формате G-R-B. Необходимо поменять местами цвета, иначе все изображения будут совсем не тех цветов, которые мы ожидаем.
Адресная светодиодная лента Ардуино
Адресные ленты отличаются плотностью — от 30 до 144 светодиодов на метр, изготавливаются разном защитном исполнении: IP30, IP65, IP67, IP68. Все варианты исполнения, кроме IP30, могут применяться на улице в диапазоне температур от -25 до +80°C. Еще одна, более надежная лента — WS2813 отличается возможностью передавать сигналы дальше по цепочке даже через сгоревший чип.
Светодиодная лента WS2812B характеристики
- Размер светодиода — 5 х 5 мм
- Частота ШИМ — 400 Гц
- Скорость передачи данных — 800 кГц
- Размер данных — 24 бита на светодиод
- Напряжение питания — 5 Вольт
- Потребление при нулевой яркости — 1 мА на светодиод
- Потребление при максимальной яркости — 60 мА на светодиод
- Цветность: RGB, 256 оттенков на канал, 16 миллионов цветов
Характеристики WS2812B адресной светодиодной ленты
Адресная светодиодная лента ws2812b — это вершина эволюции лент. Каждый светодиод в ленте состоит из обычного RGB светодиода и контроллера с тремя транзисторными выходами. Благодаря этому есть возможность управлять цветом любого светодиода и создавать потрясающие цветовые и световые эффекты. Именно поэтому устройство пользуется популярностью, несмотря на высокую стоимость.
Как проверить адресную ленту без Ардуино
При подключении обращайте внимание на направление стрелок
Многих интересует, как включить адресную ленту без Ардуино и проверить ее на работоспособность. Если просто подключить питание к ленте, то ничего не произойдет — проверить ленту без контроллера нельзя. Если задеть цифровой вход адресной ленты, то могут загореться несколько светодиодов из-за случайных помех, которые воспринимаются контроллерами ws2812b светодиодов, как команды.
Если под рукой нет платы Ардуино, то можно использовать для проверки специальный контроллер. В крайнем случае, просто потрогать цифровой провод, чтобы понять будут гореть светодиоды на ленте или нет. Другого надежного способа проверить работу ws2812b ленты нет, поэтому рассмотрим далее управление и программирование адресной светодиодной ленты на микроконтроллере Ардуино Нано или Уно.
Подключение к Arduino
Прямое подключение светодиодной ленты к Arduino уместно только в случае применения слабых LED-диодов. Для светодиодной ленты между ней и платой необходимо установить дополнительные электротехнические элементы.
Через реле
Подключите реле к плате Arduino через цифровой выход. Управляемая полоса может иметь одно из двух состояний — включения или выключения. Если нужно организовать управление RGB-лентой, понадобятся три реле.
Значение тока, контролируемое данным устройством, ограничивается мощностью катушки. Если мощность слишком мала, элемент не сможет замыкать большие контакты. Для наиболее высоких мощностей примените релейные сборки.
С помощью биполярного транзистора
Если нужно повысить ток или напряжение на выходе, подключите биполярный транзистор. При его выборе ориентируйтесь на ток нагрузки. Ток управления не превышает 20 мА, поэтому добавьте резистор на 1 – 10 кОм для ограничения тока за счет сопротивления.
С помощью полевого транзистора
Вместо биполярных транзисторов для управления светодиодными лентами возьмите полевые (сокращенно — МОП). Разница между ними связана с принципом управления: биполярные изменяют ток, полевые — напряжение на затворе. Благодаря этому небольшой ток затвора управляет большой нагрузкой (десятками ампер).
С помощью плат расширения
Если нет желания использовать реле и транзисторы, можно купить целые блоки — платы расширения. К ним относятся Wi-Fi, Bluetooth, эквалайзер, драйвер и т. д., которые необходимы для управления нагрузкой разных мощностей и напряжений. Это могут быть как одноканальные элементы, которые подойдут монохромным лентам, так и многоканальные (для управления цветными RGB-лентами).
Принцип работы транзистора для плавного управления светодиодной лентой
Транзистор работает как водопроводный кран, только для электронов. Чем выше напряжение, подаваемое на базу биполярного транзистора либо сток полевого, тем меньше сопротивление в цепочке эмиттер-коллектор, тем выше ток, проходящий через нагрузку.
Подключив транзистор к аналоговому порту Ардуино, присваиваем ему значение от 0 до 255, изменяем напряжение, подаваемое на коллектор либо сток от 0 до 5В. Через цепочку коллектор-эмиттер будет проходить от 0 до 100% опорного напряжения нагрузки.
Для управления светодиодной лентой arduino необходимо подобрать транзистор подходящей мощности. Рабочий ток для питания метра светодиодов 300-500мА, для этих целей подойдет силовой биполярный транзистор. Для большей длины потребуется полевой транзистор.
Схема подключения LED ленты к ардуино:
Это интересно: Выбираем потолочные люстры с вентилятором
Настройка приложения Blynk
Blynk – это приложение, которое может работать на мобильных операционных системах Android и IOS и позволяет с помощью смартфона управлять различными устройствами, поддерживающими концепцию интернета вещей (Internet of Things, IoT). При использовании данного приложения нам сначала необходимо создать в нем графический интерфейс пользователя (Graphical User Interface, GUI). Из этого графического интерфейса данные будет передаваться в облако Blynk. На приемной стороне мы имеет плату Arduino, подключенную к компьютеру по USB кабелю. Таким образом, компьютер запрашивает эти данные из облака Blynk и потом эти данные передаются в плату Arduino для дальнейшей обработки.
Создание нового проекта
Послу успешной установки и регистрации в приложении Blynk вы увидите на его главной странице кнопку “New Project” (новый проект). Нажмите ее и у вас в приложении откроется новое окно, в котором необходимо будет ввести такие параметры проекта как имя, плату и тип соединения. Для нашего проекта выберите плату “Arduino UNO”, тип соединения “USB” и нажмите на кнопку “Create” (создать).
После успешного создания проекта вам на электронную почту (с которой вы регистрировались в приложении) придет ваш идентификатор подлинности (Authenticate ID). Сохраните его – он нам пригодится в дальнейшем.
Создание графического интерфейса пользователя (GUI)
Откройте проект в приложении Blynk, в нем нажмите на значок “+” – после этого вы получите доступ к виджетам (графическим элементам), которые вы можете использовать в своем проекте. В нашем случае нам будет нужен RGB Color Picker который назван как “zeRGBa”, как показано на следующем рисунке.
Установка виджета
После перетаскивания (dragging) виджета в наш проект нам необходимо установить его параметры, которые будет необходимы для передачи значений цветов плате Arduino UNO.
Нажмите на ZeRGBa, после чего откроется экран с его настройками (ZeRGBa setting). Установите в нем Output option (настройка выхода) в положение “Merge”, а контакт “V2” установите в положение, показанное на следующем рисунке:
Ардуино и адресная светодиодная лента
Этот проект – простой способ начать работу, но идеи, которые он охватывает, могут быть расширены для действительно эффектного освещения. С помощью всего лишь нескольких компонентов вы можете создать свой собственный восход солнца. Если у вас есть стартовый комплект с Arduino, вы можете использовать любую кнопку или датчик для запуска светодиодов при входе в комнату, например:
Светодиодная лента Ардуино – Яркие идеи.
Эти ленты требуют меньшего количества компонентов для запуска, и есть некоторая свобода в отношении именно того, какие значения компонентов вы можете использовать. Конденсатор в этой цепи гарантирует, что светодиоды 5v получают постоянный источник питания. Резистор становится гарантом того, что сигнал данных, полученный от Arduino, не загружен всяческими помехами.
Вам понадобится:
● Светодиодная лента 5v WS2811/12/12B; Все три модели имеют встроенные микросхемы и работают одинаково.
● 1 x Arduino Uno или аналогичная совместимая плата;
● 1 x резистор 220-440 Ом;
● 1 x конденсатор microFarad 100-1000 (все, что между этими двумя значениями, отлично подойдет);
● Макет и монтажные провода;
● Блок питания 5 В.
Настройте схему, как показано на рисунке:
Обратите внимание, что конденсатор должен быть правильной ориентации. Вы можете понять, какая сторона прикрепляется к рейке земля, ища знак минуса (-) на корпусе конденсатора
На этот раз мы задействуем Arduino, используя источник питания 5 В. Это позволит устройству работать автономно
Вы можете понять, какая сторона прикрепляется к рейке земля, ища знак минуса (-) на корпусе конденсатора. На этот раз мы задействуем Arduino, используя источник питания 5 В. Это позволит устройству работать автономно.
Во-первых, убедитесь, что ваша плата может работать с 5 В, прежде чем присоединить ее к источнику питания. Почти все платы работают на 5V через USB-порт, но штыри питания на некоторых могут иногда пропускать регуляторы напряжения и превращать их в поджаренные тосты.
Кроме того, рекомендуется убедиться, что несколько отдельных источников питания не подключены к Arduino – отсоединяйте USB-кабель всякий раз, когда используете внешний источник питания.
Светодиодная лента Ардуино – Бегущий огонь или световая волна
Чтобы безопасно запрограммировать нашу плату, отсоедините линию VIN от линии электропередач. Вы подключите ее позже обратно.
Присоедините свой Arduino к компьютеру и откройте Arduino IDE. Убедитесь, что у вас правильный номер платы и порта, выбранный в меню «Сервис»> «Сервис и инструменты»> «Порт».
Мы будем использовать библиотеку FastLED для тестирования нашей установки. Вы можете добавить библиотеку, нажав на Эскиз> Включить библиотеку> Управление библиотеками и поиск FastLED. Нажмите «Установить», и библиотека будет добавлена в среду IDE.
В разделе «Файл»> «Примеры»> «FastLED» выберите эскиз DemoReel100. В этом эскизе задействованы различные эффекты, которые можно сделать с помощью светодиодных полос WS2812, и невероятно легко настроить.
Все, что вам нужно изменить, — это переменная DATA_PIN, чтобы она соответствовала значку 13 и переменной NUM_LEDS для определения количества светодиодов, находящихся в полосе, которую вы используете. В этом случае я применяю только небольшую линию из 10 светодиодов, вырезанных из более длинной полосы.
Используйте большее количество для красивейшего светового шоу!