Cuprins:

Generator de tribord / particule RPi 3: 6 pași (cu imagini)
Generator de tribord / particule RPi 3: 6 pași (cu imagini)

Video: Generator de tribord / particule RPi 3: 6 pași (cu imagini)

Video: Generator de tribord / particule RPi 3: 6 pași (cu imagini)
Video: NOMADS 2 - Dark Land (Complete Audiobook -English) 2024, Noiembrie
Anonim
Image
Image
Asamblați placa LED
Asamblați placa LED

Te simți plictisit de Raspberry Pi? Ești gata să comanzi forțele elementare ale universului, convocând și respingând fotoni după bunul plac? Vrei doar ceva interesant de atârnat în sufrageria ta sau un proiect de lux pe care să-l postezi pe facebook pentru a-i arăta Denisei că te descurci bine în aceste zile, mulțumesc mult? Sunteți prins într-o simulare pe computer și eliminați orele până când sunteți eliberat sau șters? Dacă oricare sau toate acestea vă descriu, atunci [vocea crainicului] Bine ați venit!

Acest tutorial vă va arăta cum să asamblați și să configurați un afișaj generator de particule utilizând un Raspberry Pi 3 și câteva panouri matrice RGB. Ar trebui să vă ia între o oră și două ore, iar produsul finit va fi de aproximativ 30 "x8" (fără a include Pi) și poate fi montat pe perete. Face un decor destul de cool pentru o cameră de zi, un birou, o sală de jocuri sau oriunde altundeva vrei să o pui.

Înainte de a începe, iată de ce veți avea nevoie și care sunt costurile aproximative:

  • Rpi 3 + card SD + carcasă + sursă de alimentare: 70 USD (de la Canakit, dar probabil puteți obține piesele mai ieftine dacă le cumpărați separat).
  • 4x Matrix LED 32x32 RGB (de preferință p6 interior cu scanare 1/16): 80 $ - 100 $ expediat pe Alibaba sau Aliexpress; 160 USD pe Adafruit sau Sparkfun.
  • Pălărie Adafruit RGB Matrix: 25 USD
  • Sursă de alimentare 5V 4A: 15 USD
  • Clipuri tipărite 3D: 1 USD (acestea sunt pentru conectarea panourilor și agățarea lor pe perete; dacă nu aveți acces la o imprimantă 3D, puteți utiliza o bandă de blană pentru a le ține împreună și câteva paranteze de la magazinul de hardware la agățați-l de perete. Am încercat să găsesc fișierele de proiectare sau fișierele.stls pentru acestea, dar par să fi trecut de pe pământ. Clemele sunt destul de ușor de modelat, totuși.)
  • 14 șuruburi M4x10: 5 dolari
  • Patru cabluri IDC 4x8 și trei cabluri de alimentare pentru matricile RGB (nu știu cum se numesc acestea!). Acestea ar fi trebuit să fie incluse împreună cu panourile LED.
  • Total: aproximativ 200 USD, dați sau luați.

Proiectul nu necesită să lipiți sau să aveți cunoștințe specifice de programare; presupune că știi cum să scrii o imagine pe un card microSD. Dacă nu sunteți sigur cum să faceți acest lucru, fundația Raspberry Pi are un tutorial bun aici.

De asemenea, presupune că aveți cunoștințe de bază despre cum să faceți lucruri din linia de comandă în Linux, iar procedura de trecere a codului presupune că cunoașteți elementele de bază ale Python (dar - nu este necesar să urmați procedura de cod pentru a putea construi și rulați generatorul de particule.) Dacă rămâneți blocat pe oricare dintre pași, nu ezitați să puneți o întrebare sau să postați în / r / raspberry_pi (care este, de asemenea, presupun, publicul principal pentru acest instructable)

Pasul 1: Asamblați placa LED

Asamblați placa LED
Asamblați placa LED

Mai întâi, veți asambla panourile LED individuale de 32x32 într-un singur panou mare de 128x32. Va trebui să vă uitați la plăcile dvs. și să găsiți săgețile mici care indică ordinea conexiunii; la mine sunt chiar lângă conectorii IDC HUB75 / 2x8. Asigurați-vă că aveți săgețile îndreptate de unde se va conecta Rpi (în dreapta în fotografia de mai sus) pe lungimea plăcii.

