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, Juli
Anonim
Image
Image
Sastavite LED ploču
Sastavite LED ploču

Je li vam dosadno s vašim Raspberry Pi? Jeste li spremni komandovati samim elementarnim silama univerzuma, prizivajući i odbacujući fotone po svojoj volji? Želite li samo nešto zanimljivo objesiti u svoju dnevnu sobu, ili neki fensi projekt koji ćete objaviti na facebooku kako biste pokazali Denise da vam je dobro ovih dana, hvala vam puno? Jeste li zarobljeni u računarskoj simulaciji i oduzimate sate dok ne budete 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 ekran 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 dnevnu sobu, ured, igraonicu ili gdje god želite.

Prije nego započ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 vjerovatno možete nabaviti jeftinije ako ih kupite zasebno.)
  • 4x 32x32 RGB LED matrica (po mogućnosti p6 u zatvorenom sa 1/16 skeniranjem): 80-100 USD isporučuje se na Alibabi ili Aliexpressu; 160 USD na 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 panela i njihovo vješanje na zid; ako nemate pristup 3D štampaču, možete upotrijebiti krznenu traku za njihovo držanje zajedno i neke zagrade od željezarije do objesite ga o zid. Pokušao sam pronaći dizajnerske datoteke ili.stls za njih, ali čini se da su otišli 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 projekat 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 fondacija ovdje ima dobar vodič.

Takođe pretpostavlja da imate osnovno znanje o tome kako da radite stvari iz komandne linije u Linuxu, a prolaz koda pretpostavlja da poznajete osnove Pythona (ali - ne morate da sledite uputstva za kodiranje da biste mogli da napravite i pokrenite generator čestica.) Ako zaglavite u bilo kojem od koraka, slobodno postavite pitanje ili objavite u /r /raspberry_pi (što je, pretpostavljam, i 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 od 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. Uvjerite se da su 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 u potpunosti 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 ' priložio sam sliku za svaki slučaj). Završio sam s dva seta terminala i jednim 2x8 IDC konektorom desno od moje sada izdužene LED ploče.

Takođe ćete primetiti da imam dva vijka koji nisu pričvršćeni ni za šta na oba kraja ploče; oni će biti na vrhu kada se cijela stvar prevrne i bit će korišteni za pričvršćivanje na zid.

Dakle - nakon što povežete sve ploče zajedno sa kopčama, 2x8 IDC kablovima i kablovima za napajanje, spremni ste za prelazak 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. Koristićemo Raspbian Stretch Lite i hzellerovu RGB matričnu biblioteku (umesto Adafruit -ove matrične biblioteke, koja je starija i neodržavana.)

Prvo ćete htjeti zapisati sliku Raspbian Lite na SD karticu; kada to učinite, povežite monitor i tastaturu sa pi -em i pokrenite ga. (Ovo možete učiniti i bez glave, bilo putem ssh -a ili serijskog konektora, ali ako tako idete, vjerovatno mi nećete trebati da vam govorim 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 ovo nikada niste radili, 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 update

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

git klon

Sada moramo sastaviti i instalirati matrični kod. Ući ćete u fasciklu 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 dobijete greške pri sastavljanju koda biblioteke, vratite se i provjerite jeste li pravilno 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 liniju koja kaže dtparam = audio = uključeno i promijenite je u dtparam = audio = isključeno.

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

Korak 3: Povežite Pi + Matrix Hat + LED ploču

Povežite Pi + Matrix Hat + LED ploču
Povežite 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 još nije u kućištu, sada je pravo vrijeme da ga umetnete.

Instalirajte šešir matrice tako da ga poravnate s GPIO pinovima 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 ispravite 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 dužini ploče) i povežite IDC kabel do matrice šešira.

Zatim ćete htjeti spojiti 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 - obavezno stavite 5V terminale 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 sa -. 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.

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 će vrlo brzo biti koji nosi i nekoliko volti i nekoliko ampera sirove energije. Je li ovo (čujem vas kako pitate s druge strane ekrana) zaista 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 su spojeni 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; ipak, ako uključite šešir prije Pi -a, Pi će se pokušati pokrenuti s nedovoljnom strujom i gorko će se žaliti (i može vam izazvati paniku kernela, 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 tamo gdje su uzorci vezivanja pythona (cd/rpi-rgb-led-matrix/bindings/python/uzorci) i isprobajte generator rotirajućih blokova sa sljedećom naredbom:

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

Morate ga pokrenuti kao sudo jer matričnoj biblioteci treba pristup na niskom nivou hardveru pri inicijalizaciji. -M određuje način povezivanja panela s pi (u ovom slučaju šešir od adafruata), a --led -lanac specificira -pogađate -koliko smo panela zajedno povezali. Redovi i stupci po ploči zadano su 32, tako da 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
  • Dobićete lijep 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 da izađete iz uzorka programa, isključite pi i provjerite sve svoje veze (IDC kabel, napajanje, provjerite jesu li oba izvora napajanja uključena itd.) Takođe proverite da li je šešir pravilno povezan; ako to ne riješi problem, odnesite ga na jednu ploču (obavezno koristite --led-chain 1 prilikom testiranja) i provjerite je li jedan od panela možda loš. 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 panele dobili od Adafruit -a, ili razmjenu stogova itd. itd.)

Ako to nekako funkcionira, 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 funkcioniraju ispravno, ali da će se nešto drugo dogoditi uključeno. Što će nas odvesti do našeg 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 unutrašnji rad ovih panela, slobodno preskočite sljedeći korak.)

Korak 5: Brzine multipleksiranja i skeniranja (ili: trenutna diverzija na putu do groba)

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

Da bismo razumjeli zašto je to tako, odvojit ćemo minut da pogledamo Phil Burgessa iz Adafruit opisa kako ovi paneli rade. Primijetit ćete da Burgess ističe da paneli ne pale sve LED diode odjednom - oni pale nizove. Odnos između visine ploče u pikselima i broja redova koji zasvijetle odjednom naziva se brzina skeniranja. Tako, na primjer - na ploči 32x32 sa 1/16 skeniranjem, dva reda (1 i 17, 2 i 18, 3 i 19 itd.) Osvjetljavaju se odjednom, skroz niz ploču, a zatim se kontroler ponavlja. Većina biblioteka koje pokreću RGB matrice napravljene su za ploče gdje je brzina skeniranja 1/2 visine u pikselima - to jest, one pokreću dva reda LED -a odjednom.

Spoljni paneli (i neki unutrašnji paneli - obavezno pogledajte 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, imaju tendenciju da interno pikseli nisu u redu, što zahtijeva transformaciju x i y vrijednosti 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. U suprotnom će to jednostavno morati ostati misterija.

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 panela. Možete pročitati više o tome 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 dužine od ploča pola dužine) i trebao bi funkcionirati.

Međutim, postoje neki obrasci transformacije piksela koji nisu podržani - i (pogodite šta) moji paneli imaju jedan od njih! Dakle, morao sam napisati svoj vlastiti kod za transformaciju (također sam - iz bilo kojeg razloga - morao reći biblioteci da se ponaša kao da imam osam panela 16x32 povezanih zajedno). koja je sljedeća:

def transformPixels (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 pritiskanja

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 ispravnu lokaciju (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: Povratak na stazu i spreman za piksele)

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 imeniku korisnika korisnika (cd /home /pi) i pokrenite sljedeću naredbu:

git clone

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

sudo python./starboard_s16.py

i trebali biste dobiti gomilu čestica koje se kreću različitim brzinama i raspadaju se različitim brzinama. Svakih 10 000 kvačica (možete ić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 starboard kôd pokrene pri pokretanju. 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 je ispravim!

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

Preporučuje se: