Использование Neopixels с Raspberry Pi

Давайте будем честны. Светодиоды — это круто. Многоцветные светодиоды — это очень круто. Управляемые многоцветные светодиоды — это потрясающе. В этом руководстве рассматриваются некоторые управляемые многоцветные светодиоды, которые можно использовать с Raspberry Pi.

Neopixels

Замечательные ребята из Adafruit производят ряд различных продуктов — многоцветных управляемых светодиодов, которые они называют Neopixels. Мы рассмотрим следующие из них:

Neopixels для макетной платы

Пусть название вас не пугает! Вам не обязательно использовать макетную плату с этими Neopixels.

После пайки эти Neopixels очень легко подключить к Raspberry Pi. Вы можете соединить несколько штук в цепочку, выбирая длину вашего проекта. Но вместе с разъёмами и проводами они довольно громоздкие и неудобные.

Если я не уверен, что мой код работает, я считаю, что эти Neopixels — самый быстрый и простой способ подключения к Raspberry Pi для тестирования.

Они доступны в упаковках по 4 штуки или в виде сетки из 25 штук, которые можно отломить.

Вам нужно будет припаять штыревые разъёмы (male headers) к этим Neopixels, чтобы их использовать. Это ничем не отличается от пайки разъёмов на Raspberry Pi Zero. Те же размеры разъёмов, просто один ряд из 3 штук с каждой стороны Neopixel.

Примечание: эти конкретные Neopixels поставляются без разъёмов. Их нужно приобрести отдельно.

У Neopixel есть две стороны — вход и выход, обозначенные как I и O. Догадываетесь, что они делают?! Да, провод данных подключается к стороне In (вход), и если вы хотите подключить ещё один Neopixel в цепочку, вы можете добавить провод данных из стороны Out (выход), который подключается к In следующего Neopixel. Именно так Neopixels творят свою магию. Вы можете соединить несколько штук в цепочку, а затем обращаться к ним в порядке подключения (подробнее об этом позже).

Помимо контакта данных, есть контакт 5V, обозначенный +, и контакт GND, обозначенный G — они используются для питания Neopixels. Каждому Neopixel нужно питание. Таким образом, к каждому Neopixel подходят 3 провода, и если вы подключаете ещё один — 3 провода идут к следующему Neopixel.

В случае этих Neopixels для макетной платы проводом служит обычный соединительный провод «мама-мама» (female to female jumper wire).

Что замечательно в этих Neopixels — провод может быть разной длины. Так вы можете контролировать расстояние между каждым светодиодом.

Шаг 1: Припаяйте Neopixels

Припаяйте штырьки к Neopixels. Вашему последнему Neopixel не нужны штырьки на стороне OUT, но лучше довести работу до конца и не ограничивать этот Neopixel ролью последнего в цепочке. Что такое ещё немного пайки между друзьями?!

Пайка Neopixels

Шаг 2: Подключите провода

Соедините провода «мама-мама» между Neopixels. Убедитесь, что вы подключаете Data Out (O) к Data In (I), G к G и + к +. Перепутать землю и питание вряд ли сломает Neopixel при таком уровне мощности, но этот светодиод и все последующие работать не будут, поэтому просто проверьте провода дважды.

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

Шаг 3: Подключите к Raspberry Pi

Выключите Pi! Со стороны IN первого Neopixel:

Подключите In к GPIO10, 12, 18 или 21

Подключите + к 5V

Подключите G к любому контакту земли (GND) на Pi

Подключение завершено

Шаг 4: Напишите код

Для Python на Raspberry Pi существует библиотека Neopixel.

У Adafruit есть очень подробное руководство по установке библиотеки Neopixel. Сначала нужно установить CircuitPython. Это руководство включает инструкции по настройке Raspberry Pi с самого начала без монитора. Я нашёл его очень полезным.

https://learn.adafruit.com/circuitpython-on-raspberrypi-linux/installing-circuitpython-on-raspberry-pi

Когда вы выполните все инструкции на этой странице, вы будете готовы установить библиотеку Neopixel.

https://learn.adafruit.com/adafruit-neopixel-uberguide/python-circuitpython#python-installation-of-neopixel-library-17-9

Примечание: Я следовал этим шагам (15 ноября 2018 года), но у меня они не сработали — мне пришлось установить эту библиотеку отдельно. Вы можете сделать это, либо принудительно переустановив библиотеку:

pip3 install --force-reinstall adafruit-blinka

либо установив её отдельно:

sudo pip3 install rpi_ws281x

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

  1. Закомментируйте эту строку

pixel_pin = board.NEOPIXEL
  1. Раскомментируйте эту строку

pixel_pin = board.D18
  1. Измените количество Neopixels

num_pixels = 10

Итого эти строки должны выглядеть так:

#pixel_pin = board.NEOPIXEL
pixel_pin = board.D18
# The number of Neopixels
num_pixels = 2

На странице также объясняется, как работает код Neopixel.

Вы можете устанавливать отдельные светодиоды на определённые цвета, задавая значения красного (Red), зелёного (Green) и синего (Blue). Для каждого цвета можно использовать любое число от 0 до 255. Следующая команда делает первый светодиод красным. Все остальные светодиоды либо останутся выключенными, либо сохранят свой последний цвет.

pixels[0] = (255, 0, 0)

Следующая команда устанавливает все светодиоды на зелёный:

pixels.fill((0, 255, 0))

Вы должны использовать эту команду, чтобы отобразить изменения:

pixels.show()

Узнайте больше о программировании Neopixels на сайте Adafruit:

https://circuitpython.readthedocs.io/projects/neopixel/en/latest/

Шаг 5: Танцуйте

Посмотрите на код в Neopixel_simpletest.py. Он содержит отличные примеры циклов и смены цветов. Когда вы освоите программирование Neopixels, создайте дискотечное световое шоу и зажигайте!

Работающие Neopixels

Примечание: Raspberry Pi может питать только несколько Neopixels. Для небольших проектов, таких как носимые устройства (wearables), этого достаточно. Для всего, что требует более нескольких Neopixels, вам нужно будет питать их отдельно. Не рискуйте подключать слишком много Neopixels к Pi. Они будут потреблять больше тока, чем он может обеспечить.

Пришивные Neopixels

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

Думайте о пришивных Neopixels точно так же, как о Neopixels для макетной платы. Единственное отличие в том, что вместо соединительных проводов используется токопроводящая нить. Здесь не нужна пайка, только шитьё. Несколько важных замечаний:

Не скрещивайте потоки!! У токопроводящей нити нет изоляции. По сути, это просто голый провод. Если вы скрестите нити земли и питания, вы рискуете замкнуть цепь, повредить Neopixels, и всё может опасно нагреться. Шейте очень плотно. Обрезайте все торчащие нити и используйте прозрачный лак для ногтей, чтобы закрепить распушившиеся концы нити.

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

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

Другой способ — модифицировать соединительный провод, чтобы на одном конце было кольцевое клеммное соединение, а на другом — гнездовой разъём:

  • Отрежьте головку! Неважно, какой это провод — «папа-мама» или «мама-мама». Вы не будете использовать не-гнездовой конец. Отрежьте его.

  • Зачистите провод.

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

Модифицированная проводка

Теперь вы можете обернуть токопроводящую нить вокруг кольцевой клеммы и подключить другой конец к контакту на Raspberry Pi.

Оберните нить вокруг кольца или Neopixel три раза. Помните: держите плотно и не скрещивайте провода.

На пришивном Neopixel + — это питание, - — это земля, а стрелка, указывающая на светодиод, — это вход данных (Data In). Вы можете проложить одну нить питания от + к + к + на каждом Neopixel. Аналогично можно проложить одну нить земли. Но провод от Data Out одного Neopixel к Data In следующего — это только один провод. Его нельзя просто протянуть по цепочке.

Схема подключения пришивных Neopixels

Код

Это Neopixel. Код точно такой же, как и раньше.

Светодиодная лента Neopixel

А вот и тяжёлая артиллерия! Лента Neopixel может выглядеть действительно впечатляюще, поднимаясь по вашей лестнице. Они бывают разной длины и имеют защитное покрытие. Отлично подходят для непоседливых малышей.

Радужная лестница с Neopixel

Здесь вам определённо понадобится отдельный источник питания.

Питание

Neopixels могут потреблять до 60 мА, но в реальности, если вы не включаете каждый светодиод на полную яркость и полный белый цвет всё время, они скорее всего не будут потреблять более 20 мА. Что касается ампер — если их слишком много, это не повредит вашим светодиодам. Напряжение должно быть 5 В и не более, это критически важно. Ампер может быть больше. Я использую блок питания 5 В, 4 А для своих лент из 60 светодиодов.

Подключение

Светодиодная лента Neopixel (как и отдельные Neopixels) нуждается в данных, питании и земле. Отдельный источник питания обеспечит питание и землю. Raspberry Pi обеспечит данные. ОДНАКО вам также нужно подключить землю Raspberry Pi к ленте.

Давайте посмотрим на ленту Neopixel. На обоих концах есть оголённые чёрный и красный провода, а также чёрный и белый провода в разъёме. Найдите конец ленты с маркировкой IN.

Чёрный — это земля, красный — питание, а белый — данные. В разъём с чёрным и белым проводами можно вставить штыревой контакт (male pin), поэтому именно его я использую для подключения ленты к Pi.

Подключение лент Neopixel

Выключите Raspberry Pi!

Вставьте штыревой конец провода «папа-мама» (male-to-female jumper wire) в чёрную сторону разъёма. Подключите его гнездовой конец к контакту земли (Ground) на Pi.

Вставьте штыревой конец провода «папа-мама» в белую сторону разъёма. Подключите его гнездовой конец к GPIO18 на Pi.

Вот так:

Простое подключение Neopixel

Это не самое надёжное соединение, но для длинных лент, закреплённых на стене, они обычно не сильно перемещаются.

Далее нужно подключить источник питания к светодиодной ленте. Вы можете подключить его к тем проводам рядом с проводами данных. А можно подключить его и к другому концу ленты. Направление подачи питания не имеет значения. Только провод данных должен подключаться к стороне In светодиодной ленты.

Сторона Out идентична стороне In. Разъём на этом конце предназначен для подключения ещё одной светодиодной ленты.

Чтобы подключить блок питания: зачистите ещё немного провода от красного и чёрного проводов. Используйте гнездовой адаптер питания DC (Female DC Power Adaptor) и прикрутите красный провод к стороне +, а чёрный провод к стороне -.

Клеммная колодка для питания

Подключите блок питания и включите Pi. Используйте код, описанный выше, чтобы протестировать вашу светодиодную ленту.

Работающая светодиодная лента

Заключение

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