Съдържание:

RPi 3 Starboard / Генератор на частици: 6 стъпки (със снимки)
RPi 3 Starboard / Генератор на частици: 6 стъпки (със снимки)

Видео: RPi 3 Starboard / Генератор на частици: 6 стъпки (със снимки)

Видео: RPi 3 Starboard / Генератор на частици: 6 стъпки (със снимки)
Видео: Большой гид по обновлённому двигателю 1.6 TDI (EA288) для VW, Skoda, Seat, Audi 2024, Юли
Anonim
Image
Image
Сглобете LED платката
Сглобете LED платката

Чувствате ли се отегчени от вашия Raspberry Pi? Готови ли сте да командвате елементарните сили на Вселената, призовавайки и отхвърляйки фотони по желание? Искате ли просто нещо интересно да закачите във всекидневната си или фантастичен проект, който да публикувате във фейсбук, за да покажете на Дениз, че се справяте добре в наши дни, благодаря ви много? Заклещени ли сте в компютърна симулация и изхвърляте часовете, докато не бъдете освободени или изтрити? Ако някои или всички от тях ви описват, тогава [глас на диктора] Добре дошли!

Този урок ще ви покаже как да сглобите и настроите дисплея на генератора на частици, използвайки Raspberry Pi 3 и някои RGB матрични панели. Трябва да ви отнеме между един и два часа, а крайният продукт ще бъде приблизително 30 "x8" (без Pi) и може да се монтира на стена. Това прави доста готина декорация за хол, офис, стая за игри или където и да искате да го поставите.

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

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

Проектът не изисква от вас да запоявате или да имате някакви специфични познания по програмиране; предполага, че знаете как да напишете изображение на microSD карта. Ако не сте сигурни как да направите това, фондацията Raspberry Pi има добър урок тук.

Той също така предполага, че имате основни познания за това как да правите неща от командния ред в Linux, а прохождането на кода предполага, че знаете основите на Python (но - не е нужно да следвате инструкциите за кода, за да можете да изграждате и стартирайте генератора на частици.) Ако се забиете в някоя от стъпките, не се колебайте да зададете въпрос или да публикувате в /r /raspberry_pi (което също е, предполагам, основната аудитория за тази инструкция)

Стъпка 1: Сглобете LED платката

Сглобете LED платката
Сглобете LED платката

Първо, ще сглобите отделните 32x32 LED панели в един голям 128x32 панел. Ще трябва да погледнете дъските си и да намерите малките стрелки, които показват реда на свързване; на моя те са точно до конекторите IDC на HUB75/2x8. Уверете се, че стрелките сочат от мястото, където Rpi ще се свърже (вдясно на снимката по -горе) надолу по дължината на дъската.

Също така ще трябва да свържете захранващите кабели. Повечето от тези кабели имат два женски конектора, които се прикрепят към платките, и един комплект лопатни клеми, който се свързва към източника на захранване. Панелите, с които работя, имат индикатори за 5V и GND почти изцяло скрити под самите конектори, но кабелите се свързват само в една посока. Вие ще искате да се уверите, че свързвате всички 5V заедно и всички GND заедно, защото ако ги захранвате назад, почти сигурно ще ги изпържите.

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

Ще забележите също, че имам два болта, които не са прикрепени към нищо от двата края на дъската; те ще бъдат на върха, след като всичко се преобърне, и ще бъдат използвани за закрепване към стената.

Така че - след като свържете всички панели заедно със скоби, 2x8 IDC кабели и захранващи кабели, сте готови да преминете към следващата стъпка!

Стъпка 2: Подгответе Raspberry Pi

След това ще оставите LED платката настрана (засега) и ще подготвите Pi 3 за работа. Ще използваме Raspbian Stretch Lite и RGB матричната библиотека на Hzeller (вместо матричната библиотека на Adafruit, която е по -стара и неподдържана.)

Първо, ще искате да запишете изображението на Raspbian Lite на SD карта; след като направите това, продължете и свържете монитор и клавиатура към pi и го стартирайте. (Можете също да направите това без глава, или чрез ssh, или чрез сериен конектор, но ако това е вашият начин, вероятно нямате нужда да ви казвам как да го направите.) За това ще ви е необходима интернет връзка; Ако имате wifi, свържете 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 клонинг

Сега трябва да компилираме и инсталираме матричния код. Така че ще влезете в папката, съдържаща библиотеката:

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

и го компилирайте (това може да отнеме минута):

make && make build-python

и инсталирайте връзките на python:

sudo направи install-python

Ако получите някакви грешки при компилирането на библиотечния код, върнете се и се уверете, че сте инсталирали правилно python-dev и python-pil! Свързването на python няма да се компилира без инсталирането на двата пакета.

Също така ще трябва да деактивирате звуковия изход на вашия Pi (вграденият звук пречи на кода на матрицата), като редактирате /boot/config.txt. Потърсете реда, който казва dtparam = аудио = включен и го променете на dtparam = аудио = изключен.

Ако всичко е компилирано ОК (ще получите няколко предупреждения за Wstrict-прототипи) вашето pi трябва да е готово за изпълнение на матричната платка. Продължете и го изключете (sudo shutdown now), изключете го и ние ще свържем светлинната платка към pi в следващата стъпка.

Стъпка 3: Свържете Pi + Matrix Hat + LED Board

Свържете Pi + Matrix Hat + LED Board
Свържете Pi + Matrix Hat + LED Board

Така че, сега, когато вашият Pi е изключен и изключен, нека да свържем матричната шапка към pi и LED платката към матричната шапка. Ако вашият Pi вече не е в неговия случай, сега е подходящият момент да го поставите там.

Инсталирайте матричната шапка, като я подредите с GPIO щифтовете на Pi и я натиснете леко надолу с равномерна сила от двете страни. Уверете се, че щифтовете са подредени правилно, така че женските заглавки на шапката точно да покриват щифтовете GPIO на пи. Ако го обърнете неправилно, това не е катастрофа; просто внимателно го издърпайте и изправете всички извити щифтове.

След като си сложите шапката, поставете Pi отдясно на сглобената LED платка (проверете отново връзките за захранване и се уверете, че стрелките сочат от Pi надолу по дължината на платката) и свържете IDC кабел към матричната шапка.

След това ще искате да свържете лопатовите клеми за захранване към клемния блок на матричната шапка. Имате по два лопатни конектора на всяка страна, но и двамата трябва да се впишат добре там. Разхлабете първо винтовете и - Това трябва да се подразбира - уверете се, че сте поставили 5V клемите в страната, обозначена с + (те трябва да са червени, но - отново - проверете отново конекторите си и не предполагайте, че са произведени правилно) и клемите GND (те трябва да са черни) отстрани с етикет -. След като са там, затегнете винтовете в горната част на клемния блок и трябва да имате нещо, което прилича на изображението на заглавката за тази стъпка.

Сега - може би сте забелязали, че тази конкретна конфигурация оставя половината от терминала на лопатата от двете страни открит, висейки само на милиметри над шапката на матрицата (и не много по -далеч един от друг.) И - лопатите ще бъдат много скоро носещи както няколко волта, така и няколко ампера сурова мощност. Това ли е (чувам да питате от другата страна на екрана) наистина правилният начин да го направите? Дали това е (навеждате се по -близо и шепнете) добра идея?

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

Но - опаковани или разгънати - клемите на лопатата са свързани към клемния блок и ние сме готови да преминем към следващата стъпка.

Стъпка 4: Тествайте RGB матрицата

Сега, когато вашият Pi е свързан към светлинната платка, обърнете дъската и включете отново Pi. Можете да включите матричната шапка, след като Pi е включен; ако включите шапката преди Pi, обаче, Pi ще се опита да се зареди с недостатъчен ток и ще се оплаче горчиво (и може да ви даде паника на ядрото и изобщо да не стартира.)

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