De asemenea, va trebui să conectați cablurile de alimentare. Cele mai multe dintre aceste cabluri au doi conectori de sex feminin care se atașează la plăci și un set de terminale de pică care se atașează la sursa de alimentare. Panourile cu care lucrez au indicatorii pentru 5V și GND aproape complet ascunși sub conectorii înșiși, dar cablurile se conectează doar într-o singură direcție. Veți dori să vă asigurați că conectați toate 5V-urile împreună și toate GND-urile împreună, deoarece dacă le alimentați înapoi, cu siguranță le veți prăji.

Deoarece cablurile de alimentare incluse cu plăcile mele erau atât de scurte, a trebuit să extind una prin introducerea vârfurilor terminalului pică în conectorul altuia (Acest lucru este destul de simplu - s-ar putea să trebuiască să îndoiți terminalele pică ușor spre interior, dar eu ' Am inclus o poză pentru orice eventualitate). Am sfârșit cu două seturi de terminale spade și un conector 2x8 IDC oprit în dreapta plăcii mele LED acum alungite.

Veți observa, de asemenea, că am două șuruburi care nu sunt atașate la nimic la ambele capete ale plăcii; acestea vor fi în partea de sus odată ce totul este răsturnat și vor fi folosite pentru a-l atașa de perete.

Deci - după ce ați conectat toate panourile împreună cu cleme, cabluri IDC 2x8 și cabluri de alimentare, sunteți gata să treceți la pasul următor!

Pasul 2: Pregătiți Raspberry Pi

Apoi, veți lăsa deoparte placa LED (deocamdată) și veți pregăti Pi 3 pentru al rula. Vom folosi Raspbian Stretch Lite și biblioteca matricială RGB a hzeller-ului (mai degrabă decât biblioteca matricială Adafruit, care este mai veche și neîntreținută).

În primul rând, veți dori să scrieți imaginea Raspbian Lite pe un card SD; după ce ați făcut acest lucru, continuați și conectați un monitor și tastatură la pi și porniți-l. (Puteți face acest lucru fără cap, fie prin ssh, fie printr-un conector serial, dar dacă așa mergeți, probabil că nu veți avea nevoie să vă spun cum să faceți acest lucru.) Pentru aceasta, veți avea nevoie de o conexiune la internet.; Dacă aveți Wi-Fi, conectați Pi la rețeaua dvs. wireless editând /etc/wpa_supplicant/wpa_supplicant.conf și executând wpa_cli -i wlan0 reconfigure. (Dacă nu ați făcut niciodată acest lucru, puteți obține instrucțiuni aici).

După ce vă conectați la internet, vom actualiza setările depozitului dpkg și vom descărca bibliotecile de care avem nevoie executând următoarele comenzi:

sudo apt-get update

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

git clone

Acum trebuie să compilăm și să instalăm codul matricei. Deci, veți intra în dosarul care conține biblioteca:

cd rpi-rgb-led-matrix

și compilați-l (poate dura un minut):

make && make build-python

și instalați legăturile python:

sudo make install-python

Dacă primiți erori în timp ce compilați codul bibliotecii, reveniți și asigurați-vă că ați instalat corect python-dev și python-pil! Legările python nu se vor compila fără ambele pachete instalate.

De asemenea, va trebui să dezactivați ieșirea sonoră a lui Pi (sunetul integrat interferează cu codul matricei) editând /boot/config.txt. Căutați linia care spune dtparam = audio = on și schimbați-l în dtparam = audio = off.

Dacă totul a fost compilat OK (veți primi câteva avertismente despre prototipurile Wstrict), pi-ul dvs. ar trebui să fie gata să ruleze placa matricială. Continuați și opriți-l (oprire sudo acum), deconectați-l și vom conecta placa luminoasă la pi în pasul următor.

Pasul 3: Conectați Pi + Matrix Hat + LED Board

Conectați Pi + Matrix Hat + placa LED
Conectați Pi + Matrix Hat + placa LED

Deci, acum că Pi-ul tău este oprit și deconectat, să conectăm pălăria matrice la pi și placa LED la pălăria matrice. Dacă Pi-ul dvs. nu este deja în acest caz, este momentul potrivit să îl puneți acolo.

Instalați pălăria matrice aliniată cu pinii GPIO de pe Pi și împingând-o ușor în jos cu forță uniformă de ambele părți. Asigurați-vă că pinii sunt aliniați corect, astfel încât antetele feminine de pe pălărie să acopere exact pinii GPIO de pe pi. Dacă îl aliniați greșit, nu este o catastrofă; doar trageți-l ușor înapoi și îndreptați orice știfturi care s-au îndoit.

După ce ați pus pălăria, puneți Pi în dreapta plăcii LED asamblate (verificați din nou conexiunile de alimentare și asigurați-vă că săgețile sunt îndreptate de la Pi pe lungimea plăcii) și conectați IDC-ul cablu la pălăria matricei.

Apoi, veți dori să conectați terminalele spade pentru alimentare la blocul de terminale al pălăriei matrice. Aveți doi conectori pe fiecare parte, dar ar trebui să se potrivească amândoi acolo. Slăbiți mai întâi șuruburile și - Acest lucru ar trebui să fie de la sine înțeles - asigurați-vă că ați pus terminalele de 5V în partea etichetată + (acestea ar trebui să fie roșii, dar - din nou - verificați dublu conectorii și nu presupuneți că au fost fabricați corect) și terminalele GND (acestea ar trebui să fie negre) în partea etichetată -. Odată ce sunt acolo, strângeți șuruburile de deasupra blocului de borne și ar trebui să aveți ceva care seamănă cu imaginea antetului pentru acest pas.

Acum - este posibil să fi observat că această configurație specială lasă expusă jumătate din terminalul pică de fiecare parte, plutind la doar milimetri deasupra pălăriei matricei (și nu mult mai departe una de cealaltă) ȘI - terminalele pică vor fi foarte curând purtând atât câteva volți, cât și câteva amperi de Putere brută. Este acesta, (vă aud întrebând din cealaltă parte a ecranului), într-adevăr, modul corect de a o face? Este, (te apleci mai aproape și șoptești), O idee bună?

Și răspunsul este (răspund, ridicând din umeri) - nu, nu este. Modalitatea corectă de a face acest lucru ar fi dezbrăcarea terminalelor de spade de pe cablurile de alimentare și re-sertizarea lor în conectorul corect pentru acel bloc de terminale (sau să le lăsați ca fire goale și să le conectați fără un conector în bloc). În caz contrar, ați putea pune niște tuburi termocontractibile în jurul părții expuse a conectorului pică sau doar să o înfășurați în bandă electrică. Dar lumea a căzut și omul este leneș și zadarnic, așa că nu am făcut asta.

Dar - înfășurate sau despachetate - terminalele pică sunt conectate la blocul de terminale și suntem gata să trecem la pasul următor.

Pasul 4: Testați matricea RGB

Acum, când Pi-ul dvs. este conectat la placa luminoasă, răsturnați placa și porniți din nou Pi-ul. Puteți alimenta pălăria matricei după ce Pi este conectat; dacă porniți pălăria înainte de Pi, totuși, Pi va încerca să pornească cu un curent insuficient și se va plânge cu amărăciune (și vă poate oferi o panică de nucleu și nu va porni deloc.)

Dacă aveți probleme cu pornirea Pi-ului cu pălăria matrice, asigurați-vă că utilizați o sursă de alimentare suficientă pentru Pi (2A + ar trebui să fie bună) și încercați să conectați atât sursa de alimentare pentru pălărie, cât și pentru Pii în aceeași bandă de alimentare sau cablu prelungitor și alimentând-le împreună.

Odată ce Pi a pornit, suntem gata să testăm matricile. Mergeți acolo unde sunt mostrele de legare python (cd / rpi-rgb-led-matrix / bindings / python / samples) și încercați generatorul de blocuri rotative cu următoarea comandă:

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

Trebuie să îl rulați ca sudo, deoarece biblioteca de matrice are nevoie de acces la nivel scăzut la hardware la inițializare. -M specifică modul în care panourile sunt conectate la pi (în acest caz, o pălărie de adafruit) și --led-chain specifică - ați ghicit - câte panouri am înlănțuit. Rândurile și coloanele pe panou sunt implicite la 32, deci suntem buni acolo.

Acum - odată ce ați executat programul, se va întâmpla unul din două (sau, într-adevăr, unul din trei) lucruri:

  • Nimic nu se intampla
  • Veți obține un bloc rotativ frumos în mijlocul plăcii de lumină.
  • Pensiunea funcționează, uh, cred, dar arată … ciudat (jumătate din ea este verde, unele rânduri nu se aprind etc.)

Dacă nu se întâmplă nimic sau dacă panoul pare ciudat, apăsați ctrl + c pentru a ieși din programul de eșantionare, opriți pi și verificați toate conexiunile (cablu IDC, alimentare, asigurați-vă că ambele surse de alimentare sunt conectate etc.) De asemenea, asigurați-vă că pălăria este conectată corect; dacă acest lucru nu o rezolvă, duceți-l la un panou (asigurați-vă că utilizați --led-chain 1 când îl testați) și vedeți dacă unul dintre panouri ar putea fi rău. Dacă THAT nu funcționează, consultați sfaturile de depanare ale hzeller-ului. dacă THAT STILL încă nu funcționează, încercați să postați pe / r / raspberry_pi (sau pe forumurile Adafruit, dacă ați primit panourile dvs. de la Adafruit sau de la stack exchange, etc.)

Dacă funcționează într-un fel, dar pare ciudat (poate ca imaginea antetului pentru această secțiune) după ce ați verificat conexiunile, este posibil să aveți totul conectat corect, că panourile funcționează corect, dar că altceva merge pe. Ceea ce ne va duce la următorul nostru pas - mai mult o diversiune decât un pas - cu privire la ratele de multiplexare și scanare. (Dacă placa dvs. LED funcționează bine și nu sunteți interesat de funcționarea interioară a acestor panouri, nu ezitați să treceți la următorul pas.)

Pasul 5: Multiplexarea și ratele de scanare (sau: o diversiune momentană pe drumul spre mormânt)

Deci, una dintre greșelile pe care le-am făcut când am comandat primul set de panouri de pe Alibaba este că am panouri exterioare (de ce nu, m-am gândit - sunt rezistente la apă și mai luminoase!). Și, când le-am conectat la pălăria mea matricială, lucrurile arătau … nu bine.

Pentru a înțelege de ce este acest lucru, vom lua un minut să ne uităm la Phil Burgess din descrierea Adafruit a modului în care funcționează aceste panouri. Veți observa că Burgess subliniază că panourile nu aprind toate LED-urile lor simultan - aprind seturi de rânduri. Relația dintre înălțimea panoului în pixeli și numărul de rânduri care se aprind simultan se numește rata de scanare. Deci, de exemplu - pe un panou de 32x32 cu scanare 1/16, două rânduri (1 și 17, 2 și 18, 3 și 19, etc.) sunt aprinse simultan, până la bord, apoi controlerul repetă. Majoritatea bibliotecilor care conduc matrici RGB sunt construite pentru panouri unde rata de scanare este 1/2 din înălțimea în pixeli - adică conduc două rânduri de LED-uri simultan.

Panourile exterioare (și unele panouri interioare - asigurați-vă că vă uitați la specificații înainte de a comanda) au rate de scanare care sunt 1/4 din înălțimea în pixeli, ceea ce înseamnă că se așteaptă ca patru linii să fie conduse simultan. Acest lucru le face mai luminoase (ceea ce este bun), dar face ca o mulțime de coduri standard să nu funcționeze cu ele (ceea ce este rău). În plus, acestea tind să aibă pixelii dezordonați la nivel intern, ceea ce necesită transformarea valorilor x și y în software pentru a aborda pixelii potriviți. De ce sunt făcute astfel? Nu am nici o idee. Tu stii? Dacă da, vă rog să-mi spuneți. Altfel va trebui doar să rămână un mister.

Deci, dacă aveți unul dintre aceste panouri ciudate pentru exterior, sunteți (probabil) norocos! hzeller a adăugat recent suport pentru configurațiile obișnuite ale acestor tipuri de panouri în biblioteca sa. Puteți citi mai multe despre aceasta pe pagina github pentru proiect, dar puteți trece --led-multiplexing = {0, 1, 2, 3} la codul eșantion (poate fi necesar să vă prefaceți ca și cum ați avea un lanț dublu de panouri cu jumătate de lungime) și ar trebui să funcționeze.

Există însă câteva modele de transformare a pixelilor care nu sunt acceptate - și (ghici ce) panourile mele au unul dintre ele! Așadar, a trebuit să-mi scriu propriul cod de transformare (de asemenea - pentru orice motiv - trebuie să spun bibliotecii să acționeze ca și cum aș avea opt panouri 16x32 înlănțuite). care este după cum urmează:

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

effK = k% 32

modY = k

modX = j

#modX și modY sunt X și Y modificate;

#effJ și effK ne asigurăm că ne transformăm într-o matrice de 32x32 înainte de a împinge

dacă ((effJ)> 15):

modX = modX + 16

dacă ((effK)> 7):

modY = modY - 8

modX = modX + 16

dacă ((effK)> 15):

modX = modX - 16

dacă ((effK)> 23):

modY = modY - 8

modX = modX + 16

#Apoi, îi împingem la locația corectă (fiecare x + 32 mută un panou)

dacă (j> 31):

modX + = 32

dacă (j> 63):

modX + = 32

dacă (j> 95):

modX + = 32

return (modX, modY)

Dacă aveți un panou ca al meu, acest lucru ar putea funcționa pentru el. În caz contrar, va trebui să-ți scrii a ta - deci, știi, noroc și viteză de zeu.

Pasul 6: Programul Starboard (sau: Înapoi pe pistă și gata la pixeli)

Acum că aveți matricile operaționale și gata de pornire, tot ce trebuie să faceți este să puneți programul de tribord pe Pi și să îl pregătiți. Asigurați-vă că vă aflați în directorul principal al utilizatorului pi (cd / home / pi) și rulați următoarea comandă:

git clone

ar trebui să aveți un folder nou, tribord, care conține trei fișiere: LICENSE.md, README.md și starboard_s16.py. Încercați programul tribord rulându-l prin python:

sudo python./starboard_s16.py

și ar trebui să obțineți o grămadă de particule care se mișcă la viteze diferite și se descompun la viteze diferite. La fiecare 10 000 de căpușe sau cam așa ceva (puteți intra în scriptul python pentru a edita / modifica acest lucru) va schimba modurile (există patru: RGB, HSV, Rainbow și Greyscale).

Deci, acum singurul lucru rămas de făcut este să faci codul tribord să ruleze la pornire. Vom face acest lucru editând (cu sudo) /etc/rc.local. Ceea ce doriți să faceți este să adăugați următoarea linie chiar înainte de „ieșirea 0” în script:

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

După ce faceți acest lucru, reporniți pi - odată ce rulează prin secvența de pornire, scriptul starboard_s16.py ar trebui să pornească imediat!

Dacă doriți să vă plimbați în scenariu, nu ezitați să faceți acest lucru - este licențiat sub GNU GPL 3.0. Dacă scriptul nu va rula pentru dvs. sau aveți probleme cu el, nu ezitați să mă anunțați sau să trimiteți un bug pe github și voi vedea ce pot face pentru a remedia problema!

Ultimul lucru (foarte) pe care v-ar putea dori să-l faceți este să configurați SSH pe pi, astfel încât să puteți intra și să îl închideți în siguranță. Veți / cu siguranță / doriți să vă schimbați parola (prin comanda passwd) și puteți găsi aici instrucțiuni pentru activarea ssh (tot din linia de comandă).

Recomandat: