Sadržaj:

RPi 3 Starboard / Generator čestica: 6 koraka (sa slikama)
RPi 3 Starboard / Generator čestica: 6 koraka (sa slikama)

Video: RPi 3 Starboard / Generator čestica: 6 koraka (sa slikama)

Video: RPi 3 Starboard / Generator čestica: 6 koraka (sa slikama)
Video: Rpi Particle Generator 2024, Srpanj
Anonim
Image
Image
Sastavite LED ploču
Sastavite LED ploču

Je li vam dosadno s vašim Raspberry Pi? Jeste li spremni zapovijedati samim elementarnim silama svemira, prizivajući i odbacujući fotone po svojoj volji? Želite li samo nešto zanimljivo objesiti u svoju dnevnu sobu ili neki fantastični projekt koji ćete objaviti na Facebooku kako biste Denise pokazali da vam je dobro ovih dana, hvala vam puno? Jeste li zarobljeni u računalnoj simulaciji i oduzimate sate dok niste oslobođeni ili izbrisani? Ako vas neki ili svi ovi opisuju, onda [glas najavljivača] Dobro došli!

Ovaj vodič će vam pokazati kako sastaviti i postaviti zaslon generatora čestica pomoću Raspberry Pi 3 i nekih RGB matričnih ploča. Trebalo bi vam od jedan do dva sata, a gotov proizvod bit će približno 30 "x8" (ne uključujući Pi) i može se montirati na zid. To je prilično cool ukras za dnevni boravak, ured, igraonicu ili bilo gdje drugo gdje ga želite postaviti.

Prije nego što počnete, evo što vam je potrebno i približni troškovi:

  • Rpi 3 + SD kartica + kućište + napajanje: 70 USD (od Canakita, ali dijelove vjerojatno možete nabaviti jeftinije ako ih kupite zasebno.)
  • 4x 32x32 RGB LED matrica (po mogućnosti p6 unutarnja sa 1/16 skeniranjem): 80 do 100 USD isporučuje se na Alibabi ili Aliexpressu; 160 dolara za Adafruit ili Sparkfun.
  • Adafruit RGB Matrix šešir: 25 USD
  • Napajanje 5V 4A: 15 USD
  • 3D ispisani isječci: 1 USD (oni služe za povezivanje ploča i njihovo vješanje na zid; ako nemate pristup 3D pisaču, možete upotrijebiti krznenu traku da ih držite zajedno i neke zagrade iz željezne trgovine do objesite ga o zid. Pokušao sam pronaći datoteke dizajna ili.stls datoteke za njih, ali čini se da su otišle sa zemlje. Isječke je ipak prilično lako modelirati.)
  • 14x vijci M4x10: 5 USD
  • Četiri IDX kabela 4x8 i tri kabela za napajanje za RGB matrice (ne znam kako se to zove!). Oni su trebali biti uključeni u vaše LED ploče.
  • Ukupno: Oko 200 USD, daj ili uzmi.

Za projekt nije potrebno lemljenje ili znanje o programiranju; pretpostavlja se da znate zapisati sliku na microSD karticu. Ako niste sigurni kako to učiniti, Raspberry Pi zaklada ovdje ima dobar vodič.

Također pretpostavlja da imate osnovno znanje o tome kako raditi stvari iz naredbenog retka u Linuxu, a prolaz koda pretpostavlja da poznajete osnove Pythona (ali - ne morate slijediti prolaz koda da biste mogli graditi i pokrenite generator čestica.) Ako zaglavite u bilo kojem od koraka, slobodno postavite pitanje ili objavite u /r /raspberry_pi (što je također, pretpostavljam, glavna publika za ovo uputstvo)

Korak 1: Sastavite LED ploču

Sastavite LED ploču
Sastavite LED ploču

Prvo ćete sastaviti pojedinačne 32x32 LED ploče u jednu veliku ploču 128x32. Morat ćete pogledati svoje ploče i pronaći male strelice koje označavaju redoslijed povezivanja; na mom su blizu HUB75/2x8 IDC konektora. Provjerite jesu li strelice usmjerene od mjesta na koje će se Rpi spojiti (desno na gornjoj fotografiji) niz duljinu ploče.

Također ćete morati spojiti kabele za napajanje. Većina ovih kabela ima dva ženska konektora koji se pričvršćuju na ploče i jedan set lopatica koji se priključuje na izvor napajanja. Ploče s kojima radim imaju indikatore za 5V i GND gotovo potpuno skrivene ispod samih konektora, ali kabeli se spajaju samo u jednom smjeru. Morat ćete biti sigurni da spajate sve 5V zajedno i sve GND zajedno, jer ako ih napajate unatrag, gotovo ćete ih ispržiti.

Budući da su kablovi za napajanje uključeni u moju ploču bili tako kratki, morao sam produžiti jedan umetanjem zupčanika terminala lopatice u konektor drugog (Ovo je prilično jednostavno - možda ćete morati malo saviti terminale lopatice prema unutra, ali ja ' za svaki slučaj priložio sam sliku). Završio sam s dva seta terminala i jednim 2x8 IDC priključkom desno od moje sada produžene LED ploče.

Također ćete primijetiti da na oba kraja ploče nemam dva vijka pričvršćena ni za što; oni će biti na vrhu kad se cijela stvar prevrne i bit će korišteni za pričvršćivanje na zid.

Dakle - nakon što spojite sve ploče zajedno sa isječcima, 2x8 IDC kabelima i kabelima za napajanje, spremni ste za prijelaz na sljedeći korak!

Korak 2: Pripremite Raspberry Pi

Zatim ćete ostaviti LED ploču sa strane (za sada) i pripremiti Pi 3 za rad. Koristit ćemo Raspbian Stretch Lite i hzellerovu RGB matričnu biblioteku (umjesto Adafruitove matrične knjižnice, koja je starija i neodržavana.)

Prvo ćete htjeti zapisati sliku Raspbian Lite na SD karticu; kad to učinite, povežite monitor i tipkovnicu s pi -em i pokrenite ga. (Ovo možete učiniti i bez glave, bilo putem ssh -a ili serijskog konektora, ali ako je to vaš način, vjerojatno vam ne trebam da vam kažem kako to učiniti.) Za ovo vam je potrebna internetska veza; Ako imate wifi, povežite Pi sa svojom bežičnom mrežom uređivanjem /etc/wpa_supplicant/wpa_supplicant.conf i pokretanjem wpa_cli -i wlan0 reconfigure. (Ako to nikada niste učinili, upute možete dobiti ovdje).

Nakon što se povežete na internet, ažurirat ćemo postavke spremišta dpkg i preuzeti potrebne biblioteke pokretanjem sljedećih naredbi:

sudo apt-get ažuriranje

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

git klon

Sada moramo sastaviti i instalirati matrični kod. Dakle, otići ćete u mapu koja sadrži biblioteku:

cd rpi-rgb-led-matrica

i sastavite ga (ovo može potrajati minutu):

make && make build-python

i instalirajte python veze:

sudo make install-python

Ako tijekom sastavljanja koda knjižnice dođe do bilo kakvih pogrešaka, vratite se i provjerite jeste li ispravno instalirali python-dev i python-pil! Python veze se neće kompajlirati bez instaliranja oba paketa.

Također ćete morati onemogućiti izlaz zvuka vašeg Pi-a (ugrađeni zvuk ometa matrični kod) uređivanjem /boot/config.txt. Potražite redak koji kaže dtparam = audio = uključeno i promijenite ga u dtparam = audio = isključeno.

Ako je sve u redu (dobit ćete nekoliko upozorenja o Wstrict-protoypesima) vaš bi pi trebao biti spreman za pokretanje matrične ploče. Samo ga isključite (sudo shutdown now), isključite ga, a mi ćemo u sljedećem koraku spojiti svjetlosnu ploču na pi.

Korak 3: Spojite Pi + Matrix Hat + LED ploču

Spojite Pi + Matrix Hat + LED ploču
Spojite Pi + Matrix Hat + LED ploču

Dakle, sada kada je vaš Pi isključen i isključen, spojimo matrični šešir na pi, a LED ploču na matrični šešir. Ako vaš Pi već nije u torbici, pravo je vrijeme da ga stavite tamo.

Ugradite šešir matrice tako da ga poravnate s GPIO iglama na Pi i lagano ga gurnete prema dolje ravnomjernom silom s obje strane. Uvjerite se da su igle pravilno poredane, tako da ženski zaglavlji na šeširu točno prekrivaju GPIO igle na pi. Ako ga pogrešno poravnate, to nije katastrofa; samo ga lagano povucite i izravnajte sve igle koje su se savile.

Nakon što stavite šešir, stavite Pi desno od sastavljene LED ploče (još jednom provjerite priključke za napajanje i provjerite jesu li strelice usmjerene od Pi prema duljini ploče) i povežite IDC kabel do matrice šešira.

Zatim ćete htjeti priključiti lopatice za napajanje u priključni blok matrice. Imate dva priključka za lopatice sa svake strane, ali oba bi se trebala uklopiti. Prvo otpustite vijke i - Ovo se mora podrazumijevati - svakako stavite 5V stezaljke na stranu označenu s + (oni bi trebali biti crveni, ali - opet - dvaput provjerite svoje konektore i nemojte pretpostaviti da su pravilno proizvedeni) i priključci GND (oni bi trebali biti crni) na strani označenoj s -. Nakon što su unutra, pritegnite vijke na vrhu priključnog bloka i trebali biste imati nešto što izgleda kao slika zaglavlja za ovaj korak.

Sada ste - možda ste primijetili da ova određena konfiguracija ostavlja polovicu terminala lopatice izloženom s obje strane, lebdeći samo milimetre iznad šešira matrice (i ne mnogo dalje jedan od drugog.) I - terminali lopatica vrlo brzo će biti koji nosi i nekoliko volti i nekoliko pojačala sirove energije. Je li ovo (čujem vas kako pitate s druge strane ekrana) doista Pravi način za to? Je li to, (nagnete se bliže i šapnete), dobra ideja?

A odgovor je (odgovaram sležući ramenima) - ne, nije. Pravi način da to učinite bio bi odvojiti priključke lopatica sa kabela za napajanje i ponovno ih uviti u odgovarajući priključak za taj priključni blok (ili ih ostaviti kao gole žice i spojiti ih bez konektora u blok). U protivnom možete staviti termoskupljajuću cijev oko izložene strane priključka lopatice ili je jednostavno omotati električnom trakom. Ali svijet je pao, a čovjek je lijen i tašt, pa to nisam učinio.

No - omotani ili odmotani - terminali lopatica spojeni su na terminalni blok i spremni smo za prijelaz na sljedeći korak.

Korak 4: Testirajte RGB matricu

Sada kada je vaš Pi spojen na svjetlosnu ploču, okrenite ploču i ponovo uključite Pi. Matrix šešir možete napajati nakon što je Pi priključen; ako uključite šešir prije Pi -a, Pi će se pokušati pokrenuti s nedovoljno struje i gorko će se žaliti (i može vam izazvati paniku jezgre, a uopće se neće pokrenuti.)

Ako imate problema s pokretanjem Pi -a s matricom, provjerite koristite li dovoljno snažno napajanje za Pi (2A+ bi trebalo biti dobro) i pokušajte priključiti napajanje za šešir i za Pii u istu utičnicu ili produžni kabel i zajedno ih uključite.

Nakon što se Pi podigne, spremni smo za testiranje matrica. Idite na mjesto gdje se nalaze uzorci vezivanja pythona (cd/rpi-rgb-led-matrix/bindings/python/uzorci) i isprobajte generator rotacijskih blokova sa sljedećom naredbom:

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

Morate ga pokrenuti kao sudo jer matričnoj knjižnici pri inicijalizaciji treba pristup niskoj razini hardvera. Oznaka -m određuje način na koji su ploče spojene na pi (u ovom slučaju šešir od adafruta), a --led -lanac navodi -pogađate -koliko smo panela zajedno povezali. Redci i stupci po ploči zadano su 32, pa smo tu dobri.

Sada - nakon što izvršite program, dogodit će se jedna od dvije (ili, zaista, jedna od tri) stvari:

  • Ništa se ne događa
  • Dobivate lijepi rotirajući blok na sredini vaše svjetlosne ploče.
  • Svjetlosna ploča radi, mislim, ali izgleda … čudno (polovica je zelena, neki redovi se ne pale itd.)

Ako se ništa ne dogodi ili ako ploča izgleda čudno, pritisnite ctrl+c za izlaz iz uzorkovnog programa, isključite pi i provjerite sve svoje veze (IDC kabel, napajanje, provjerite jesu li oba izvora napajanja uključena itd.) Također provjerite je li šešir pravilno spojen; ako to ne riješi problem, skinite ga na jednu ploču (provjerite koristite li --led-chain 1 prilikom testiranja) i provjerite je li jedna od ploča možda loša. Ako TO ne uspije, pogledajte hzellerove savjete za rješavanje problema. ako TO JOŠ uvijek ne radi, pokušajte objaviti na /r /raspberry_pi (ili na forumima Adafruit, ako ste svoje ploče dobili od Adafruita, ili razmjenu stogova itd. itd.)

Ako to nekako radi, ali i dalje izgleda čudno (možda poput slike zaglavlja za ovaj odjeljak) nakon što provjerite veze, moguće je da ste sve pravilno spojili, da ploče rade ispravno, ali da će se nešto drugo dogoditi na. Što će nas odvesti do sljedećeg koraka - više preusmjeravanja nego koraka - u multipleksiranju i brzini skeniranja. (Ako vaša led ploča dobro radi i ne zanima vas unutarnji rad ovih ploča, slobodno preskočite sljedeći korak.)

Korak 5: Stope multipleksiranja i skeniranja (ili: Momentalno preusmjeravanje na putu do groba)

Dakle, jedna od grešaka koje sam napravio kada sam naručio svoj prvi set ploča s Alibabe je to što sam dobio vanjske ploče (zašto ne, mislio sam - vodootporne su i svjetlije!). A kad sam ih spojio na matrix šešir, stvari su izgledale.. nije u redu.

Da bismo razumjeli zašto je to tako, odvojit ćemo minutu da pogledamo Phila Burgessa iz Adafruitova opisa kako ove ploče rade. Primijetit ćete da Burgess ističe da ploče ne pale sve LED diode odjednom - osvjetljavaju nizove redaka. Odnos između visine ploče u pikselima i broja redova koji svijetle odjednom naziva se brzina skeniranja. Tako, na primjer - na ploči 32x32 sa 1/16 skeniranjem, dva su reda (1 i 17, 2 i 18, 3 i 19 itd.) Osvijetljena odjednom, skroz dolje na ploči, a zatim se kontroler ponavlja. Većina knjižnica koje pokreću RGB matrice izrađene su za ploče gdje je brzina skeniranja 1/2 visine u pikselima - to jest, one pokreću dva reda LED -a odjednom.

Vanjske ploče (i neke unutarnje ploče - svakako provjerite specifikacije prije naručivanja) imaju stope skeniranja koje su 1/4 visine u pikselima, što znači da očekuju da će se voziti četiri linije odjednom. To ih čini svjetlijima (što je dobro), ali čini da veliki broj standardnih kodova ne radi s njima (što je loše). Osim toga, pikseli imaju interni poremećaj, što zahtijeva transformaciju vrijednosti x i y u softveru kako bi se adresirali pravi pikseli. Zašto su napravljeni na ovaj način? Nemam pojma. Znaš li? Ako je tako, molim vas recite mi. Inače će to jednostavno morati ostati misterij.

Dakle, ako imate jednu od ovih čudnih vanjskih ploča, imate (vjerojatno) sreće! hzeller je nedavno svojoj biblioteci dodao podršku za uobičajene konfiguracije ovih vrsta ploča. Više o tome možete pročitati na stranici github za projekt, ali možete proslijediti --led-multiplexing = {0, 1, 2, 3} uzorku koda (možda ćete se također morati pretvarati da imate lanac dvostruke duljine od ploča pola duljine) i trebao bi funkcionirati.

Ipak, postoje neki obrasci transformacije piksela koji nisu podržani - i (pogodite što) moje ploče imaju jedan od njih! Dakle, morao sam napisati svoj vlastiti kod za transformaciju (također sam - iz bilo kojeg razloga - morao reći knjižnici da se ponaša kao da imam osam 16x32 ploča povezanih zajedno). koji je sljedeći:

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

effK = k % 32

modY = k

modX = j

#modX i modY su izmijenjeni X i Y;

#effJ i effK pobrinite se da se transformiramo unutar matrice 32x32 prije guranja

ako ((effJ)> 15):

modX = modX + 16

ako ((effK)> 7):

MODY = MODY - 8

modX = modX + 16

ako ((effK)> 15):

modX = modX - 16

ako ((effK)> 23):

MODY = MODY - 8

modX = modX + 16

#Zatim ih guramo na ispravno mjesto (svaki x+32 pomiče jednu ploču)

ako (j> 31):

modX += 32

ako (j> 63):

modX += 32

ako (j> 95):

modX += 32

return (modX, modY)

Ako imate ploču poput moje, ovo bi vam moglo poslužiti. Ako se to ne dogodi, morat ćete sami napisati - pa, znate, sretno i sretno.

Korak 6: Starboard program (ili: Natrag na stazu i spreman za Pixel)

Sada kada su vaše matrice operativne i spremne za rad, sve što trebate učiniti je staviti desni bočni program na svoj Pi i pripremiti ga za rad. Provjerite jeste li u kućnom direktoriju korisnika korisnika (cd /home /pi) i pokrenite sljedeću naredbu:

git klon

trebali biste imati novu mapu, desnu ploču, koja sadrži tri datoteke: LICENSE.md, README.md i starboard_s16.py. Isprobajte program s desne ploče pokretanjem kroz python:

sudo python./starboard_s16.py

i trebali biste dobiti hrpu čestica koje se kreću različitim brzinama i raspadaju se različitim brzinama. Otprilike svakih 10 000 krpelja (možete ući u python skriptu da to uredite/promijenite) mijenjat će načine rada (postoje četiri: RGB, HSV, Rainbow i Greyscale).

Dakle, sada je jedino preostalo učiniti da se kod pokretanja pokrene desni kôd. To ćemo učiniti uređivanjem (sa sudo) /etc/rc.local. Ono što želite učiniti je dodati sljedeći redak neposredno prije "izlaza 0" u skripti:

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

Nakon što to učinite, ponovno pokrenite pi - nakon što prođe kroz sekvencu pokretanja, skripta starboard_s16.py bi se trebala pokrenuti!

Ako želite pregledati skriptu, slobodno to učinite - licencirana je pod GNU GPL 3.0. Ako vam skripta ne radi ili imate problema s njom, slobodno mi javite ili pošaljite grešku na githubu, pa ću vidjeti što mogu učiniti da to ispravim!

(Vrlo) posljednja stvar koju biste htjeli učiniti je postaviti SSH na pi, tako da se možete daljinski i sigurno isključiti. Vi ćete / definitivno / htjeti promijeniti svoju lozinku (putem naredbe passwd), a upute za omogućavanje ssh -a (također iz naredbenog retka) možete pronaći ovdje.

Preporučeni: