Obsah:

Generátor pravoboku / častíc RPi 3: 6 krokov (s obrázkami)
Generátor pravoboku / častíc RPi 3: 6 krokov (s obrázkami)

Video: Generátor pravoboku / častíc RPi 3: 6 krokov (s obrázkami)

Video: Generátor pravoboku / častíc RPi 3: 6 krokov (s obrázkami)
Video: Взлом квантового кода: физик раскрывает реальность 2024, Júl
Anonim
Image
Image
Zostavte LED dosku
Zostavte LED dosku

Nudí vás Raspberry Pi? Ste pripravení ovládať úplne elementárne sily vesmíru, ľubovoľne vyvolávať a odmietať fotóny? Chcete len niečo zaujímavé zavesiť vo svojej obývačke, alebo efektný projekt, ktorý by ste zverejnili na Facebooku, aby ste Denise ukázali, že sa vám v dnešnej dobe darí, ďakujem vám veľmi pekne? Ste uväznení v počítačovej simulácii a mrháte hodiny, kým nie ste oslobodení alebo odstránení? Ak vás niektorý alebo všetky tieto znaky charakterizujú, potom [hlas hlásateľa] Vitajte!

Tento tutoriál vám ukáže, ako zostaviť a nastaviť displej generátora častíc pomocou Raspberry Pi 3 a niektorých maticových panelov RGB. Malo by vám to trvať jednu až dve hodiny a hotový výrobok bude možné namontovať na stenu približne 30 x 8 palcov (bez Pi). Je to skvelá dekorácia do obývačky, kancelárie, herne alebo kamkoľvek chcete.

Skôr ako začnete, tu je to, čo budete potrebovať a aké sú približné náklady:

  • Rpi 3 + karta SD + puzdro + napájací zdroj: 70 dolárov (od spoločnosti Canakit, ale súčiastky pravdepodobne získate lacnejšie, ak si ich kúpite samostatne.)
  • 4x 32x32 RGB LED matica (najlepšie p6 indoor s 1/16 skenovaním): 80-100 dolárov dodávané na Alibaba alebo Aliexpress; 160 dolárov na Adafruit alebo Sparkfun.
  • Klobúk Adafruit RGB Matrix: 25 dolárov
  • Napájanie 5V 4A: 15 dolárov
  • Klipy vytlačené 3D: 1 dolár (slúžia na pripojenie panelov a zavesenie na stenu; ak nemáte prístup k 3D tlačiarni, môžete ich držať dohromady pomocou furringového pásu a niektorých konzol z železiarstva zavesiť zo steny. Pokúsil som sa nájsť návrhové súbory alebo.stls pre tieto, ale zdá sa, že prešli zo zeme. Klipy sa však dajú veľmi ľahko modelovať.)
  • 14x skrutky M4x10: 5 dolárov
  • Štyri káble IDC 4x8 a tri napájacie káble pre matice RGB (neviem, ako sa to volá!). Mali by byť súčasťou vašich panelov LED.
  • Celkom: Asi 200 dolárov, dajte alebo vezmite.

Projekt nevyžaduje, aby ste spájkovali alebo mali akékoľvek špecifické znalosti programovania; Predpokladá sa, že viete, ako napísať obrázok na kartu microSD. Ak si nie ste istí, ako to urobiť, nadácia Raspberry Pi tu má dobrý návod.

Predpokladá sa tiež, že máte základné znalosti o tom, ako postupovať v príkazovom riadku v systéme Linux, a návod v kóde predpokladá, že ovládate základy jazyka Python (ale - nemusíte postupovať podľa kódu, aby ste mohli stavať a spustite generátor častíc.) Ak narazíte na niektorý z krokov, pokojne položte otázku alebo príspevok v /r /raspberry_pi (čo je tiež, predpokladám, hlavné publikum pre tento návod)

Krok 1: Zostavte dosku LED

Zostavte LED dosku
Zostavte LED dosku

