Arduino bluetooth: управляем светодиодной лентой

Разработка Android-контроллера для управления RGB светодиодной лентой. Часть 1

Журнал РАДИОЛОЦМАН, январь 2014

Вадим Колесник, Тирасполь

Android Bluetooth RGB controller – простое аппаратно-программное решение для управления RGB светодиодной лентой или RGB светодиодами посредством Android-устройства с поддержкой Bluetooth

Статья носит ознакомительный характер, и в ней я постараюсь максимально подробно описать процесс создания простой системы, с помощью которой можно удаленно управлять RGB светодиодной лентой (или RGB светодиодами) посредством любого Android-устройства с интегрированным Bluetooth-модулем (Рисунок 1). Материал будет полезен не только начинающим радиолюбителям, осваивающим микроконтроллеры, но и профессионалам, интересующимся простым способом реализации беспроводного обмена данными Android-устройств с микроконтроллерными системами.

Рисунок 1. Внешний вид системы управления RGB светодиодной лентой по Bluetooth интерфейсу.

Общие сведения, состав аппаратной части и принципиальная схема.

Отличительной особенностью данного проекта является простота аппаратной и программой части системы, в состав которой входят Bluetooth-контроллер, портативное Android-устройство с установленным приложением (смартфон, планшет), выполняющее функции пульта ДУ, и источник питания 12 В/3 А (Рисунок 2). В статье мы рассмотрим в некотором роде демонстрационную версию системы, раскрывающей основные ключевые моменты аппаратной и программной реализации.

Bluetooth-контроллер представляет собой компактное устройство, состоящее из AVR микроконтроллера (МК) Atmel ATmega8, миниатюрного Bluetooth-модуля HC-05 [4], силовых N-канальных MOSFET ключей, интегральных регуляторов напряжения, светодиодов статуса и нескольких пассивных элементов.

Рисунок 2. Блок-схема системы управления RGB светодиодной лентой по Bluetooth интерфейсу.

Программа микроконтроллера очень проста и разработана в интегрированной среде разработки AVR Studio 4 на языке Си.

Программное приложение для Android-устройства разработано в несложном и легким в освоении, но при этом достаточно функциональном графическом редакторе MIT App Inventor Beta.

Основные характеристики системы:

  • аппаратная часть (Bluetooth-контроллер):
    • доступный, дешевый и простой в применении Bluetooth-модуль HC-05;
    • реализованные на МК 3 канала 8-разрядной ШИМ для управления светодиодами;
    • в качестве силовых ключей используются N-канальные MOSFET в корпусе для поверхностного монтажа;
    • автономная работа – не требуется постоянная связь по Bluetooth с Android-устройством;
    • дальность связи 10-15 м;
    • напряжение питания 12 В;
    • ток потребления Bluetooth-контроллера (без светодиодной ленты):
      • Bluetooth-модуль в режиме поиска: 55 … 60 мА;
      • при установленном соединении с Android-устройством и отсутствии команд: 22 … 27 мА;
      • прием и обработка команды: 38 … 42 мА;
    • два светодиода для индикации режима работы Bluetooth-контроллера;
    • возможность реализации 10-разрядного ШИМ управления;
    • возможность реализации управления различными световыми эффектами;
  • простое приложение для Android-устройства:
    • понятный и достаточно информативный графический пользовательский интерфейс;
    • отображение МАС адреса подключенного Bluetooth-контроллера;
    • возможность ручной установки MAC-адреса;
    • сервисные сообщения об ошибках соединения с Bluetooth-контроллером;
    • кнопки быстрого выбора цвета свечения;
    • возможность ручной установки цветовой гаммы;
    • информирование о состоянии подключения;
    • возможность наращивания функционала (потребуется модернизация программы микроконтроллера).

Изначально для разработки и отладки системы автор использовал МК серии ATmega128, установленный на отладочную плату собственной разработки. Принципиальная схема доступна для скачивания в дневнике автора на форуме сайта rlocman.ru [3].

Такой подход был обусловлен большим количеством свободных портов МК, достаточным объемом памяти и, самое главное, наличием в микроконтроллере отладочного интерфейса JTAG.

При необходимости автор предоставит принципиальную схему и прошивку для этого МК.

Принципиальная схема Bluetooth-контроллера на микроконтроллере ATmega8 изображена на Рисунке 3, список примененных электронных компонентов приведен в Таблице 1. Схема и печатная плата разрабатывались в системе Proteus 7.7 SP2 [1]. Минимальное количество компонентов позволяет собрать схему на макетной плате или навесным монтажом.

Таблица 1. Список использованных компонентов
Обозначениев схеме Номинал Примечание
R1, R2 68 Ом Корпус SMD 1206
R3, R4, R5 10 кОм Корпус SMD 1206
R6, R7, R8,R9, R10 220 Ом Корпус SMD 1206
С1 1000 мкФ 16 В
С2 0.47 мкФ
С3, C4, C5 100 мкФ 10 В Корпус SMD
U1 LM7805 Возможно применениеLM78L05
U2 UTC1117Y33 Или аналогв корпусе SOT223-3
DD1 ATmega8 Корпус PDIP28
Q1-Q3 APM3055L Или аналогв корпусе TO-252 
D1, D2 светодиод (3 мм)
X1 кварцевый резонатор11.0592 МГц Опционально
Рисунок 3. Принципиальная схема Bluetooth-контроллера RGBсветодиодной ленты.

Bluetooth-модуль HC-05 подключается к МК ATmega8 посредством интерфейса UART (порты PD0/RXD и PD1/RXD). О текущем режиме работы Bluetooth-модуля (поиск, установление соединения, режим AT команд) пользователя информируют два светодиода D1 и D2.

Стоит отметить, что в продаже доступны несколько вариантов Bluetooth-модулей, отличающихся конструктивным исполнением (Рисунок 4) и прошивкой. Чаще всего встречаются модули установленные на переходную плату с собственным регулятором напряжения, светодиодами статуса и выводами для подключения к МК.

В авторском варианте схемы и печатной платы используется Bluetooth-модуль без переходной платы, который подключается к основной плате Bluetooth-контроллера с помощью гибкого шлейфа  (Рисунок 5). Другими словами, для такого решения потребуются установка микросхемы регулятора напряжения 3.

3 В, светодиодов статуса и разъема для подключения к МК.

Рисунок 4. Внешний вид Bluetooth-модуля HC-05, установленного на переходную плату с регулятором напряжения и разъемом для подключения.
Рисунок 5. Bluetooth-модуль HC-05 в авторском варианте подключается к плате с помощью гибкого шлейфа.

На принципиальной схеме участок с регулятором напряжения 3.3 В на микросхеме серии UTC1117Y33 (или аналогичной, например, CYT8117T33) отмечен надписью «Опционально» именно из-за этих конструктивных особенностей Bluetooth-модулей.

Если вы используете модуль с переходной платой, то указанный участок исключается из схемы, изменяется разводка разъема подключения и, соответственно, немного видоизменяется печатная плата [2].

Распайка гибкого шлейфа для подключения Buetooth-модуля к разъему на печатной плате изображена на Рисунке 6.

Рисунок 6. Схема распайки Bluetooth-модуля и его подключение к разъему на печатной плате.

Несмотря на то, что Bluetooth-модуль имеет напряжения питания 3.3 В, его цифровые входы/выходы являются 5 В совместимыми и могут подключаться к МК с напряжением питания 5 В без схем преобразования логических уровней.

Микросхема стабилизатора 5 В серии LM7805 используется для питания МК, а также в качестве предварительного понижающего регулятора напряжения для микросхемы стабилизатора 3.3 В (максимальное входное напряжение для этих микросхем не должно превышать 9 В).

Однако возможно применение микросхемы серии LM78L05, ввиду того, что потребляемый МК и Bluetooth-модулем ток не превышает 65 мА. (Максимальный выходной ток LM78L05 составляет 100 мА).

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

После программной инициализации периферии МК выходами 8-разрядных аппаратных блоков ШИМ назначаются порты PB1 (OC1A), PB2 (OC1B), PB3 (ОС2), к которым подключаются силовые N-канальные MOSFET ключи APM3055L с соответствующими резисторами в цепях затворов и между истоком и затвором.

При работе с RGB светодиодной лентой длиной 5 м (светодиоды типоразмера 5050) нагрева силовых ключей не происходит. Также возможно применение любых мощных MOSFET в корпусе для поверхностного монтажа, например, транзисторов серии K3918.

В процессе тестирования схемы в трех каналах ШИМ автор использовал указанные силовые ключи (один APM3055L и два K3918, что бросается в глаза на Рисунке 9), и разницы в установке цветовой гаммы и яркости не заметил.

Тактирование МК осуществляется от внутреннего осциллятора 8 МГц, однако на схеме указан опциональный кварцевый резонатор 11.0592 МГц. Кварцевый резонатор позволит повысить надежность обмена данными по UART. Испытания системы при тактовой частоте МК 8 МГц и скорости работы UART 9600 бит/с показали, что обмен данными ведется достаточно надежно, и сбоев обнаружено не было.

Также на схеме изображена перемычка (джампер) J1, предназначеная для перевода Bluetooth-модуля в режим AT команд с целью его конфигурирования и определения текущих параметров.

Все предлагаемые варианты печатных плат являются односторонними (Рисунки 7, 8). Коннектор для внутрисхемного программирования в авторских вариантах схем отсутствует, что связано с желанием минимизировать размеры платы, поэтому микроконтроллер устанавливается в DIP колодку, чтобы его можно было его извлечь для программирования.

Рисунок 7. Вид печатной платы для схемы, изображенной на Рисунке 3.
Рисунок 8. Вид печатной платы при использовании микросхемы регулятора напряжения 78L05 и варианта Bluetooth-модуля напереходной плате.

Внешний вид готовой платы со стороны установки smd компонентов изображен на Рисунке 9. Как видно, печатная плата изготавливалась в домашних условиях по ЛУТ-технологии без лужения печатных проводников.

Рисунок 9. Вид авторского варианта печатной платыс установленными компонентами.

Ссылки

Продолжение

Источник: https://www.rlocman.ru/shem/schematics.html?di=151052

Управление RGB лентой с помощью Arduino и драйвера L298N

Здравствуйте Хабр-сообщество.

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

К таким лентам можно купить источник питания, диммер, диммер с пультом управления. Это позволит вам использовать светодиодную ленту для посветки. Однако если вы захотите запи запрограммировать алгоритм изменения цвета, или сделать управление из компьютера — то тут начинается разочарование. Вы в продаже не найдете диммеров с управлением через COM-порт или Ethernet.

Я решил эту проблему с помощью Arduino, и хочу поделиться своим вариантом решения с Вами.

Добро пожаловать под кат.

Теоретическая часть

Для реализации плавного изменения свечения всех 3 каналов нам потребуется сделать собственный димер. Сделать его очень просто, для этого требуется взять силовые ключи и управлять ими с помощью ШИМ сигнала. Также наш диммер должен быть программируемым и/или управляемым из вне.

В качестве мозгов идеально подходит Arduino. В её программу можно записать любой алгоритм изменения цветов, а также её можно управлять как с помощью модулей Arduino, так и удаленно по Ethernet, Ик-порту, Bluetooth, используя соответствующие модули.

Для реализации задуманного я выбрал Arduino Leonardo. Она одна из самых дешевых плат Arduino, и она имеет много выводов с поддержкой ШИМ.

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

Однако есть способ проще! Нас выручит модуль Arduino для управления двигателями. Этот модуль имеет все необходимое для нам — на нем установлены мощные ключи на 12В.

Пример такого модуля является «L298N Module Dual H Bridge Stepper Motor Driver Board Modules for Arduino Smart Car FZ0407». Такой модуль основан на микросхеме L298N, которая представляет из себя 2 моста. Однако мостовое включение полезно для двигателя (от этого он может менять направление вращения), а в случае RGB ленты, оно бесполезное.

Мы будем использовать не весь функционал этой микросхемы, а только 3 её нижних ключа, подключив ленту как показано на рисунке.

Практическая часть часть

Для реализации потребуется Arduino Leonardo, Модуль управления двигателями L298N, Источник 12В (для запитки ленты), сама RGB лента, соединительные провода.
Для удобства подключения я еще использовал Fundruino IO Expansion, но он никакой функциональной нагрузки не несет.

Схема подключения показана на рисунке.

Хочу дополнительно описать питание системы. В данной схеме питание подается на модуль управления двигателями, в нем стоит понижающий источник питания на 5В, и эти 5В я подаю на вход Vin питания Arduino.

Если разорвать эту связь (естественно земли оставив соединенными), то запитывать Arduino и силовые ключи можно от разных источников питания.

Это может быть полезно когда к Arduino много всего подключено, и источник в модуле управления двигателями не справляется (выключается по перегреву).

Управляется RGB лента с помощью команд analogWrite, которая настраивает выход для формирования ШИМ сигнала.

Исходный код программы для arduino:

Читайте также:  Подключаем микроконтроллер arduino к шине bus can для сети

#define GRBLED_PIN_R 9 // пин для канала R
#define GRBLED_PIN_G 10 // пин для канала G
#define GRBLED_PIN_B 11 // пин для канала B int rgbled_r=0, rgbled_g=0, rgbled_b=0; void setup(){ //enable serial datada print Serial.begin(9600); Serial.println(“RBG LED v 0.1”); // RGBLED pinMode(GRBLED_PIN_R, OUTPUT); pinMode(GRBLED_PIN_G, OUTPUT); pinMode(GRBLED_PIN_B, OUTPUT);
} void loop(){ // change color rgbled_r = (rgbled_r+1)%1024; rgbled_g = (rgbled_g+2)%1024; rgbled_b = (rgbled_b+3)%1024; // Output Z1_output_rgbled(); delay(1);
} void Z1_output_rgbled() { analogWrite(GRBLED_PIN_R, rgbled_r); analogWrite(GRBLED_PIN_G, rgbled_g); analogWrite(GRBLED_PIN_B, rgbled_b);
}

На видео можно увидеть как это работает:

Экономическая часть

L298N Module Dual H Bridge Stepper Motor Driver Board Modules for Arduino Smart Car FZ0407 $ 5.31 1
Leonardo R3 Development Board for Arduino Compatiblae + USB Cable Wire FZ0437 $ 10.00 1
5050 LED Strip RGB and single color 5M DC12V/24V 60leds/m Waterproof Flexible Car auto Strip Light saving light $ 12.38 1
Retail AC85~265V to DC 12V/6A power supply adaptor transformer switching for led light $ 9.98 1

Итого $37,65 = 1 300 руб

Вместо заключения

Для тех, кто захочет повторить описанную здесь схему — хочу заметить, что драйвер L298N рассчитан на ток 2-3А, а RGB светодиодные ленты, на светодиодах 5050 с плотностью 60 светодиодов на метр, продающиеся по 5 метров, могут потреблять до 6А. По этому если вы хотите использовать длинные и яркие ленты — возможно потребуется схему модернизировать (подключать ленту по сегментам, или взять более мощный драйвер) или использовать ленты по проще.

Источник: http://www.pvsm.ru/arduino/61033

Управление светодиодной лентой через Arduino — схемы плавного включения и выключения освещения

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

Процессор ATmega управляет программой-скетчем, контролируя многочисленные дискретные выводы, аналоговые и цифровые входы/выходы, ШИМ-контроллеры.

Принцип действия Arduino

«Сердце» платы Arduino — микроконтроллер, к которому подключаются датчики, управляющие элементы. Заданная программа (называется «скетч») позволяет управлять электродвигателями, светодиодами в лентах и других осветительных приборах, даже используется для контроля над другой платой Arduino через протокол SPI. Контроль осуществляется при помощи пульта ДУ, Bluetooth-модуля или сети Wi-Fi.

Для программирования используется открытый исходный код на ПК. Для загрузки программ управления можно пользоваться USB-коннектором.

Принцип управления нагрузкой через Arduino

На плате Arduino есть порты двух типов — цифровые и аналоговые. Первый имеет два состояния — «0» и «1» (логические ноль и единица). При подключении светодиода к плате в одном состоянии он будет светиться, в другом — нет.

При прямом подключении через порт используйте слабые светодиоды, добавляя к ним ограничительный резистор. Более мощная нагрузка выведет его из строя. Для организации управления светодиодной лентой и другим осветительным прибором примените электронный ключ (транзистор).

Подключение к Arduino

Прямое подключение светодиодной ленты к Arduino уместно только в случае применения слабых LED-диодов. Для светодиодной ленты между ней и платой необходимо установить дополнительные электротехнические элементы.

Через реле

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

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

С помощью биполярного транзистора

Если нужно повысить ток или напряжение на выходе, подключите биполярный транзистор. При его выборе ориентируйтесь на ток нагрузки. Ток управления не превышает 20 мА, поэтому добавьте резистор на 1 – 10 кОм для ограничения тока за счет сопротивления.

С помощью полевого транзистора

Вместо биполярных транзисторов для управления светодиодными лентами возьмите полевые (сокращенно — МОП). Разница между ними связана с принципом управления: биполярные изменяют ток, полевые — напряжение на затворе. Благодаря этому небольшой ток затвора управляет большой нагрузкой (десятками ампер).

С помощью плат расширения

Если нет желания использовать реле и транзисторы, можно купить целые блоки — платы расширения. К ним относятся Wi-Fi, Bluetooth, эквалайзер, драйвер и т. д., которые необходимы для управления нагрузкой разных мощностей и напряжений. Это могут быть как одноканальные элементы, которые подойдут монохромным лентам, так и многоканальные (для управления цветными RGB-лентами).

Различные программы

Библиотеки с программами для платы Arduino можно загрузить с официального сайта или найти в Интернете на других информационных ресурсах. Если есть навыки, можете даже самостоятельно написать скетч-программу (исходный код). Для сбора электрической цепи не требуется каких-то специфичных знаний.

Варианты применения системы под управлением Arduino:

  1. Освещение. Наличие датчика позволит задать программу, в соответствии с которой свет в комнате либо появляется сразу, либо плавно включается параллельно заходу солнца (с увеличением яркости). Для включения можно использовать Wi-Fi, телефон и интеграцию в систему «Умный дом».
  2. Освещение коридора и лестничных площадок. Arduino позволит организовать освещение каждой детали (к примеру, ступени) отдельно. Добавьте в плату датчик движения, чтобы адресные светодиоды загорались последовательно в зависимости от того места, где зафиксировано движение объекта. Если движения нет, диоды будут гаснуть.
  3. Светомузыка. Воспользуйтесь фильтрами и подайте на аналоговый вход звуковые сигналы, чтобы на выходе организовать светомузыку (эквалайзер).
  4. Модернизация компьютера. Некоторые датчики позволят создать зависимость цвета светодиодов от температуры процессора, его загрузки, нагрузки на оперативную память. Используется протокол DMX 512.

Микросхемы Arduino расширяют возможности применения монохромных и многоканальных (RGB) светодиодных лент. Помимо слияния различных цветов, образования сотен тысяч оттенков сможете создать неповторимые эффекты — затухание при заходе солнца, периодическое включение/выключение при фиксации движения и многое другое.

Управление светодиодной лентой через Arduino — схемы плавного включения и выключения освещения

Источник: https://220.guru/osveshhenie/istochniki-sveta/upravlenie-svetodiodnoj-lentoj-arduino.html

Урок 25. Дистанционное управление RGB лентой с ИК-пульта

В этом уроке мы научимся управлять устройствами с помощью любого ИК-пульта дистанционного управления, на примере управления RGB светодиодной лентой.

Нам понадобится:

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

  • Библиотека iarduino_IR для работы с ИК-приёмопередатчикамиВАЖНО: библиотека использует второй аппаратный таймер,НЕ ВЫВОДИТЕ СИГНАЛЫ ШИМ НА 3 ИЛИ 11 ВЫВОД!

О том как устанавливать библиотеки, Вы можете ознакомиться на странице Wiki – Установка библиотек в Arduino IDE.

Видео:

Схема подключения:

Силовые ключи подключаются к выводам с ШИМ: 5, 6, 9.
ИК-приёмник подключается к цифровому выводу 7 (можно заменить на любой цифровой вывод, указав его номер в скетче).

Код программы:

// Подключаем библиотеку:
#include // подключаем библиотеку для работы с ИК приёмником
// Объявляем переменные и константы:
iarduino_IR_RX IR(7); // объявляем переменную для работы с ИК приёмником (номер цифрового вывода к которому подключён ИК приёмник = 7)
const uint8_t PIN_LED_R = 6; // указываем номер вывода arduino, к которому подключён Trema ключ, управляющий R каналом светодиодной ленты
const uint8_t PIN_LED_G = 9; // указываем номер вывода arduino, к которому подключён Trema ключ, управляющий G каналом светодиодной ленты
const uint8_t PIN_LED_B = 5; // указываем номер вывода arduino, к которому подключён Trema ключ, управляющий B каналом светодиодной ленты uint8_t VAL_LED_R = 0xFF; // объявляем переменную содержащую значение яркости R канала светодиодной ленты uint8_t VAL_LED_G = 0xFF; // объявляем переменную содержащую значение яркости G канала светодиодной ленты uint8_t VAL_LED_B = 0xFF; // объявляем переменную содержащую значение яркости B канала светодиодной ленты uint8_t VAL_LIGHT = 0xFF; // максимальная яркость для каждого канала RGB
unsigned long MAS_PLAY[6] = {5,0,0,0,0,0}; // массив для автоперелива {задержка в мс, время старта, тип, сектор, позиция, яркость} bool FLAG_ON = 0; // флаг вкл/выкл bool FLAG_RGB = 1; // флаг указывающий о необходимости изменить значения ШИМ
void setup(){ IR.begin(); // инициируем ИК приёмник
}
void loop(){
// Читаем команды с ИК-пульта (если таковые есть) if(IR.check(true)){ if(FLAG_ON){ switch(IR.data){ // если принят пакет с пульта (включая пакеты повторов), если устройство включено, проверяем какая кнопка пульта нажата /* > = перелив 2 */ case 0xFF02FD: if(IR.key_press){MAS_PLAY[2]=MAS_PLAY[2]==2?0:2; MAS_PLAY[1] = millis();} break; /* >|| = перелив 3 */ case 0xFFC23D: if(IR.key_press){MAS_PLAY[2]=MAS_PLAY[2]==3?0:3; MAS_PLAY[1] = millis();} break; /* CH+ = яркость + */ case 0xFFE21D: FLAG_RGB=1; VAL_LIGHT=VAL_LIGHT1; break; /* 1 = красный */ case 0xFF30CF: MAS_PLAY[2]=0; FLAG_RGB=1; VAL_LED_R=0xFF; VAL_LED_G=0x00; VAL_LED_B=0x00; MAS_PLAY[3]=0; MAS_PLAY[4]=0x00; break; /* 2 = оранжевый */ case 0xFF18E7: MAS_PLAY[2]=0; FLAG_RGB=1; VAL_LED_R=0xFF; VAL_LED_G=0x0F; VAL_LED_B=0x00; MAS_PLAY[3]=0; MAS_PLAY[4]=0x7F; break; /* 3 = жёлтый */ case 0xFF7A85: MAS_PLAY[2]=0; FLAG_RGB=1; VAL_LED_R=0xFF; VAL_LED_G=0x3F; VAL_LED_B=0x00; MAS_PLAY[3]=1; MAS_PLAY[4]=0x00; break; /* 4 = синий */ case 0xFF10EF: MAS_PLAY[2]=0; FLAG_RGB=1; VAL_LED_R=0x00; VAL_LED_G=0x00; VAL_LED_B=0xFF; MAS_PLAY[3]=4; MAS_PLAY[4]=0x00; break; /* 5 = голубой */ case 0xFF38C7: MAS_PLAY[2]=0; FLAG_RGB=1; VAL_LED_R=0x00; VAL_LED_G=0xFF; VAL_LED_B=0xFF; MAS_PLAY[3]=3; MAS_PLAY[4]=0x00; break; /* 6 = зелёный */ case 0xFF5AA5: MAS_PLAY[2]=0; FLAG_RGB=1; VAL_LED_R=0x00; VAL_LED_G=0xFF; VAL_LED_B=0x00; MAS_PLAY[3]=2; MAS_PLAY[4]=0x00; break; /* 7 = фиолетовый*/ case 0xFF42BD: MAS_PLAY[2]=0; FLAG_RGB=1; VAL_LED_R=0xFF; VAL_LED_G=0x00; VAL_LED_B=0xFF; MAS_PLAY[3]=5; MAS_PLAY[4]=0x00; break; /* 8 = белый */ case 0xFF4AB5: MAS_PLAY[2]=0; FLAG_RGB=1; VAL_LED_R=0xFF; VAL_LED_G=0xFF; VAL_LED_B=0xFF; MAS_PLAY[3]=0; MAS_PLAY[4]=0x00; break; /* 9 = чёрный */ case 0xFF52AD: MAS_PLAY[2]=0; FLAG_RGB=1; VAL_LED_R=0x00; VAL_LED_G=0x00; VAL_LED_B=0x00; MAS_PLAY[3]=0; MAS_PLAY[4]=0x00; break; }}/* CH- = вкл/выкл */ if(IR.data==0xFFA25D && IR.key_press){FLAG_RGB=1; FLAG_ON=FLAG_ON?0:1;}} // если нажата кнопка пульта вкл/выкл и она не удерживается
// Запускаем функцию перелива цвета (если таковая включена) if(MAS_PLAY[2]&&FLAG_ON){Func_color();}
// Выводим ШИМ для каждого канала RGB (если требуется изменить ШИМ хотя бы для одного из каналов) if(FLAG_RGB){ FLAG_RGB=0; // сбрасываем флаг указывающий о необходимости изменить значения ШИМ analogWrite(PIN_LED_R, FLAG_ON?map(VAL_LED_R,0,0xFF,0,MAS_PLAY[2]==1?MAS_PLAY[5]:VAL_LIGHT):0); // выводим ШИМ с указанием яркости R канала светодиодной ленты analogWrite(PIN_LED_G, FLAG_ON?map(VAL_LED_G,0,0xFF,0,MAS_PLAY[2]==1?MAS_PLAY[5]:VAL_LIGHT):0); // выводим ШИМ с указанием яркости G канала светодиодной ленты analogWrite(PIN_LED_B, FLAG_ON?map(VAL_LED_B,0,0xFF,0,MAS_PLAY[2]==1?MAS_PLAY[5]:VAL_LIGHT):0); // выводим ШИМ с указанием яркости B канала светодиодной ленты }
}
// функция автоперелива цвета
void Func_color(){ if(MAS_PLAY[1]>millis()){MAS_PLAY[1]=0; delay(MAS_PLAY[0]);} // произошло переполнение micros() if(MAS_PLAY[1] FFFF00) case 1: VAL_LED_B=0x00; VAL_LED_G=0xFF; VAL_LED_R=MAS_PLAY[2]!=2?0x00:0xFF-MAS_PLAY[4]; break; // сектор автоперелива от жёлтого к зелёному (FFFF00 -> 00FF00) case 2: VAL_LED_R=0x00; VAL_LED_G=0xFF; VAL_LED_B=MAS_PLAY[2]!=2?0xFF: MAS_PLAY[4]; break; // сектор автоперелива от зелёного к голубому (00FF00 -> 00FFFF) case 3: VAL_LED_R=0x00; VAL_LED_B=0xFF; VAL_LED_G=MAS_PLAY[2]!=2?0x00:0xFF-MAS_PLAY[4]; break; // сектор автоперелива от голубого к синему (00FFFF -> 0000FF) case 4: VAL_LED_G=0x00; VAL_LED_B=0xFF; VAL_LED_R=MAS_PLAY[2]!=2?0xFF: MAS_PLAY[4]; break; // сектор автоперелива от синего к фиолетовому (0000FF -> FF00FF) case 5: VAL_LED_G=0x00; VAL_LED_R=0xFF; VAL_LED_B=MAS_PLAY[2]!=2?0x00:0xFF-MAS_PLAY[4]; break; // сектор автоперелива от фиолетового к красному (FF00FF -> FF0000) } if(MAS_PLAY[4]=6){MAS_PLAY[3]=0;} // переходим от 5 к 0 сектору if(MAS_PLAY[2]==1){MAS_PLAY[5]=MAS_PLAY[4]>127?map(MAS_PLAY[4],127,255,VAL_LIGHT,1):map(MAS_PLAY[4],0,127,1,VAL_LIGHT);} // затухание и возрастание FLAG_RGB=1; // устанавливаем флаг указывающий о необходимости изменить значения ШИМ }
}

Алгоритм работы:

В начале кода:

  • подключается библиотека iarduino_IR;
  • создаётся переменная IR с указанием цифрового вывода к которому подключён ИК-приёмник;
  • создаются константы PIN_LED_ R/G/B с указанием выводов ШИМ к которым подключены ключи для каналов R/G/B;
  • создаются переменные VAL_LED_ R/G/B с указанием начального значения ШИМ для каждого канала R/G/B;
  • создаётся переменная VAL_LIGHT с указанием начальной яркости свечения
  • создаётся массив MAS_PLAY для реализации функции автоперелива цвета
  • флаги: FLAG_ON – вкл/выкл ленты и FLAG_RGB – требующий изменение ШИМ для каждого канала R/G/B.

В функции setup:

  • выполняется только одна строка кода: IR.begin(); – инициирующая ИК-приёмник.

В функции loop:

  • сначала проверяется наличие данных принятых с пульта, если данные есть, то оператором switch case определяем, какая кнопка нажата, по её коду и выполняем изменение переменных цвета, яркости, автоперелива и флагов;
  • далее, если требуется включить автоперелив, то запускаем функцию Func_color();
  • в конце устанавливаем новые значения ШИМ, если установлен флаг FLAG_RGB свидетельствующий о том, что были внесены изменения в переменные цвета или яркости.

В функции Func_color:

Меняем цвет и/или яркость по одному из трёх алгоритмов:

  • MAS_PLAY[2]==3 => меняем цвет резко, без изменения яркости;
  • MAS_PLAY[2]==2 => меняем цвет плавно, без изменения яркости;
  • MAS_PLAY[2]==1 => меняем цвет плавно, с изменением яркости;
  • MAS_PLAY[2]==0 => автоперелив отключён, при данном условии функция Func_color() не будет запускаться из функции loop.
Читайте также:  Raspberry ноутбук: делаем своими руками портативный компьютер

Время перелива зависит от значения первого элемента массива MAS_PLAY[0] которое является задержкой в мс для изменения цвета на 1 деление ШИМ. Чем больше данное значение, тем дольше будет происходить перелив. По умолчанию значение равно 5мс, указывается в начале кода, при объявлении массива MAS_PLAY, данное значение можно изменять.

Ссылки:

Источник: https://lesson.iarduino.ru/page/urok-25-distancionnoe-upravlenie-rgb-lentoy-s-ik-pulta/

(Обновлена) Подключение RGB светодиодной ленты к Arduino (LED 3528)

Предисловие 

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

Вступление

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

Для этого нам понадобиться сама RGB лента, у меня это 6-ти вольтовая лента на LED светодиодах 3528.

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

В данной статье мы затронем только ленты на светодиодах 3528, так что можно считать эту статью первой, из серии знакомства со светодиодными лентами. В следующий раз мы поговорим об подключении лент на RGB светодиодах 5050, но будет это уже после нового года.

Подключение

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

И так, что мы видим из схемы выше.

  1. RGB лента подключена у нас напрямую к Arduino UNO. Сделал я так потому, что лента у меня как я писал выше 6-ти вольтовая, а это значит что ее можно напрямую подключить к ардуино без посредников, ну разве что гореть будет чуть тусклее, но глазу в целом – незаметно.
  2. Важно! RGB лента берет питание с контакта Vin(Arduino Uno) т.е. с блока питания (контакт ленты +6V мы подключили на порт Vin).
  3. Контакты RGB светодиодной ленты выведены на порты (~3, ~5, ~6), с помощью них мы и будем управлять нашими светодиодами используя ШИМ.
  4. Arduino Uno запитывается от блока питания (5В) через разъем питания.
  5. Модульная кнопка подключена как обычно (VCC на +5В, GND на GND, SIG на один из портов, в нашем случае это 12-й).

Скетч

Теперь, когда мы все собрали и подключили, пора заняться собственно программированием. Но перед этим надо определиться, скажем так с “эффектами”. Найдем в кладовке китайскую гирлянду, подключим, по переключаем различные режимы.

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

  • Рандом (Цвета загораются в случайном порядке, но мы усложним, и сделаем случайной еще и яркость).
  • Бегущий огонек (Светодиоды включаются по очереди в определенном направлении).
  • Бегущий огонек в обратную сторону.
  • Затухание (Один из цветов плавно гаснет, в то время как другой набирает яркость, и так по кругу).
  • Ну и два стандартных, это “Включено” когда горят все светодиоды на максимальной яркости, и “Выключено” когда мы отключаем нашу ленту.

Собственно далее сам скетч.

// Порты, на которых висят светодиоды и кнопка. byte pinBtn   = 12; // Кнопка на 12 пине. byte pinRed   = 5;  // Красные светодиоды на 5 пине. byte pinGreen = 6;  // Зеленые светодиоды на 6 пине. byte pinBlue  = 3;  // Синие светодиоды на 3 пине. // Номер текущего эффекта. static byte mode = 1; // Для работы кнопки (анти дребезг). static byte tempButton = LOW; static byte button = LOW; // Дополнительные переменные. static int state = 0; static int index = 0; void setup() {   // Настраиваем порт кнопки.   pinMode(pinBtn, INPUT);   // Т.к. мы используем ШИМ, то настраивать порты для ленты не надо. } void loop() {   // Отлавливаем нажатие кнопки.   button = digitalRead(pinBtn);   if (tempButton && !button)   {     // Небольшой анти дребезг.     tempButton = button;     delay(10);     button = digitalRead(pinBtn);     // Все хорошо, меняем эффект.     if (button == tempButton)     {       // Переключаем на следующий эффект.       mode++;       if (mode > 6) mode = 1; // Зацикливаем эффекты по кругу.       // Сбрасываем дополнительные переменные.       state = 0;       index = 0;       // Выключаем все светодиоды.       analogWrite(pinRed,   255);       analogWrite(pinGreen, 255);       analogWrite(pinBlue,  255);     }   }   tempButton = button;     // Обработка наших эффектов.   switch (mode)   {     case 1: // Эффект №1: Все решает случай.             analogWrite(pinRed,   random(0, 255));             analogWrite(pinGreen, random(0, 255));             analogWrite(pinBlue,  random(0, 255));             break;         case 2: // Эффект №2: Бегущий огонек.             if (state == 3)             {               analogWrite(pinRed,   255);               analogWrite(pinGreen, 0);             }             if (state == 6)             {               analogWrite(pinBlue, 255);               analogWrite(pinRed,  0);             }             if (state == 9)             {               analogWrite(pinGreen, 255);               analogWrite(pinBlue,  0);             }             state–;             if (state < 1) state = 9;             break;         case 3: // Эффект №3: Бегущий огонек (В обратную сторону).             if (state == 1)             {               analogWrite(pinBlue,  255);               analogWrite(pinGreen, 0);             }             if (state == 4)             {               analogWrite(pinGreen, 255);               analogWrite(pinRed,   0);             }             if (state == 7)             {               analogWrite(pinRed,  255);               analogWrite(pinBlue, 0);             }             state++;             if (state > 9) state = 1;             break;         case 4: // Эффект №4: Затухание.             if (state == 0)             {                  analogWrite(pinBlue, index);                analogWrite(pinGreen, 255 – index);             }             if (state == 1)             {                analogWrite(pinGreen, index);                analogWrite(pinRed, 255 – index);             }             if (state == 2)             {                analogWrite(pinRed, index);                analogWrite(pinBlue, 255 – index);             }             index += 5;             if (index > 255)             {               state++;               index = 0;               if (state > 2) state = 0;             }             break;         case 5: // Включить ленту.             analogWrite(pinRed,   0);             analogWrite(pinGreen, 0);             analogWrite(pinBlue,  0);             break;                 case 6: // Выключить ленту.             analogWrite(pinRed,   255);             analogWrite(pinGreen, 255);             analogWrite(pinBlue,  255);             break;                   }   // Задержка в 50мс.   delay(50); }

Я постарался как можно больше прокомментировать скетч. Но тем не менее хочу немного рассказать о его работе.

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

  • В переменных pinBtn, pinRed, pinGreen, pinBlue мы указываем порты на которые подключена светодиодная лента и кнопка.
  • Переменная mode содержит в себе номер “эффекта”, который в данный момент воспроизводится.
  • tempButton и button необходимы нам для нормальной работы с кнопкой. При помощи них мы избавляемся от дребезга и переключаем эффекты.
  • state и index – вспомогательные переменные для нормальной работы некоторых эффектов.

Во вторых в функции setup() мы инициализируем порты, так как с лентой мы работаем использую ШИМ, то порты эти нет необходимости отдельно инициализировать, по этому тут указывается только порт кнопки.

В третьих в функции loop() мы производим проверку нажатия кнопки, смену эффекта, и собственно управление светодиодами нашей ленты в зависимости от текущего эффекта.

Ну и напоследок хочу заострить ваше внимание на работе ленты. Дело в том, что как вы заметили (а может и нет) по схеме подключения видно, что ленте мы подаем питание через отдельный контакт +6, а вот на контакты R, G, B мы должны подавать землю.

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

Итого мы имеем:

  • Чтобы светодиоды выключились надо выполнить analogWrite(pin, 255); (Подаем на порт 5В).
  • Чтобы светодиоды горели в половину яркости надо выполнить analogWrite(pin, 127); (Подаем на порт 2.5В).
  • Ну а чтобы светодиоды горели на максимальную яркость надо выполнить analogWrite(pin, 0); (Подаем на порт 0В).
Читайте также:  Arduino и python: управление платой с помощью оболочки языка

Вот такая вот необычная вещь эта RGB светодиодная лента.

Ну а далее демонстрационное видео.

Видео

Дополнение

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

  • Заказывал ленту я в Китае, на торговой площадке Aliexpress, ссылка на ленту.
  • Arduino UNO так же от китайского производителя Robotdyn (Хорошие ардуино, с великолепным качеством. У меня самая дешёвая из 3х типов UNO которые он делает).

Из описания следует:

  • Напряжение ленты 5В.
  • 60 светодиодов на метр (У меня 2 метра).
  • Источник питания ленты – USB, да, обычный USB компьютера, ноутбука, телевизора, китаец даже указал прикуриватель автомобиля (возможно он имел ввиду зарядку для сотового). Из этого следует что по стандарту USB, ток ленты не должен превышать 500мА.
  • Ну и применение ленты – это подсветка корпуса ПК, мебели, телевизора и прочего где рядом есть USB разъем.

Комплектация:

  • Сама лента в бухте.
  • Контроллер с возможностью изменять яркость, выбирать цвета, и демо режим в виде гирлянды (откуда все и пошло).
  • Переходник, штекер питания на USB.

Далее собственно несколько фото.

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

КонтроллерArduino UNO
Red (40 шт.) 310 мА 30-40 мА
Green (40 шт.) 230 мА 40 мА
Blue (40 шт.) 340 мА 30-40 мА
Все (120 шт.) 870 мА 110 мА

Тут стоит еще учитывать точность дешёвого мультиметра.

Напряжение между + и -Между Vin и GND
USB 2.0 5.28 В 4.64 В (USB->USB)
Блок питания 5.33 В 4.59 В (БП->Разъем питания)

Начнем мы с контроллера.

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

Из этого следует, что ток тут явно выше нормы но в пределах допустимого для USB. Хотя наш друг китаец мог и тут немного приукрасить. Ведь версию USB он не указал. А по току они отличаются. USB 1.0-2.

0 – максимум 500мА. USB 3.0 – максимум 900мА.

Теперь по Ардуинке.

Всем известно что максимальный ток одного порта Arduino UNO не более 40мА. Это написано на каждом втором сайте. Собственно в таблице выше это мы и видим.

И чуда тут то же нет, Arduino не горит. Она ограничивает ток до 40мА и все. Лента горит тусклее но все работает. При этом за 4 часа непрерывной работы, Ардуино как была холодной так и осталась.

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

Большая просьба оставлять свои комментарии здесь, в статье. Наш виджет поддерживает все популярные соц. сети и вам даже не надо регистрироваться.

Источник: http://arduino.on.kg/podklyuchenie-RGB-svetodiodnoy-lenty-k-Arduino-LED-3528

Управление светодиодной лентой при помощи Аrduino

Ардуино идеально подходит для управления любыми устройствами. Микропроцессор ATmega с помощью программы-скетча манипулирует большим количеством дискретных выводов, аналогово-цифровых входов/выводов и ШИМ-контроллерами.

Благодаря гибкости кода микроконтроллер ATmega широко используется в модулях различной автоматики, в том числе на его основе возможно создать контроллер управления светодиодным освещением.

Принцип управления нагрузкой через Ардуино

Плата Ардуино имеет два типа портов вывода: цифровой и аналоговый (ШИМ-контроллер). У цифрового порта возможно два состояния – логический ноль и логическая единица. Если подключить к нему светодиод он либо будет светиться, либо не будет.

Аналоговый выход представляет собой ШИМ-контроллер, на который подаётся сигнал частотой около 500Гц с регулируемой скважностью. Что такое ШИМ-контроллер и принцип его работы можно найти в интернете. Через аналоговый порт  возможно не только включать и выключать нагрузку, а и изменять напряжение (ток) на ней.

Синтаксис команд

Цифровой вывод:

pinMode(12, OUTPUT); — задаём порт 12 портом вывода данных;
digitalWrite(12, HIGH); — подаём на дискретный выход  12 логическую единицу, зажигая светодиод.

Аналоговый вывод:

analogOutPin = 3; – задаём порт 3 для вывода аналогового значения;
analogWrite(3, значение); – формируем на выходе сигнал с напряжением от 0 до 5В. Значение – скважность сигнала от 0 до 255. При значении 255 максимальное напряжение.

Способы управления светодиодами через Ардуино

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

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

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

  • Биполярный;
  • Полевой;
  • Составной (сборка Дарлингтона).

При подаче высокого логического уровня (digitalWrite(12, HIGH);) через порт вывода  на базу транзистора через цепочку коллектор-эмиттер потечет опорное напряжение на нагрузку. Таким образом можно включать и отключать светодиод.

Аналогичным образом работает и полевой транзистор, но поскольку у него вместо «базы» сток, который управляется не током, а напряжением, ограничительный резистор в этой схеме необязателен.

Биполярный вид не позволяет регулировать мощные нагрузки. Ток через него ограничен на уровне 0,1-0,3А.

Полевые транзисторы работают с более мощными нагрузками с током до 2А. Для ещё более мощной нагрузки используют полевые транзисторы Mosfet с током до 9А и напряжением до 60В.

Вместо полевых можно использовать сборку Дарлингтона из биполярных транзисторов на микросхемах ULN2003, ULN2803.

Микросхема ULN2003 и принципиальная схема электронного коммутатора напряжения:

Принцип работы транзистора для плавного управления светодиодной лентой

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

Подключив транзистор к аналоговому порту Ардуино, присваиваем ему значение от 0 до 255, изменяем напряжение, подаваемое на коллектор либо сток от 0 до 5В. Через цепочку коллектор-эмиттер будет проходить от 0 до 100% опорного напряжения нагрузки.

Для управления светодиодной лентой arduino необходимо подобрать транзистор подходящей мощности. Рабочий ток для питания метра светодиодов 300-500мА, для этих целей подойдет силовой биполярный транзистор. Для большей длины потребуется полевой транзистор.

Схема подключения LED ленты к ардуино:

Управление RGB лентой с помощью Andurino

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

Схема подключения к Arduino RGB светодиода:

Аналогично построено и управление RGB лентой Arduino:

Аrduino RGB контроллер лучше собирать на полевых транзисторах.

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

Скетч управления яркостью светодиодной ленты Arduino

int led = 120; устанавливаем средний уровень яркости

void setup() {
pinMode(4, OUTPUT);  устанавливаем 4й аналоговый порт на вывод
pinMode(2, INPUT);

pinMode(4, INPUT);  устанавливаем 2й и 4й цифровой порт на ввод для опроса кнопок
}
void loop(){

button1 = digitalRead(2);

button2 = digitalRead(4);
if (button1 == HIGH)  нажатие на первую кнопку увеличит яркость
{
led = led + 5;

analogWrite(4, led);
}
if (button2 == HIGH)  нажатие на вторую кнопку уменьшит яркость
{
led = led — 5;

analogWrite(4, led);
}

При удержании первой или второй кнопки плавно изменяется напряжение, подаваемое на управляющий контакт электронного ключа. Тогда и произойдет плавное изменение яркости.

Модули управления Ардуино

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

ИК-управление

Модуль позволяет запрограммировать до 20 команд.

Радиус сигнала около 8м.

Цена комплекта  6 у.е.

По радиоканалу

Четырёхканальный блок с радиусом действия до 100м

Цена комплекта  8 у.е.

Позволяет включать освещение еще при приближении к квартире.

Бесконтактное

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

Радиус действия до 5м.

Цена модуля 0,3 у.е.

Оцените, пожалуйста, статью. Мы старались:) (1

Источник: https://SvetodiodInfo.ru/texnicheskie-momenty/upravlenie-svetodiodnoj-lentoj-arduino.html

Подключение RGB ленты через Arduino для управления с телефона | Каталог самоделок

Данный проект посвящен тому, как сделать светодиодную подсветку, управляемую с соседней комнаты, чтобы не вставать с дивана. Светодиодная RGB-подсветка одинаково хорошо украшает как маленький аквариум, так и большую комнату.

Можно засветить разными цветами баню от RGB ленты на Arduino. Создать, так сказать, баню на микропроцессорном управлении от Arduino.

Всего лишь понадобятся для сборки RGB-подсветки такие компоненты:

  1. Bluetooth модуль HC-05 для беспроводной связи с Arduino.
  2. Плата Arduino nano, mini, Uno с микропроцессором ATmega8, ATmega168, ATmega328.
  3. Светодиодная лента RGB, при необходимости во влагозащитном исполнении IP65 или без него.
  4.  Смартфон с Android как пульт управления RGB-подсветкой.
  5. Полевые MOSFET транзисторы, такие как P3055LD, P3055LDG, PHD3355L, но лучше с выводами для закрепления в монтажных отверстиях. Биполярные транзисторы работают хуже.
  6. Резисторы 10 кОм, 0.125 Вт — 3 штуки.

Немного теории про подключение RGB ленты к Arduino

Нельзя подключить светодиодную полоску напрямую к плате Arduino. Светодиодная лента светиться от 12 В, тогда как микропроцессору нужно для работы всего 5 В.

Но, самая главная проблема в том, что выходы микропроцессора не имеют достаточной мощности для питания целой ленты светодиодов. В среднем метровой длины светодиодная полоса потребляет 600 мА. Такой ток точно выведет из строя плату Arduino.

Используемые ШИМ выходы микропроцессора не имеют достаточной мощности, чтобы засветить RGB ленту, но всё-таки их можно использовать для снятия сигнала управления.

Для развязки по питанию, в качестве ключей, рекомендуется использовать транзисторы. Лучше использовать полевые MOSFET транзисторы: им для открытия нужен мизерный ток на «затвор», к тому же они имеют большую мощность в сравнении с биполярными ключами такого же размера.

Подключение RGB ленты к Arduino

На электромонтажной схеме на управление лентой задействованы ШИМ-выхода: 9 (красный), 10 (зеленый), 11 (голубой).

Три резистора по 10 кОм, 0.125 Вт повешены на «затвор» каждого транзистора.

Плюс от блока питания 12 В (красный провод) идет напрямую на RGB ленту. Смотрите распиновку многоцветной ленты.

Минус от блока питания 12 В (черный провод) распределяется по «истокам» полевых транзисторов.

«Сток» каждого транзистора связан с отдельным контактом ленты: R, G, B. Рекомендуется для удобства при подключении использовать провода красного, зеленого, голубого цвета.

Контакт заземления GND платы Arduino следует посадить на минус входного питания.

Сама плата Arduino Uno запитывается от отдельного сетевого адаптера. Для Arduino nano, mini потребуется собрать простенький источник питания на интегральном стабилизаторе 7805.

Подключение Bluetooth модуля HC-05:

  • VCC — 5V (питание +5 В);
  • GND — GND (земля, общий);
  • RX — TX на Arduino nano, mini, Uno;
  • TX — RX на Arduino nano, mini, Uno;
  • LED — не используется;
  • KEY — не используется.

Загрузка скетча RGB-ленты

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

Скетч RGB_LED

unsigned long x;
int LED = 9; // зеленый подключен к 9 пину
int LED2 = 10; // синий подключен к 10 пину
int LED3 = 11; // красный подключен к 11 пину
int a,b,c = 0;
void setup() {
Serial.begin(9600);
Serial.setTimeout(4);
pinMode(LED, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
}
void loop()
{
if (Serial.available())
{
x = Serial.parseInt();
if (x>=0 && x=256 && x=512 && x

Источник: https://volt-index.ru/high-tech/podklyuchenie-rgb-lentyi-cherez-arduino-dlya-upravleniya-s-telefona.html

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