🏭 GISTROY® — инженерия и производство

Управление светодиодной лентой: Дополним ваш дом умными датчиками

Дорогие друзья!

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

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

Gistroy — крупнейшее сообщество по автоматизации, логистике и промышленному оборудованию в СНГ. Здесь вы найдёте ответ на любой вопрос из мира станков, поставок и интеграции. Мы предлагаем полный цикл решений: от подбора и поставки оборудования до внедрения и точной настройки на объекте. Поддержка без выходных, экспертная помощь на каждом этапе.

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

Содержание

Необходимые материалы

Необходимые материалы
Фиг. 1. Необходимые материалы — Gistroy

Для управления лентой будет использоваться плата Arduno NANO, инфракрасный приёмник(ИК) и датчик присутствия. Данная статья будет полезна для всех, кто хочет сделать освещение из светодиодной ленты и у кого нет желания нести расходы на приобретение дорогостоящих контроллеров для управления ею, так как с помощью данной платы можно обеспечить любую комбинацию цветов и режимов для светодиодной ленты. Управлять ими можно будет с помощью обычного пульта от телевизора или с помощью телефона.

Для данного проекта все компоненты можно заказать на Aliexpress, например:

— Arduino Nano - 160р.

— ИК приёмник с пультом - 55р.

— Датчик присутствия HC-SR501 - 37р

— Светодиодная лента от 200р за метр, есть и дешевле, но с поддержанием управления цветами и в ней должно быть три цвета (RGB).

— Понадобится ещё блок питания для светодиодной ленты, но это зависит от модели ленты и питающего напряжения.

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

Необходимые материалы
Фиг. 2. Необходимые материалы — Gistroy

На рисунке выше показана схема подключения ИК приёмника, датчика и светодиодной ленты.

Светодиодная лента с пультом управления

Плата Arduino имеет аналоговые, цифровые и ШИМ порты. В данном проекте мы будем использовать ШИМ порт D5 для выхода Date ИК приёмника и цифрой порт D6 для выхода OUT датчика присутствия, а ШИМ порт D3 для входа DIN светодиодной ленты.

ШИМ порты считывают значения от 0 до 255, чтобы считывать данные с ИК приёмника. Цифровые порты у нас принимают значения 0 или 1, это соответствует включению и выключению света, а в нашем случае порт считывает значение с датчика присутствия, то есть датчик определяет наличие в помещении людей. ШИМ порт передаёт на светодиодную ленту сигнал для управления цветами ленты и помогает нам делать разные комбинации оттенков. Оставшиеся разъёмы датчиков подключаются следующим образом, GND в GND, VCC в 5.

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

Библиотека Adafruit_NeoPixel.h для управления светодиодной лентой.

Подробнее как её устанавливать написано на сайте http://arduino.on.kg/Adafruit_NeoPixel.

Библиотека написана на C++, поддерживает светодиодные ленты и неопиксельные кольца, основанные на светодиодах WS2812 и WS2811. Из данной библиотеки нам понадобятся следующие функции:

Ардуино управление светодиодной лентой

Ардуино код:

1. Для инициализации нашей ленты и дальнейшей работы с ней, необходимо в секции setup() вызвать две команды ранее созданного объекта ленты. strip.begin() - Функция begin() настроит порт Arduino и выставит значения по умолчанию. strip.show() - Функция show() передаст команду на выключение всем пикселям.

2. Для того, чтобы задать любому пикселю ленты определенный цвет, существует функция strip.setPixelColor(n, red, green, blue).

Где параметр:

— n - Номер пикселя в ленте (отсчет идет с нуля, то есть если в вашей ленте 60 пикселей, то первый из них будет 0, а последний 59)

— red - Число от 0 до 255 определяющее яркость красного светодиода в пикселе.

— green - Число от 0 до 255 определяющее яркость зеленого светодиода в пикселе.

— blue - Число от 0 до 255 определяющее яркость синего светодиода в пикселе.

3. Функция show() передает данные в ленту. Данную функцию необходимо вызывать каждый раз после того, как вы изменили цвета пикселей или настройки ленты.

Так же понадобится библиотека IRremote.h для ИК приёмника, чтобы приёмник мог понимать наши сигналы с пульта или телефона.Примеры работы с данной библиотекой и установка можно посмотреть по данной ссылке http://arduino.on.kg/peredacha-dannyh-v-infrakrasnom-diapazone-pri-pomoshchi-Arduino. Из данной библиотеки нам понадобятся следующие функции:

1. Функция для подключения порта ИК приёмника IRrecv irrecv(RECV_PIN).

2. Функция для приёма данных results.value присваивает переменной значение которые приходят на приёмник.

Данных библиотек нам хватит для написания нашей программы.

Создадим программу, в которой будет четыре режима у светодиодной ленты:

— Режим 0 – выключение светодиодной ленты.

— Режим 1 – включение красного цвета на ленте, если кто-то вошёл в комнату или ходит в комнате.

— Режим 2 - включение белого цвета на ленте, если кто-то вошёл в комнату или ходит в комнате.

— Режим 3 – мигают случайные цвета на ленте с интервалом 200 мс.

Чтобы режимы работы светодиодной ленты не занимали в программе много места, мы создадим для них отдельные подпрограммы, которые называются mode0(), mode1(), mode2(), mode3(). Так же можно будет дополнительно создать свои режимы работы, главное фантазия.

Скетч ардуино

Ниже представлен (код - скетч) программы с пояснениями. Скачать скетч.

// Подключаем библиотеку для ИК приемника.

#include

// Подключаем библиотеку для светодиодной ленты.

#include "Adafruit_NeoPixel.h"

// Указываем пин, к которому подключен IR приемник.

IRrecv irrecv(5);

decode_results results;

// Указываем, какое количество пикселей у нашей ленты.

#define LED_COUNT 30

// Указываем, к какому порту подключен вход ленты DIN.

#define LED_PIN 3

// Создаем переменную strip для управления нашей лентой.

Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);

// Создаём переменную в которую будут записываться режимы работы ленты, по умолчанию 0-й режим.

int number_mode = 0;

// Подпрограмма для принятия данных с ИК приёмника.

void setupIrReceiver()

{

irrecv.enableIRIn();

irrecv.resume();

}

// Подпрограмма для записи данных с ИК приёмника в переменную типа String.

void getIrCommand(String &receivedCommand)

{

decode_results result;

if (irrecv.decode(&result))

{

receivedCommand = String(result.value, HEX);

receivedCommand.toUpperCase();

irrecv.resume();

}

else

{

receivedCommand = "";

}

}

// Переменная в которую будут записываться данные с ИК приёмника.

String ircode = "";

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

void mode0()

{

// Выключаем все светодиоды.

for (int i = 0; i < LED_COUNT; i++)

{

strip.setPixelColor(i,0, 0, 0); // Черный цвет, т.е. выключено.

}

// Передаем цвета ленте.

strip.show();

}

// Подпрограмма для первого режима, если кто-то в комнате ходит,то горит лента красного цвета.

void mode1()

{

number_mode = 1; // Говорим переменной, что включился первый режим.

// Если в комнате кто-то ходит, то digitalRead(6) пришлёт 1.

if(digitalRead(6)==1)

{

// Включаем все светодиоды.

for (int i = 0; i < LED_COUNT; i++)

{

strip.setPixelColor(i,255, 0, 0); // Красный цвет.

}

// Передаем цвета ленте.

strip.show();

// Задержка 500 мс.

delay(500);

}

}

// Подпрограмма для второго режима, если кто-то в комнате ходит то горит лента белого цвета.

void mode2()

{

number_mode = 2; // Говорим переменной, что включился второй режим.

// Если в комнате кто-то ходит, то digitalRead(6) пришлёт 1.

if(digitalRead(6)==1)

{

// Включаем все светодиоды.

for (int i = 0; i < LED_COUNT; i++)

{

strip.setPixelColor(i,255, 255, 255); // Белый цвет.

}

// Передаем цвета ленте.

strip.show();

// Задержка 500 мс.

delay(500);

}

}

// Подпрограмма для третьего режима, горит случайные цвета и меняются с интервалом 200мс.

void mode3()

{

number_mode = 3; // Говорим переменной, что включился третий режим.

// Включаем все светодиоды.

for (int i = 0; i < LED_COUNT; i++)

{

strip.setPixelColor(i,random(255), random(255), random(255)); // Случайный цвет.

}

// Передаем цвета ленте.

strip.show();

// Задержка 200 мс.

delay(200);

}

void setup() {

// Запускаем прием инфракрасного сигнала.

setupIrReceiver();

// Подключаем монитор порта.

Serial.begin(9600);

// Подключаем ленту.

strip.begin();

pinMode(6, INPUT); // пин 6 будет входом для датчика движения.

}

void loop() {

// Получаем код нажатой кнопки.

getIrCommand(ircode);

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

if (!( ircode.length() == 0 ))

{

Serial.print(ircode);

Serial.println();

}

/* С помощью последовательного порта я определил, какое значение у каждой моей кнопки пульта или пульта с телефона

* например 1 = FFA25D ; 2 = FF629D ; 3 = FFE21D ; ОК = FF38C7 и так далее.

* У каждого пульта РАЗНЫЕ ЗНАЧЕНИЯ кнопок.

* Теперь определим при нажатии на какую кнопку пульта, какой режим работы будет у светодиодной ленты.

*/

// Если придёт код кнопки OK то будет 0-й режим или если в переменной 0-й режим работы.

if (ircode == "FF38C7" || number_mode == 0)

{

mode0();

number_mode = 0; // Говорим переменной, что вкюлчился нулевой режим.

}

// Если придёт код кнопки 1 то будет 1-й режим или если в переменной 1-й режим работы.

if (ircode == "FFA25D" || number_mode == 1)

mode1();

// Если придёт код кнопки 2 то будет 2-й режим или если в переменной 2-й режим работы.

if (ircode == "FF629D" || number_mode == 2)

mode2();

// Если придёт код кнопки 3 то будет 3-й режим или если в переменной 3-й режим работы.

if (ircode == "FFE21D" || number_mode == 3)

mode3();

mode0();

}

Часто задаваемые вопросы

Какие способы управления светодиодной лентой существуют?

Светодиодную ленту можно управлять с помощью инфракрасного пульта, радиоконтроллера, Wi-Fi/умных устройств, а также через Arduino или другие микроконтроллеры. Возможна настройка яркости, цвета, эффектов и режимов свечения.

Что входит в комплект светодиодной ленты с управлением?

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

Как управлять светодиодной лентой через Arduino?

Через Arduino можно задать эффекты свечения, управление яркостью, анимации, датчики и сценарии работы. Для RGB-лент используют библиотеки FastLED или Adafruit NeoPixel. Питание контролируется транзисторами или MOSFET-модулями.

Какие ленты лучше: обычные или адресные?

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

Можно ли дистанционно управлять лентой со смартфона?

Да. Существуют Wi-Fi и Bluetooth-контроллеры, совместимые с приложениями Tuya, Smart Life и аналогичными. Они позволяют включать/выключать ленту, менять цвета, задавать таймеры и эффекты удалённо со смартфона или через голосовые помощники.

Как регулировать яркость светодиодной ленты?

Яркость регулируется через контроллер: кнопками на пульте, через приложение или программно (в Arduino — через широтно-импульсную модуляцию, PWM). Также можно установить диммер или добавить фотодатчики для автоматической адаптации освещённости.

Заключение

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

Благодаря универсальности Arduino, возможна интеграция дополнительных датчиков, настройка индивидуальных эффектов и разработка сложных сценариев освещения. Это открывает широкий простор для творчества: от декоративных решений до практических систем, повышающих комфорт и энергоэффективность. Таким образом, использование Arduino в управлении светодиодными лентами остаётся простым, недорогим и эффективным инструментом для реализации идей и создания умных решений своими руками.

border decoration