Najprv zostavíte jednotlivé panely LED 32 x 32 v jeden veľký panel s rozmermi 128 x 32 pixlov. Budete sa musieť pozrieť na svoje dosky a nájsť malé šípky, ktoré označujú poradie pripojenia; na mojom sa nachádzajú hneď vedľa konektorov HUB75/2x8 IDC. Uistite sa, že šípky smerujú od miesta, kde sa Rpi bude spájať (na fotografii vyššie na obrázku vpravo), po celej dĺžke dosky.

Budete tiež musieť pripojiť napájacie káble. Väčšina týchto káblov má dva zásuvkové konektory, ktoré sa pripájajú k doskám, a jednu sadu konektorov rýľa, ktoré sa pripájajú k zdroju energie. Panely, s ktorými pracujem, majú indikátory 5V a GND takmer úplne skryté pod samotnými konektormi, ale káble sa pripájajú iba jedným smerom. Budete sa chcieť uistiť, že spájate všetkých 5V dohromady a všetky GND dohromady, pretože ak ich napájate dozadu, takmer určite ich usmažíte.

Pretože napájacie káble dodávané s mojimi doskami boli také krátke, musel som jeden predĺžiť vložením hrotov konektora rýľa do konektora druhého (Toto je celkom jednoduché - možno budete musieť ohnúť koncovky rýľa mierne dovnútra, ale ja ' vložil som obrázok len pre prípad). Skončil som s dvoma sadami koncoviek a jedným konektorom 2x8 IDC vpravo od mojej teraz predĺženej dosky LED.

Tiež si všimnete, že mám dva skrutky, ktoré nie sú pripevnené k ničomu na oboch koncoch dosky; tieto budú na vrchu, keď sa celá vec prevráti, a budú použité na pripevnenie k stene.

Takže - keď prepojíte všetky panely spolu so sponami, káblami 2x8 IDC a napájacími káblami, môžete prejsť na ďalší krok!

Krok 2: Pripravte si Raspberry Pi

Ďalej odložíte LED dosku (zatiaľ) a pripravte Pi 3 na spustenie. Budeme používať maticovú knižnicu RGB Raspbian Stretch Lite a hzeller (namiesto matricovej knižnice Adafruit, ktorá je staršia a neudržiavaná.)

Najprv budete chcieť napísať obrázok Raspbian Lite na kartu SD; Akonáhle to urobíte, pokračujte a pripojte monitor a klávesnicu k pí a spustite ho. (Môžete to urobiť aj bez hlavy, a to buď cez ssh alebo sériový konektor, ale ak sa týmto smerom uberáte, pravdepodobne nepotrebujete, aby som vám povedal, ako to urobiť.) Na to budete potrebovať internetové pripojenie; Ak máte wifi, pripojte Pi k svojej bezdrôtovej sieti úpravou /etc/wpa_supplicant/wpa_supplicant.conf a spustením wpa_cli -i wlan0 prekonfigurujte. (Ak ste to nikdy neurobili, pokyny nájdete tu).

Hneď ako sa pripojíte k internetu, aktualizujeme nastavenia úložiska dpkg a stiahneme potrebné knižnice spustením nasledujúcich príkazov:

sudo apt-get aktualizácia

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

klon git

Teraz musíme skompilovať a nainštalovať kód matice. Prejdete teda do priečinka obsahujúceho knižnicu:

cd rpi-rgb-led-matica

a skompilovať to (môže to trvať minútu):

make && make build-python

a nainštalujte väzby pythonu:

sudo make install-python

Ak sa pri kompilácii kódu knižnice vyskytnú chyby, vráťte sa a uistite sa, že ste správne nainštalovali python-dev a python-pil! Väzby python sa nebudú kompilovať bez nainštalovania oboch týchto balíkov.

Budete tiež musieť vypnúť zvukový výstup Pi (integrovaný zvuk interferuje s kódom matice) úpravou súboru /boot/config.txt. Vyhľadajte riadok s textom dtparam = audio = zapnutý a zmeňte ho na dtparam = audio = vypnutý.

Ak je všetko v poriadku (dostanete niekoľko upozornení na protokoly Wstrict), vaše pi by malo byť pripravené na spustenie maticovej dosky. Pokračujte a vypnite ho (okamžité vypnutie), odpojte ho a v ďalšom kroku pripojíme svetelnú dosku k pí.

Krok 3: Pripojte dosku Pi + Matrix Hat + LED

Pripojte dosku Pi + Matrix Hat + LED
Pripojte dosku Pi + Matrix Hat + LED

Teraz, keď je váš Pi vypnutý a odpojený, pripojme maticový klobúk k pí a LED dosku k maticovému klobúku. Ak vaše Pi ešte nie je v poriadku, teraz je vhodný čas ho tam vložiť.

Nainštalujte maticový klobúk tak, že ho zarovnáte s kolíkmi GPIO na Pi a jemne ho zatlačíte nadol rovnomernou silou na oboch stranách. Dbajte na to, aby boli kolíky zarovnané správne, aby ženské záhlavia na klobúku presne zakrývali kolíky GPIO na pí. Ak to rozložíte nesprávne, nie je to katastrofa; stačí ho jemne stiahnuť a narovnať všetky kolíky, ktoré sa ohli.

Akonáhle si nasadíte klobúk, dajte Pi napravo od zostavenej dosky LED (dvakrát znova skontrolujte napájanie a uistite sa, že šípky smerujú od Pi nadol po celej doske) a pripojte IDC. kábel do maticového klobúka.

Ďalej budete chcieť pripojiť svorkovnice pre napájanie do svorkovnice maticového klobúka. Na každej strane máte dva rydlové konektory, ale oba by tam mali dobre zapadnúť. Najprv uvoľnite skrutky a - Malo by to byť samozrejmé - uistite sa, že ste 5V svorky vložili na stranu označenú + (mali by byť červené, ale - znova - dvakrát skontrolujte svoje konektory a nepredpokladajte, že boli vyrobené správne) a svorky GND (tieto by mali byť čierne) na boku označené -. Akonáhle sú tam, utiahnite skrutky v hornej časti svorkovnice a mali by ste mať niečo, čo vyzerá ako obrázok hlavičky pre tento krok.

Teraz - možno ste si všimli, že táto konkrétna konfigurácia necháva odhalenú polovicu koncového rydla na oboch stranách a vznáša sa iba milimetre nad klobúkom matice (a nie príliš ďaleko od seba.) A - rydlové terminály budú veľmi skoro nesúci niekoľko voltov a niekoľko zosilňovačov surovej energie. Je to (počujem, ako sa pýtate z druhej strany obrazovky) skutočne ten správny spôsob, ako to urobiť? Je to, (nakloníte sa bližšie a šepkáte), dobrý nápad?

A odpoveď je (odpovedám a pokrčím ramenami) - nie, nie je. Správny spôsob, ako to urobiť, je odizolovať svorky rýľa z napájacích káblov a znova ich zalisovať do správneho konektora pre danú svorkovnicu (alebo ich ponechať ako holé vodiče a pripojiť ich bez konektora do bloku). V opačnom prípade by ste mohli obnažiť teplom zmrštiteľnú hadičku okolo odhalenej strany konektora rýľa alebo ho jednoducho zabaliť do elektrickej pásky. Ale svet padol a človek je lenivý a ješitný, takže som to neurobil.

Ale - zabalené alebo rozbalené - svorky rýľa sú pripojené k svorkovnici a sme pripravení prejsť na ďalší krok.

Krok 4: Otestujte maticu RGB

Teraz, keď je váš Pi pripojený k svetelnej doske, otočte dosku a zapnite Pi znova. Maticový klobúk môžete napájať po zapojení Pi; Ak však napájate klobúk pred Pi, Pi sa pokúsi zaviesť systém s nedostatočným prúdom a bude sa trpko sťažovať (a môže z vás vyvolať paniku z jadra a vôbec sa nespustí.)

Ak máte problém so spustením Pi so zapnutým maticovým klobúkom, uistite sa, že používate dostatočne silný napájací zdroj pre Pi (2A+ by malo byť dobré) a skúste zapojiť napájanie pre klobúk aj pre Pripojte napájací kábel alebo predlžovací kábel k spoločnému napájaniu.

Akonáhle sa Pi naštartuje, sme pripravení otestovať matice. Prejdite na miesto, kde sa nachádzajú vzorky väzby pythonu (cd/rpi-rgb-led-matrix-bindings/python/sample) a vyskúšajte generátor rotujúcich blokov pomocou nasledujúceho príkazu:

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

Musíte to spustiť ako sudo, pretože maticová knižnica potrebuje pri inicializácii prístup na nízkej úrovni k hardvéru. -M určuje spôsob pripojenia panelov k pí (v tomto prípade klobúk adafruit) a --led -reťazec určuje -uhádli ste -koľko panelov sme prepojili. Riadky a stĺpce na paneli majú predvolene 32, takže sme tam dobrí.

Teraz - keď spustíte program, stane sa jedna z dvoch (alebo skutočne jedna z troch) vecí:

  • Nič sa nedeje
  • V strede vašej svetelnej tabule získate pekný otočný blok.
  • Svetelná tabuľa funguje, myslím si, ale vyzerá … divne (polovica je zelená, niektoré riadky nesvietia atď.)

Ak sa nič nestane alebo ak panel vyzerá divne, stlačením klávesovej skratky ctrl+c ukončíte ukážkový program, vypnete pí a skontrolujete všetky svoje pripojenia (kábel IDC, napájanie, uistite sa, že sú zapojené obidva zdroje napájania atď.) Tiež sa uistite, že je klobúk správne pripojený; ak sa tým problém nevyrieši, položte ho na jeden panel (pri testovaní použite --led-chain 1) a zistite, či jeden z panelov nie je zlý. Ak to nefunguje, prečítajte si tipy na riešenie problémov spoločnosti hzeller. ak TOTO stále nefunguje, skúste odoslať príspevok na adresu /r /raspberry_pi (alebo na fóra Adafruit, ak máte panely od spoločnosti Adafruit alebo výmenu komínov atď.)

Ak to funguje, ale napriek tomu vyzerá divne (možno ako obrázok hlavičky pre túto časť), aj keď ste skontrolovali pripojenia, je možné, že máte všetko správne pripojené, panely správne fungujú, ale niečo iné sa chystá na. Čím sa dostaneme k ďalšiemu kroku - viac odklonu než o krok - k rýchlosti multiplexovania a skenovania. (Ak vaša LED dióda funguje dobre a vnútorné fungovanie týchto panelov vás nezaujíma, ďalší krok preskočte.)

Krok 5: Multiplexovanie a ceny skenovania (alebo: chvíľkové odklonenie na ceste do hrobu)

Jednou z chýb, ktorých som sa dopustil pri objednávke svojej prvej sady panelov mimo Alibaba, je, že som dostal vonkajšie panely (prečo nie, pomyslel som si - sú vodotesné a jasnejšie!). A keď som ich zapojil do maticového klobúka, veci vyzerali.. zle.

Aby sme pochopili, prečo je to tak, chvíľu sa pozrieme na Phila Burgessa z Adafruitovho popisu fungovania týchto panelov. Všimnite si toho, že Burgess upozorňuje, že panely nesvietia všetky ich LED diódy naraz - rozsvietia sady riadkov. Vzťah medzi výškou panelu v pixeloch a počtom riadkov, ktoré sa rozsvietia naraz, sa nazýva rýchlosť skenovania. Napríklad - Na paneli 32 x 32 so skenovaním 1/16 sa naraz rozsvietia dva riadky (1 a 17, 2 a 18, 3 a 19 atď.), Úplne nadol, a potom sa ovládač opakuje.. Väčšina knižníc, ktoré poháňajú matice RGB, je postavená pre panely, kde je rýchlosť skenovania 1/2 výšky v pixeloch - to znamená, že poháňajú dva rady diód LED naraz.

Vonkajšie panely (a niektoré vnútorné panely - pred objednaním sa uistite, že ste si preštudovali technické údaje) majú rýchlosť skenovania 1/4 výšky v pixeloch, čo znamená, že očakávajú, že sa budú riadiť štyri riadky naraz. Vďaka tomu sú jasnejšie (čo je dobré), ale veľa štandardných kódov s nimi nefunguje (čo je zlé). Okrem toho majú tendenciu mať pixely interne mimo prevádzky, čo vyžaduje softvérovú transformáciu hodnôt x a y, aby sa oslovili správne pixely. Prečo sú vyrobené týmto spôsobom? Netuším. Vieš? Ak áno, povedzte mi to. V opačnom prípade to musí zostať záhadou.

Ak teda máte jeden z týchto podivných vonkajších panelov, máte (pravdepodobne) šťastie! hzeller nedávno pridal do svojej knižnice podporu bežných konfigurácií týchto typov panelov. Môžete si o tom prečítať viac na stránke github projektu, ale do vzorového kódu môžete odovzdať --led-multiplexing = {0, 1, 2, 3} (možno budete musieť tiež predstierať, že máte dvojitý reťazec panelov s polovičnou dĺžkou) a malo by to fungovať.

Existujú však niektoré vzorce transformácie pixelov, ktoré nie sú podporované - a (hádajte čo) moje panely jeden z nich majú! Musel som teda napísať svoj vlastný transformačný kód (tiež som - z akéhokoľvek dôvodu - musel knižnici povedať, aby sa správala tak, ako keby som spojil osem panelov 16x32). čo je nasledovné:

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

effK = k % 32

modY = k

modX = j

#modX a modY sú upravené X a Y;

#effJ a effK zaisťujú, že sa pred tlačením transformujeme v matici 32 x 32

ak ((effJ)> 15):

modX = modX + 16

ak ((effK)> 7):

modY = modY - 8

modX = modX + 16

ak ((effK)> 15):

modX = modX - 16

ak ((effK)> 23):

modY = modY - 8

modX = modX + 16

#Potom ich posunieme na správne miesto (každé x+32 presunie o jeden panel)

ak (j> 31):

modX += 32

ak (j> 63):

modX += 32

ak (j> 95):

modX += 32

návrat (modX, modY)

Ak máte panel ako ja, môže to fungovať. Ak tomu tak nie je, budete musieť napísať svoj vlastný - tak, viete, veľa šťastia a božskej rýchlosti.

Krok 6: Program na pravej strane (alebo: Späť na trať a pripravený na Pixel)

Teraz, keď máte svoje matice funkčné a pripravené na použitie, stačí, ak na svoj Pi umiestnite pravý program a pripravíte sa. Uistite sa, že sa nachádzate v domovskom adresári používateľa pi (cd /home /pi) a spustite nasledujúci príkaz:

klon git

mali by ste mať nový priečinok, naľavo, ktorý obsahuje tri súbory: LICENSE.md, README.md a starboard_s16.py. Vyskúšajte pravý program spustením cez python:

sudo python./starboard_s16.py

a mali by ste dostať zväzok častíc, ktoré sa pohybujú rôznymi rýchlosťami a rozpadajú sa rôznymi rýchlosťami. Každých 10 000 zaškrtnutí (môžete to zmeniť/zmeniť v skripte pythonu) zmení režimy (existujú štyri: RGB, HSV, Rainbow a odtieň šedej).

Takže teraz zostáva už len jediné: spustiť pravý kód pri štarte. Urobíme to úpravou (pomocou sudo) /etc/rc.local. Čo chcete urobiť, je pridať nasledujúci riadok tesne pred „exit 0“v skripte:

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

Akonáhle to urobíte, reštartujte pi - akonáhle to prejde bootovacou sekvenciou, skript starboard_s16.py by sa mal začať hneď hore!

Ak si chcete v skripte pokakať, pokojne to urobte - je licencovaný pod GNU GPL 3.0. Ak sa vám skript nespustí alebo s ním máte problémy, dajte mi vedieť alebo pošlite chybu na github a ja sa pozriem, čo môžem urobiť, aby som to napravil!

(Veľmi) posledná vec, ktorú by ste mohli chcieť urobiť, je nastaviť SSH na pi, aby ste ho mohli diaľkovo ovládať a bezpečne vypnúť. Heslo / určite / budete chcieť zmeniť (pomocou príkazu passwd) a pokyny na povolenie ssh (aj z príkazového riadka) nájdete tu.

Odporúča: