Оглавление:

RPi 3 Правый борт / Генератор частиц: 6 шагов (с изображениями)
RPi 3 Правый борт / Генератор частиц: 6 шагов (с изображениями)

Видео: RPi 3 Правый борт / Генератор частиц: 6 шагов (с изображениями)

Видео: RPi 3 Правый борт / Генератор частиц: 6 шагов (с изображениями)
Видео: NOMADS 2 - Dark Land (Complete Audiobook -English) 2024, Июль
Anonim
Image
Image
Соберите светодиодную плату
Соберите светодиодную плату

Вам скучно с Raspberry Pi? Готовы ли вы командовать стихийными силами вселенной, вызывая и отпуская фотоны по своему желанию? Вы просто хотите что-нибудь интересное, чтобы повесить в своей гостиной, или какой-нибудь модный проект, который разместите на Facebook, чтобы показать Дениз, что у вас все хорошо в эти дни, большое вам спасибо? Вы попали в компьютерную симуляцию и коротаете часы, пока вас не освободят или не удалите? Если что-то из этого описывает вас, то [голос диктора] Добро пожаловать!

Из этого туториала Вы узнаете, как собрать и настроить дисплей генератора частиц с использованием Raspberry Pi 3 и некоторых матричных панелей RGB. Это займет у вас от одного до двух часов, а готовый продукт будет иметь размеры примерно 30 x 8 дюймов (без Pi) и его можно будет установить на стене. Из него получится довольно крутое украшение для гостиной, офиса, игровой комнаты или любого другого места, где вы хотите его поставить.

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

  • Rpi 3 + SD-карта + чехол + блок питания: 70 долларов (от Canakit, но вы, вероятно, сможете получить детали дешевле, если купите их отдельно).
  • Светодиодная матрица RGB 4x 32x32 (желательно p6 в помещении с 1/16 сканирования): от 80 до 100 долларов при доставке на Alibaba или Aliexpress; 160 долларов на Adafruit или Sparkfun.
  • Шляпа Adafruit RGB Matrix: 25 долларов
  • Источник питания 5 В, 4 А: 15 долларов США
  • Зажимы, напечатанные на 3D-принтере: 1 доллар (это для соединения панелей и подвешивания их на стене; если у вас нет доступа к 3D-принтеру, вы можете использовать планку для оплетки, чтобы удерживать их вместе, и некоторые кронштейны из строительного магазина, чтобы повесьте его на стену. Я попытался найти для них файлы с дизайном или.stls, но они, похоже, ушли с земли. Однако клипы довольно легко моделировать.)
  • 14 болтов M4x10: 5 долларов США
  • Четыре кабеля IDC 4x8 и три кабеля питания для матриц RGB (я не знаю, как они называются!). Они должны были быть включены в ваши светодиодные панели.
  • Итого: около 200 долларов плюс-минус.

Проект не требует от вас пайки или каких-либо специальных знаний в области программирования; он предполагает, что вы знаете, как записать изображение на карту microSD. Если вы не знаете, как это сделать, у Raspberry Pi Foundation есть хорошее руководство.

Также предполагается, что у вас есть базовые знания о том, как делать что-то из командной строки в Linux, а пошаговое руководство по коду предполагает, что вы знаете основы Python (но - вам не нужно следовать пошаговому руководству по коду, чтобы иметь возможность создавать и запустите генератор частиц.) Если вы застряли на каком-либо из шагов, не стесняйтесь задать вопрос или опубликовать в / r / raspberry_pi (который также, я полагаю, является основной аудиторией этого руководства)

Шаг 1: соберите светодиодную плату

Соберите светодиодную плату
Соберите светодиодную плату

Сначала вы собираетесь собрать отдельные светодиодные панели 32x32 в одну большую панель 128x32. Вам нужно будет посмотреть на свои платы и найти маленькие стрелки, указывающие порядок подключения; у меня они прямо возле разъемов HUB75 / 2x8 IDC. Убедитесь, что у вас есть стрелки, указывающие от места подключения Rpi (справа на фото выше) по длине платы.

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

Поскольку силовые кабели, входящие в комплект моих плат, были очень короткими, мне пришлось удлинить один, вставив штыри лопаточного вывода в разъем другого (это довольно просто - вам, возможно, придется слегка согнуть лопаточные выводы внутрь, но я '' включил картинку на всякий случай). В итоге я получил два набора плоских клемм и один разъем IDC 2x8 справа от моей теперь удлиненной светодиодной платы.

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

Итак - как только вы соединили все панели вместе с помощью зажимов, кабелей IDC 2x8 и кабелей питания, вы готовы перейти к следующему шагу!

Шаг 2: подготовьте Raspberry Pi

Затем вы собираетесь отложить светодиодную плату (пока) и подготовить Pi 3 к ее запуску. Мы будем использовать библиотеку матриц Raspbian Stretch Lite и hzeller RGB (а не матричную библиотеку Adafruit, которая устарела и не обслуживается).

Во-первых, вы захотите записать образ Raspbian Lite на SD-карту; как только вы это сделаете, подключите монитор и клавиатуру к пи и загрузите его. (Вы также можете сделать это без головы, либо через ssh, либо через последовательный разъем, но если вы собираетесь именно так, вам, вероятно, не нужно, чтобы я рассказывал вам, как это сделать.) Для этого вам понадобится подключение к Интернету.; Если у вас есть Wi-Fi, подключите Pi к беспроводной сети, отредактировав /etc/wpa_supplicant/wpa_supplicant.conf и запустив wpa_cli -i wlan0 reconfigure. (Если вы никогда этого не делали, вы можете получить инструкции здесь).

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

sudo apt-get update

sudo apt-get install git python-dev python-pil

git clone

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

cd rpi-rgb-led-матрица

и скомпилируйте его (это может занять минуту):

сделать && сделать build-python

и установите привязки python:

sudo make install-python

Если при компиляции кода библиотеки возникнут ошибки, вернитесь и убедитесь, что вы правильно установили python-dev и python-pil! Привязки python не будут компилироваться без установки обоих этих пакетов.

Вам также необходимо отключить вывод звука вашего Pi (встроенный звук мешает матричному коду), отредактировав /boot/config.txt. Найдите строку с надписью dtparam = audio = on и измените ее на dtparam = audio = off.

Если все скомпилировано нормально (вы получите несколько предупреждений о прототипах Wstrict), ваш пи должен быть готов к запуску матричной платы. Выключите его (sudo shutdown now), отключите его, и на следующем шаге мы подключим световую плату к пи.

Шаг 3: Подключите Pi + Matrix Hat + LED Board

Подключите Pi + Matrix Hat + LED Board
Подключите Pi + Matrix Hat + LED Board

Итак, теперь, когда ваш Pi выключен и отключен от сети, давайте подключим шляпку матрицы к пи, а плату светодиодов к шляпе матрицы. Если вашего Pi еще нет, сейчас самое время положить его туда.

Установите шляпу матрицы, совместив ее с контактами GPIO на Pi и осторожно надавив на нее с равномерной силой с обеих сторон. Убедитесь, что контакты выровнены правильно, так что разъемы на шляпке точно закрывают контакты GPIO на пи. Если вы его сместите, это не катастрофа; просто осторожно снимите его и распрямите все погнутые штифты.

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

Затем вам нужно подключить плоские клеммы для питания к клеммной колодке матричной шляпы. У вас есть два лопаточных разъема с каждой стороны, но они оба должны хорошо там поместиться. Сначала ослабьте винты и - это должно быть само собой разумеющимся - убедитесь, что вы поместили клеммы 5V со стороны, помеченной + (они должны быть красными, но - опять же - дважды проверьте свои разъемы и не предполагайте, что они были изготовлены правильно) и клеммы GND (они должны быть черными) на стороне, помеченной -. Как только они окажутся там, затяните винты в верхней части клеммной колодки, и у вас должно получиться что-то похожее на изображение заголовка для этого шага.

Теперь - вы, возможно, заметили, что эта конкретная конфигурация оставляет половину лопаточного вывода с обеих сторон открытой, паря всего в миллиметрах над шляпкой матрицы (и не намного дальше друг от друга). И - лопаточные выводы очень скоро будут несущие несколько вольт и несколько ампер Raw Power. Это (я слышу, как вы спрашиваете с другой стороны экрана) действительно правильный способ сделать это? Это (вы наклоняетесь ближе и шепчет) Хорошая идея?

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

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

Шаг 4. Проверьте матрицу RGB

Теперь, когда ваш Pi подключен к световой плате, переверните плату и снова включите Pi. Вы можете включить матрицу после подключения Pi; Однако если вы включите шляпу перед Pi, Pi попытается загрузиться с недостаточным током и будет горько жаловаться (и может вызвать панику ядра и вообще не загрузиться).

Если у вас возникли проблемы с загрузкой Pi с надетой матричной шляпой, убедитесь, что вы используете достаточно мощный источник питания для Pi (2A + должен быть хорошим), и попробуйте подключить источник питания как для шляпы, так и для Pii в один удлинитель или удлинитель и включите их вместе.

После загрузки Pi мы готовы протестировать матрицы. Перейдите туда, где находятся образцы привязки Python (cd / rpi-rgb-led-matrix / bindings / python / samples), и попробуйте генератор вращающихся блоков с помощью следующей команды:

sudo./rotating-block-generator.py -m adafruit-hat --led-chain 4

Вы должны запустить его как sudo, потому что библиотеке матриц требуется низкоуровневый доступ к оборудованию при инициализации. -M указывает способ подключения панелей к пи (в данном случае шляпа adafruit), а --led-chain указывает - как вы уже догадались - сколько панелей мы соединили вместе. Строки и столбцы на панели по умолчанию 32, так что у нас все хорошо.

Теперь - после того, как вы выполнили программу, произойдет одно из двух (или, на самом деле, одно из трех):

  • Ничего не произошло
  • Вы получите красивый вращающийся блок в центре вашей световой доски.
  • Световая панель работает, я думаю, но выглядит … странно (половина зеленая, некоторые ряды не светятся и т. Д.)

Если ничего не происходит или панель выглядит странно, нажмите ctrl + c, чтобы выйти из демонстрационной программы, выключите пи и проверьте все свои подключения (кабель IDC, питание, убедитесь, что оба источника питания подключены, и т. Д.) Также убедитесь, что шляпа правильно подсоединена; если это не поможет, перенесите его на одну панель (обязательно используйте --led-chain 1 при тестировании) и посмотрите, может ли одна из панелей работать неправильно. Если ЭТО не работает, ознакомьтесь с советами hzeller по устранению неполадок. если ЭТО ВСЕ ЕЩЕ не работает, попробуйте отправить сообщение в / r / raspberry_pi (или на форумы Adafruit, если вы получили свои панели от Adafruit, или обмен стеками и т. д.)

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

Шаг 5: Мультиплексирование и скорость сканирования (или: кратковременное отклонение на пути к могиле)

Итак, одна из ошибок, которую я совершил, когда заказал свой первый набор панелей у Alibaba, заключалась в том, что у меня были вызывные панели (почему бы и нет, подумал я - они водонепроницаемые и более яркие!). И когда я подключил их к своей матричной шляпе, все выглядело.. не так.

Чтобы понять, почему это так, давайте взглянем на Фила Берджесса из описания Adafruit о том, как работают эти панели. Вы заметите, что Берджесс указывает, что панели не загорают все свои светодиоды одновременно - они загорают наборы рядов. Соотношение между высотой панели в пикселях и количеством строк, которые загораются одновременно, называется скоростью сканирования. Так, например - на панели 32x32 со сканированием 1/16 два ряда (1 и 17, 2 и 18, 3 и 19 и т. Д.) Подсвечиваются одновременно, полностью вниз по плате, а затем контроллер повторяет. Большинство библиотек, управляющих матрицами RGB, созданы для панелей, у которых скорость сканирования составляет 1/2 высоты в пикселях, то есть они управляют двумя рядами светодиодов одновременно.

Наружные панели (и некоторые внутренние панели - убедитесь, что вы ознакомились со спецификациями перед заказом) имеют скорость сканирования, составляющую 1/4 высоты в пикселях, что означает, что они ожидают, что четыре линии будут управляться одновременно. Это делает их ярче (что хорошо), но делает невозможным работу большого количества стандартного кода с ними (что плохо). В дополнение к этому, они имеют тенденцию иметь пиксели не в порядке внутри, что требует программного преобразования значений x и y для адресации правильных пикселей. Почему они сделаны именно так? Я понятия не имею. Вы знаете? Если да, скажите, пожалуйста. В противном случае это останется загадкой.

Итак, если у вас есть одна из этих странных вызывных панелей, вам (вероятно) повезло! hzeller недавно добавил в свою библиотеку поддержку общих конфигураций этих типов панелей. Вы можете узнать больше об этом на странице проекта на github, но вы можете передать --led-multiplexing = {0, 1, 2, 3} в пример кода (вам также может потребоваться притвориться, что у вас есть двойная цепочка из половинных панелей) и она должна работать.

Однако есть некоторые шаблоны преобразования пикселей, которые не поддерживаются - и (угадайте, какие) у моих панелей есть один из них! Итак, мне пришлось написать свой собственный код преобразования (я также - по какой-то причине - должен сказать библиотеке, чтобы она действовала так, как будто у меня есть восемь панелей 16x32, связанных вместе). который выглядит следующим образом:

def transformPixels (j, k): effJ = j% 32

эффК = к% 32

modY = k

modX = j

#modX и modY - измененные X и Y;

#effJ и effK перед тем, как нажать

если ((effJ)> 15):

modX = modX + 16

если ((effK)> 7):

modY = modY - 8

modX = modX + 16

если ((effK)> 15):

modX = modX - 16

если ((effK)> 23):

modY = modY - 8

modX = modX + 16

# Затем мы толкаем их в правильное место (каждый x + 32 перемещает одну панель)

если (j> 31):

modX + = 32

если (j> 63):

modX + = 32

если (j> 95):

modX + = 32

возврат (modX, modY)

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

Шаг 6: Программа правого борта (или: "Вернемся в нужное русло и готовы к пикселям")

Теперь, когда у вас есть матрицы в рабочем состоянии и они готовы к работе, все, что вам нужно сделать, это установить программу правого борта на свой Pi и подготовить ее к работе. Убедитесь, что вы находитесь в домашнем каталоге пользователя pi (cd / home / pi), и выполните следующую команду:

git clone

у вас должна появиться новая папка по правому борту, содержащая три файла: LICENSE.md, README.md и starboard_s16.py. Попробуйте программу правого борта, запустив ее через python:

sudo python./starboard_s16.py

и вы должны получить группу частиц, движущихся с разной скоростью и распадающихся с разной скоростью. Каждые 10 000 тиков или около того (вы можете войти в скрипт python, чтобы отредактировать / изменить это) он будет менять режимы (их четыре: RGB, HSV, Rainbow и Greyscale).

Итак, теперь осталось только запустить код правого борта при запуске. Мы сделаем это, отредактировав (с помощью sudo) /etc/rc.local. Что вы хотите сделать, так это добавить следующую строку прямо перед «exit 0» в скрипте:

python /home/pi/starboard/starboard_s16.py &

После этого перезагрузите пи - как только он выполнит последовательность загрузки, скрипт starboard_s16.py должен запуститься!

Если вы хотите покопаться в скрипте, не стесняйтесь - он распространяется под лицензией GNU GPL 3.0. Если сценарий не запускается для вас или у вас возникли проблемы с ним, дайте мне знать или отправьте сообщение об ошибке на github, и я посмотрю, что я могу сделать, чтобы исправить это!

Последнее (самое), что вы, возможно, захотите сделать, это настроить SSH на пи, чтобы вы могли удаленно войти и безопасно выключить его. Вы / определенно / захотите изменить свой пароль (с помощью команды passwd), и вы можете найти инструкции по включению ssh (также из командной строки) здесь.

Рекомендуемые: