Управление светодиодной лентой с помощью Raspberry PI
Всем привет!
Этот длиннопост будет о том, как сделать контроллер светодиодных лент с помощью Raspberry PI подобный этому.
Нам понадобятся:
● Сам Raspberry PI.
● Транзисторы P1703BDG, IRLZ34N или аналогичные n-типа, рассчитанные на нагрузку ленты и напряжение 12v. В количестве по одному на каждый канал управления.
● Светодиодные ленты на 12v. Можно использовать как одноцветные, так и RGB.
● Адресная светодиодная лента на основе контроллеров WS281x.
● Макетная плата и соединительные провода.
● Мощный блок питания на 12v. Компьютерный отлично подойдет.
● подключение к raspberry pi по LAN или наличие адаптера USB Wi-Fi
Начнем с основного, это выбор Raspberry PI
На данный момент существуют такие модели:
«A» (700MHz, 256 Мб ОЗУ, 26 GPIO, 1 USB), $25
«A+» (700MHz, 256 Мб ОЗУ, 40 GPIO, 1 USB), $20
«B» (700MHz, 512 Мб ОЗУ, 26 GPIO, 2 USB, ethernet), $35
«B+» (700MHz, 512 Мб ОЗУ, 40 GPIO, 4 USB,ethernet), $30
«2B» (4x900MHz, 1 Гб ОЗУ, 40 GPIO, 4 USB, ethernet), $35
«Zero» (1GHz, 512 МБ ОЗУ, 40 GPIO, 1 USB), $5
Для наших целей подойдет любая из этих моделей, Все, кроме Zero, можно купить на aliexpress по цене от 20$. Найти Zero по заявленной стоимости на данный момент невозможно из-за спекуляций с первой небольшой партией. Лично я купил модель 2B в технопойнте за 3500р.
Выбор светодиодных лент
На али есть огромное количество разнообразных лент в разделе
Lights & Lighting < LED Lighting < LED Strips
Ленты на диодах SMD 5050 очень яркие. стоимость около 100-150р за метр. Бывают как одноцветные, так и RGB. Белые и теплые белые светодиоды могут быть залиты люминофором желтого или оранжевого цвета. В ленте они объединяются по 3 на секцию.
Другой вариант - лента с диодами SMD 3528. Они меньшего размера и менее яркие. Однако в RGB ленте на секцию стоят три разных светодиода: зеленый, красный и синий. Благодаря этому ленточка смотрится эффектнее в качестве гирлянды. Для освещения комнаты такая лента не годится
В адресных лентах можно управлять каждым светодиодом независимо. Самые распространенные контроллеры это WS2801, WS2811 и WS2812.
WS2801 - имеет 4 контакта (5v, SI, Clock, Gnd). Это отдельная тема, я не буду его сейчас рассматривать. Ленты на этом контроллере дорогие. вот про него интересная статья на хабре.
WS281x - трехконтактные (5v, Data, Gnd). Ленты с WS2811 делают на основе диодов SMD 5050. При этом на ленте в каждой секции по 3 светодиода. Они самые дешевые из этой группы, около 1000р за 5м. WS2812 содержит по одному светодиоду и одному контроллеру на секцию. Светодиоды обычно тоже SMD 5050. Цена от 1300р за 5 метров, зависит от частоты диодов. WS2812b отличаются тем, что контроллер встроен вовнутрь светодиода. Благодаря этому их можно уместить до 144 шт/метр. По цене и качеству почти то же, что и WS2812.
На этих контроллерах можно найти и обычные ёлочные гирлянды. Кстати, вот неплохой вариант адресной гирлянды WS2811 за 1000р+. Её можно использовать таким же образом.
Установка ОС на Raspberry PI
В этом нет ничего сложного, инструкция есть на официальном сайте, которая сводится к тому, что нужно извлечь ZIP архив на SD или MicroSD карту.
Дисклеймер:
Я не несу ответственности за ущерб, который вы можете нанести своему устройству при сборке по схемам, приведенным ниже. Однако если у вас ясная голова и прямые руки - бояться нечего.
Управлять подачей питания мы можем на любом GPIO разъеме, на картинке ниже они подписаны как GPIO2, GPIO4, GPIO22 и т.д. У моделей A и B отсутствуют пины после 26го.
Подключение простой ленты к разъему GPIO:
● Разъем GPIO18 подключается к затвору транзистора (GATE)
● Исток транзистора (SOURCE) подключается на землю в Raspberry PI и к блоку питания.
● Сток (DRAIN) подключаем к минусу у светодиодной ленты
● с блока питания 12v подаем напрямую на ленту.
Если у одноцветной ленты 4 контакта, подключите белый к +12V, а все остальные (R,G,B) к стоку.
С RGB лентой будет чуть сложнее, потребуется уже три транзистора:
Управление яркостью ленты будет осуществляться с помощью широтно-импульсной модуляции (PWM). Грубо говоря, лента будет мигать с очень большой скоростью так, что будет казаться, будто она горит в половину мощности. Для этого потребуется драйвер pigpio.
Установить можно его следующим образом:
wget abyz.co.uk/rpi/pigpio/pigpio.zip
unzip pigpio.zip
cd PIGPIO
make
sudo make install
Теперь можно запустить службу:
sudo pigpiod
Чтобы не запускать ее каждый раз при загрузке, можно прописать эту строчку в файл /etc/rc.local
Проверяем работоспособность PWM:
echo "p 18 128" > /dev/pigpio
эта команда должна установить скважность импульса у разъема GPIO18 на 50%.
Если до этого момента все было сделано верно, лента должна загореться на 50% мощности.
echo "p 18 255" > /dev/pigpio - включить ленту на полную яркость
echo "p 18 0" > /dev/pigpio - выключить ленту.
Отлично! Теперь можно подключаться с мобильного телефона по SSH и с помощью этих команд задать любой цвет и яркость освещения. Подойдет Android Terminal Emulator, который есть во многих прошивках Android.
Труъ-линуксойды могут написать такой скрипт ~/setColor.sh :
#!/bin/bash
echo "p 23 $1 p 24 $2 p 25 $3" > /dev/pigpio
где 23,24,25 - номера GPIO, к которым подключена лента.
Делаем файл исполняемым:
chmod 755 ~/setColor.sh
И запускаем с параметрами:
~/setColor.sh 255 64 0
Подключение адресной ленты WS281x
Адресную ленту можно подключить напрямую к Raspberry PI.
"+" к пину 2 или 4, чтобы получить 5v;
"-" к любому пину Ground (6,9,14,20,25,30,34,39)
Data - к любому пину GPIO, желательно GPIO18
Если у вас есть отдельный источник питания на 5v, лучше подключить ленточку именно к нему.
>> Делись схемой!
Вот схема, которую я собрал для своих гирлянд:
(две RGB ленты, одна WS2812 и белая лента)
>> Почему именно Raspberry PI, а не другой дешевый контроллер
Простейший алгоритм для гирлянды действительно можно сделать на Arduino nano за 130-150р. Но это уже программирование микроконтроллера на языке C и высокий порог вхождения. К тому же, его будет сложно приспособить к дистанционному управлению по локальной сети.
Raspberry PI - это полноценный компьютер, который можно настроить как угодно, в том числе писать программу для работы с лентами на любом языке программирования. А если надоест - он может использоваться как домашний медиа-сервер или Smart-TV.
На этом пока что всё. В следующий раз расскажу, как управлять адресной гирляндой, а также сделать доступ к ним через интернет или локальную сеть. Будет node.js и немного кода на javascript.