След като Pi се стартира, ние сме готови да тестваме матриците. Отидете там, където се намират пробите за свързване на python (cd/rpi-rgb-led-matrix/bindings/python/sample) и изпробвайте генератора на въртящи се блокове със следната команда:

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

Трябва да го стартирате като sudo, защото библиотеката на матрицата се нуждае от достъп на ниско ниво до хардуера при инициализация. -M определя начина, по който панелите са свързани с pi (в този случай шапка от адафрут), а --led -chain посочва -познахте -колко панела сме свързали заедно. Редовете и колоните на панел по подразбиране са 32, така че сме добри там.

Сега - след като изпълните програмата, едно от двете (или наистина едно от трите) неща ще се случи:

  • Нищо не се случва
  • Получавате хубав въртящ се блок в средата на светлинната ви дъска.
  • Светлинната дъска работи, ъ -ъ, мисля, но изглежда … странно (половината от нея е зелена, някои редове не светят и т.н.)

Ако нищо не се случи или ако панелът изглежда странно, натиснете ctrl+c, за да излезете от примерната програма, изключете pi и проверете всичките си връзки (IDC кабел, захранване, уверете се, че и двете захранвания са включени и т.н.) Уверете се също, че шапката е свързана правилно; ако това не го поправи, преместете го на един панел (не забравяйте да използвате --led-chain 1, когато го тествате) и вижте дали един от панелите може да е лош. Ако ТОВА не работи, вижте съветите на Hzeller за отстраняване на неизправности. ако ТОВА ОЩЕ не работи, опитайте да публикувате в /r /raspberry_pi (или във форумите на Adafruit, ако сте получили панелите си от Adafruit или обмен на стекове и т.н. и т.н.)

Ако работи някак си, но все още изглежда странно (може би като изображението на заглавката за този раздел), след като сте проверили връзките, възможно е всичко да е свързано правилно, панелите да функционират правилно, но нещо друго ще се случи На. Което ще ни отведе до следващата ни стъпка - повече отклонение, отколкото стъпка - по отношение на мултиплексирането и скоростта на сканиране. (Ако вашата LED платка работи добре и не се интересувате от вътрешната работа на тези панели, не се колебайте да пропуснете следващата стъпка.)

Стъпка 5: Скорости на мултиплексиране и сканиране (или: Моментално отклонение по пътя към гроба)

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

За да разберем защо е така, ще отделим минута, за да разгледаме Фил Бърджис от описанието на Adafruit за това как работят тези панели. Ще забележите, че Burgess посочва, че панелите не светят всичките им светодиоди наведнъж - те осветяват набори от редове. Връзката между височината на панела в пиксели и броя редове, които светват наведнъж, се нарича скорост на сканиране. Така например - На панел с размери 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 преобразуване Пиксели (j, k): effJ = j % 32

effK = k % 32

modY = k

modX = j

#modX и modY са модифицираните X и Y;

#effJ и effK се уверете, че се трансформираме в матрица 32x32, преди да натиснете

ако ((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. Това, което искате да направите, е да добавите следния ред точно преди „изход 0“в скрипта:

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

След като направите това, рестартирайте pi - след като премине през последователността на стартиране, скриптът starboard_s16.py трябва да стартира веднага!

Ако искате да се ровите в скрипта, не се колебайте да го направите - той е лицензиран под GNU GPL 3.0. Ако скриптът не работи за вас или имате проблеми с него, не се колебайте да ме уведомите или да изпратите грешка в github и ще видя какво мога да направя, за да го поправя!

(Много) последното нещо, което може да искате да направите, е да настроите SSH на pi, така че да можете да се отдалечите и безопасно да го изключите. Вие / определено / ще искате да промените паролата си (чрез командата passwd) и тук можете да намерите инструкции за активиране на ssh (също от командния ред).

Препоръчано: