- PVSM.RU - https://www.pvsm.ru -
Скоро Новый Год, и если у вас есть пара часов свободного времени, можно сделать hi-tech украшение для новогодней елки, пальмы или мандаринового дерева. Без разницы — оно будет неплохо смотреться везде.
Под катом — гифка с демонстрацией работы этой штуки
Основа конструкции — светодиодная гибкая лента NeoPixel 32x8, Raspberry Pi и хорошее настроение. Ну и да, понадобится немного кода на Python.
На этом этапе нужно будет припаять пару контактов и воспользоваться примером кода от Adafruit’s NeoPixel Uberguide [2]. Для нашего проекта нужно два источника питания — для «малинки» и светодиодной ленты. Для последней нужно будет подключить не только питание, но и данные. Здесь все просто.
При желании можно добавить еще полоску ткани, чтобы рассеивать яркий свет светодиодов.
Подключаем данные
Берем любую «землю» от «малинки» и подключаем ее к GND-линии данных светодиодной ленты.
Подключаем источник питания
Это можно сделать либо при помощи обычного кабеля, по схеме, уже показанной выше, либо воспользоваться USB-кабелем. В этом случае нужно выполнить подключение вот по этой схеме.
Теперь давайте проверим матрицу, запустив код от Adafruit
Запускаем «малинку» подключаем питание RGB-матрицы, открываем терминал и устанавливаем зависимости:
sudo pip3 install rpi_ws281x adafruit-circuitpython-neopixel
sudo python3 -m pip install --force-reinstall adafruit-blinka
Загружаем код из репозитория автора статьи:
git clone https://github.com/carolinedunn/RGBTreeTopper
Выбираем папку scrollingTextMask:
cd RGBTreeTopper
Запускаем тестовый код fillMatrix.py:
sudo python3 32-fillMatrix.py
Если получилась радуга, как на гифке выше, все работает, можно двигаться к следующему этапу. Если что-то пошло не так, скорее всего, какие-то контакты неверно подключены.
Советы: Если система не работает с пином 21 GPIO «малинки», попробуйте пины 10, 12 или 18. Затем нужно открыть 32-fillMatrix.py из папки scrollingTextMask и обновить вывод GPIO. В этом случае нужно будет соответствующим образом изменить и другие файлы проекта.
Останавливаем скрипт при помощи комбинации Ctrl+C.
Теперь в терминале, который все еще открыт, набираем команду:
sudo python3 treeTopper.py
В папках, которые мы взяли с GitHub, есть папка «fire», которая содержит 10 картинок в формате jpeg. Вот что делает код treeTopper.py:
Объявляет библиотеки, которые используются в коде. Внимание нужно обратить на PIL (Pillow Imaging Library), это библиотека, которая добавляет возможность обработки изображений в интерпретатор Python.
А если хочется собственных картинок?
Параметры должны быть следующими:
Каждый файл нужно сохранять под названиями 1-10.JPG в соответствующую папку.
Для отображения картинок нужно задать новый путь к картинкам. При желании можно сменить и последовательность их отображения.
Запуск при загрузке
Как только мы подготовили все изображения, используем Python для запуска скрипта при загрузке устройства. Лучший вариант — Crontab.
В консоли открываем Crontab: crontab -e
Вводим 1 и нажимаем Enter.
Таким образом открывается новый файл crontab. Внутри опускаемся вниз и enter ->
sudo python3 /home/pi/RGBTreeTopper/treeTopper.py
@reboot sudo python3 /home/pi/RGBTreeTopper/treeTopper.py
Нажимаем Ctrl+X, а затем crontab для сохранения.
Выключаем «малинку» и отключаем все, что собрали.
На этом шаге уже можно продемонстрировать новогодний огонек на вершине не менее новогодней елки.
Кстати, автор в курсе, что его изобретение по форме напоминает рулон туалетной бумаги.
Она шутит, что на фоне происходящего в 2020 году это вполне адекватно. Но вообще ее можно и изменить — конструкция при желании легко модифицируется, так что рулон бумаги превращается… да во что угодно.
Автор: Seleditor
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/razrabotka/359525
Ссылки в тексте:
[1] основа: https://www.thingiverse.com/thing:4672701
[2] Adafruit’s NeoPixel Uberguide: https://learn.adafruit.com/adafruit-neopixel-uberguide?view=all
[3] Источник: https://habr.com/ru/post/531756/?utm_source=habrahabr&utm_medium=rss&utm_campaign=531756
Нажмите здесь для печати.