ФОРУМ КУПИТЬ

Последние статьи

ВСЕ СТАТЬИ

Управление светодиодной RGB-лентой с помощью MegaD-328

17/01/2016 16:57:35

В последнее время светодиодные ленты RGB пользуются большой популярностью, так как они могут не только излучать свет, подобно обычным лампочкам, но и в широком диапазоне менять яркость и температуру свечения, то есть менять свой цвет. Сетчатка человеческого глаза устроена таким образом, что для формирования любого цветового оттенка требуется всего три канала: красный, синий и зеленый. Именно поэтому в стандартной RGB-ленте только три типа светодиодов (red, green, blue), хотя она может генерировать и желто-персиковый и кварцево-серый и медно-коричневый и даже (нет, не сербурмалиновый) перламутрово-розовый.

Однако одной только RGB-ленты недостаточно, чтобы создать эффектную подсветку под настроение. Требуется некий драйвер, контроллер, то есть "железка", которая будет управлять лентой. Сейчас на рынке представлено большое количество решений, позволяющих управлять цветом с помощью пульта. Но нас такие решения не устроят. Нам необходима возможность управления RGB-лентой с помощью любого смартфона или планшета. Нам необходимо, чтобы лентой мог управлять сервер, в котором заложены определенные алгоритмы. Ведь с помощью RGB-ленты можно зимним утром автоматически создавать эффект рассвета даже в суровых приполярных районах, к которым относится добрая половина России, а вечером после напряженного трудового дня успокаивать нервы цветом морской волны.

Но ведь у нас есть замечательное устройство MegaD-328, которое как раз и создавалось для сопряжения с сервером различного оборудования. По счастью MegaD-328 снабжен тремя независимыми ШИМ-каналами, которые мы и будем использовать для управления светодиодной RGB-лентой. Для подключения ленты к контроллеру MegaD-328 я воспользовался идеей пользователя Юрия Яковлева с сайта Geektimes. В статье, которую написал Юрий все расписано очень четко и точно. Опишу лишь отдельные нюансы подключения ленты "Мегадевайсу".

Итак, нам понадобятся:

1. MegaD-328-IN Kit, состоящий из контроллера MegaD-328 и исполнительного модуля MegaD-14-IN
2. Модуль управления двигателем на базе L298N
3. Светодиодная RGB-лента (с потребляемой мощностью до 2А на канал - это длина до 5 метров)

Модуль L298N

Модуль управления двигателем в данном случае является простым и недорогим готовым средством, позволяющим связать светодиодную ленту с ШИМ-каналами контроллера MegaD-328. Все, что необходимо, это правильная коммутация проводов. ШИМ-каналы P10, P12, P13 подключаются ко входам IN1, IN2, IN3 модуля L298N, а выходы OUT1-OUT3 к светодиодной ленте. Ну и питание. Несмотря на обилие проводов, подключение элементарное.

Схема подключения RGB-светодиодной ленты к MegaD-328

Положение конфигурационных джамперов на модуле MegaD-14-IN нижнее. Напомню, что подключать L298N нужно к портам P10, P12, P13. Именно эти порты могут быть сконфигурированы как порты с функцией ШИМ (PWM). Из инструмента потребуется только отвертка. Внимание! На схеме (для простоты понимания) питание берется с клеммы +12В исполнительного блока MegaD-14-IN. Но лучше подключать питание непосредственно к блоку питания. Кроме того, этот БП должен быть расчитан на потребляемый светодиодной лентой ток! Так для светодиодной ленты с потребяемой мощностью 72Вт нужен блок питания, например, DR-100-12. Кроме того, лента мощностью 72Вт (или 2А на канал) - это максимальная возможная нагрузка на драйвер L298N.

Теперь необходимо настроить ШИМ порты P10, P12, P13 в контроллере MegaD-328. Для этого тип порта в Web-интерфейсе нужно выбрать "OUT", а режим "PWM". Так как значение 255 соответствует не максимальной, а минимальной яркости, то в поле Default (значение по умолчанию) необходимо прописать 255.

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

http://192.168.0.14/sec/?cmd=10:100;12:250;13:100

Таким низкоуровневым способом управлять цветом неудобно, поэтому можно написать простейшую программу для визуального управления лентой с любого мобильного устройства. Сделать это совсем нетрудно. Для функции выбора цвета (color picker) я выбрал легкий и простой скрипт jscolor. Основной код программы выглядит так.

<scripT type="text/javascript" src="js2/jquery-1.11.3.min.js"></script>
<script src="/js2/jscolor.min.js"></script>
Цвет: <input class="jscolor {onFineChange:'update(this)'}" value="e1e1e1">
<script>
function update(jscolor) { $.get("mod_rgb_led_control_ajax.php?color=" + jscolor, function(data){}); }
</script>

Здорово! То, что надо. Теперь нужно написать вспомогательный скрипт, который вызывается с помощью технологии Ajax при изменении цвета пользователем и отправляет необходимые команды контроллеру MegaD-328.
Имя скрипта, прописанное в коде выше, mod_rgb_led_control_ajax.php

<?
define("R", "10");
define("G", "12");
define("B", "13");
define("MD", "http://192.168.0.14/sec/?");

$color = $_GET['color'];

$r = 255 - hexdec($color[0].$color[1]);
$g = 255 - hexdec($color[2].$color[3]);
$b = 255 - hexdec($color[4].$color[5]);

file_get_contents(MD."cmd=".R.":$r;".G.":$g;".B.":$b");
?>

Вот и все! Остается только продемонстрировать, как это работает...




Автор: Andrey_B
Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.



Добавить комментарий:

(необязательно, не отображается на сайте)


Сортировка комментариев: Последние сверху | Первые сверху

2018-10-31 11:16:27 | Andrey_B
Андрей, нет, таким запросом нельзя.


2018-10-28 22:57:00 | Андрей
Можно ли с этим запросом использовать опцию Smooth т.е. /192.168.0.14/sec/?cmd=10:100;12:250;13:100&cnt=2


2018-09-24 01:51:32 | Андрей
А можно пример как сразу 2 палитры на одной страницы подружить? Чтоб одна на свой скрипт отправляла цвет, а другая на свой.


2018-08-23 21:22:23 | Андрей
Шел изнурительный третий час, и тут большевики поняли, что земли народные нужно объединять (GDN от БП и МегаД).


2018-08-22 13:17:38 | Andrey_B
Андрей, не могу сказать наверняка. Нужно пробовать. Возможно, будет работать. Что касается драйверов, то есть одноканальные D4184. Они мощнее.


2018-08-21 18:39:04 | Андрей
Можно ли вынести этот силовой блок к ленте на 10-20 метров, ШИМ сигнал не затухнет?
Есть ли похожие блоки для повышенной нагрузки?


2018-04-22 15:52:57 | Andrey_B
Сервер может все, что угодно, если под визуализацией вы понимаете его Web-интерфейс.


2018-04-22 14:55:04 | Ruslan
Сервер конечно может все запомнить. И в нужный момент "вспомнить". Для этого, как правило, в системах умного дома СУБД и применяется.


2018-04-22 14:44:10 | Коля
@Andrey_B
подскажите на визуализации например выбрали цвет светло-зеленый, сервер может его запомнить. чтоб при включении выключателем загорался тот который выбрал


2018-03-05 12:50:19 | Andrey_B
Bonefolder, такой модуль сейчас разрабатывается.


2018-03-04 23:26:57 | Bonefolder
@Коля, у меня работает с кабелем Cat5 на 12м. Причём, на 2х других «свитках» висит датчик атмосферного давления.
@Andrey_B, Андрей не думали сделать нечто подобное L298N, для установки на Din рейку? Данный девайс получается запихнуть только в корпус на 3 места. Несколько роскошно(


2018-02-20 20:19:45 | Коля
Вопрос знатокам: если мегу и l298 поставить в электрощите, а до ленты 7 метров, будет ли работать и каким сечением провода вести?


2017-11-10 10:45:35 | Andrey_B
Михаил, если используется контроллер MegaD-2561, то для управления цветом и яркостью можно также использовать порты P11, P25, P27, P28. То есть в этом контроллере 7 каналов с функцией ШИМ.
Другие порты также можно использовать, но только в режиме включено/выключено.


2017-11-09 20:36:16 | Михаил
На 14 in для управления лентой можно использовать только выходы P10, P12, P13? или другие тоже?


2017-06-24 16:54:58 | Andrey_B
Николай, в статье подробно описано, что порты, сконфигурированные как PWM, выдают ШИМ-сигнал. Напряжение, с которым работает микроконтроллер 3,3В.


2017-06-24 14:29:05 | Николай
Просто я не понимать что тогда выдают каналы P10, P12, P13, 0-5В?


2017-06-23 17:43:22 | Andrey_B
Николай, на портах нет никаких +12В. На схеме же обозначено, что 12В берется с левой нижней клеммы исполнительного модуля (фактически от блока питания).


2017-06-23 14:29:23 | Николай
Не совсем понял откуда на портах P10, P12, P13 берется +12В, от них можно регулировать например ленты на 24В? или ~220В?


2017-05-19 11:05:30 | Andrey_B
Vadim, подключить параллельно несколько L298N можно.


2017-05-18 17:15:02 | Vadim
Андрей, добрый день!
Можно ли параллельно подключить на одну группу ШИМ портов (P10,P12,P13) несколько модулей управления двигателем на базе L298N (для одновременного управления несколькими лентами по 5 метров)?
Спасибо.


2017-01-05 14:34:37 | Andrey_B
Сергей, подключать параллельно ленты можно. Но если говорить о 5 метровой RGB ленте мощностью 72Вт, то она максимально нагружает микросхему L298N (2А на канал) и более мощную нагрузку на нее вешать не стоит.


2017-01-04 21:01:16 | Сергей Поздняков
Андрей, правильно ли я понимаю, что если есть потребность подключить более 5м ленты, то делать это нужно параллельно, и можно подключить к одному модулю L298N параллельно несколько лент по 5 метров без угрозы работоспособности модуля?


2016-06-29 01:24:58 | Николай Иванович Никонов
Присоединяюсь к Виталию: Уважаемый автор! Пожалуйста опишите немного подробнее момент, как и куда и в каком виде поместить скрипты. МегаД с драйвером и сервер имеется, планшет имеется, а вот как повторить вышеописанный метод управления светодиодной лентой?


2016-06-21 12:07:12 | Andrey_B
Владимир, вроде бы правильно. 5В отдельно нужно.


2016-06-19 14:44:14 | Владимир
Подключаю ленту на 24В. Джампер снял. На ногу 12В L298N подал +24В на GND -24В . Это правильно? И еще...Нужно-ли при таком включении отдельно подавать 5В?


2016-06-13 14:47:13 | Andrey_B
Александр, можно, конечно. Ведь исполнительный модуль - это всего лишь "обвязка" контроллера. Но при это вы должны четко понимать, что, куда и как вы подключаете.


2016-06-13 06:23:09 | Виталий
Андрей, не могли бы вы немного подробнее изложить: куда поместить и как запускать эти скрипты? Спасибо!


2016-06-13 04:10:34 | Александр
После более детального изучения этого сайта, тут же поправлюсь с оговоркой на мой предыдущий пост ниже. Не "контроллера" а "интерфейсного модуля".
Т. е. можно ли организовать управление без участия исполнительного, а напрямую подключиться к L298N от интерфейсного модуля?


2016-06-13 03:02:39 | Александр
А диммирование на стороне контроллера организовать можно?


2016-04-25 19:35:11 | Andrey_B
Владимир, совместимо, но только на плате драйвера L298N нужно снять джампер. Подробнее посмотрите в даташите на него.


2016-04-25 12:02:06 | Владимир
А это решение совместимо с 24вольтовыми лентами? (конечно при использовании внешнего блока питания на 24В)


2016-03-07 01:01:28 | Кирилл
Хотел поставить этот скрипт на демо страничку во вкладку "свет",работает пока не перейдешь на другую вкладку, при возврате на вкладку "свет" поле input где цвет вводится перестает запускать скрипт при кликанье на него. Как и куда надо вставлять этот код чтобы он работал (где "Этаж1")?


2016-02-19 12:56:32 | Prokol
Данная строка file_get_contents(MD."cmd=".R.":$r;".G.":$g;".B.":$b"); выдавала в логах ошибку и не работало.

Вот такой метод у меня заработал

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, MD."cmd=".R.":$r;".G.":$g;".B.":$b");
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
$data = curl_exec($ch);
curl_close($ch);

На форумах пишут он работает быстрее, чем выше описанный.


2016-02-10 11:47:02 | Andrey_B
Артем, на тех расстояниях, которые есть в квартире, 12В не просядет. Можно "на месте" поставить только контроллер MegaD-328 и прицепиться точно также к нужным портам.


2016-02-10 01:27:29 | Аpтeм
Идея умного дома как раз и возникла у меня с желания иметь такой будильник. Но тут сразу три порта занято и пока 12 В передашь в другой конец квартиры, напряжение просядет. Так вот есть ли какой нибудь способ работу проводить на местности просто посылая туда сигнал управления (например код цвета)


2016-01-17 23:45:19 | andvas
Отличная идея , будем повторять дома!