Sisällysluettelo:

RPi 3 Oikea / hiukkasgeneraattori: 6 vaihetta (kuvilla)
RPi 3 Oikea / hiukkasgeneraattori: 6 vaihetta (kuvilla)

Video: RPi 3 Oikea / hiukkasgeneraattori: 6 vaihetta (kuvilla)

Video: RPi 3 Oikea / hiukkasgeneraattori: 6 vaihetta (kuvilla)
Video: Raspberry Pi IKEA Retro Arcade Gaming Table Build 2024, Heinäkuu
Anonim
Image
Image
Kokoa LED -kortti
Kokoa LED -kortti

Oletko kyllästynyt Raspberry Pi -laitteeseesi? Oletko valmis johtamaan maailmankaikkeuden alkeellisia voimia kutsumalla ja hylkäämällä fotoneja halutessasi? Haluatko vain jotain mielenkiintoista ripustaa olohuoneeseesi tai hienon projektin julkaistaksesi Facebookissa osoittaaksesi Deniselle, että sinulla menee hyvin näinä päivinä, kiitos paljon? Oletko loukussa tietokonesimulaatiossa ja valitat tuntikausia ennen kuin sinut vapautetaan tai poistetaan? Jos jokin tai kaikki näistä kuvaa sinua, [kuuluttajan ääni] Tervetuloa!

Tässä opetusohjelmassa kerrotaan, miten hiukkasgeneraattorin näyttö kootaan ja asennetaan Raspberry Pi 3: n ja joidenkin RGB -matriisipaneelien avulla. Sen pitäisi kestää yhdestä kahteen tuntia, ja lopputuote on noin 30 "x8" (ei sisällä Pi: tä) ja seinäasennettava. Se on aika siisti sisustus olohuoneeseen, toimistoon, pelihuoneeseen tai mihin tahansa muualle, johon haluat sen sijoittaa.

Ennen kuin aloitat, tässä on mitä tarvitset ja likimääräiset kustannukset:

  • RPI 3 + SD -kortti + kotelo + virtalähde: 70 dollaria (Canakitilta, mutta voit todennäköisesti saada osat halvemmalla, jos ostat ne erikseen.)
  • 4x 32x32 RGB LED -matriisi (mieluiten p6 sisätiloissa 1/16 skannauksella): $ 80- $ 100 toimitetaan Alibabassa tai Aliexpressissä; 160 dollaria Adafruitista tai Sparkfunista.
  • Adafruit RGB Matrix -hattu: 25 dollaria
  • 5V 4A virtalähde: 15 dollaria
  • 3D -tulostetut leikkeet: 1 dollari ripusta se seinälle. Yritin löytää näiden suunnittelutiedostoja tai.stls -tiedostoja, mutta ne näyttävät siirtyneen maasta. Leikkeet on kuitenkin melko helppo mallintaa.)
  • 14x M4x10 pultti: 5 dollaria
  • Neljä 4x8 IDC -kaapelia ja kolme virtakaapelia RGB -matriiseja varten (en tiedä, miksi näitä kutsutaan!). Nämä olisi pitänyt sisällyttää LED -paneeleihisi.
  • Yhteensä: Noin 200 dollaria, anna tai ota.

Projekti ei vaadi juottamista tai erityistä ohjelmointitaitoa; Se olettaa, että tiedät kuinka kirjoittaa kuva microSD -kortille. Jos et ole varma, miten se tehdään, Raspberry Pi -säätiöllä on hyvä opetusohjelma täällä.

Siinä oletetaan myös, että sinulla on perustiedot siitä, miten voit tehdä asioita komentoriviltä Linuxissa, ja koodin läpikäynti olettaa, että tiedät Pythonin perusteet (mutta - sinun ei tarvitse noudattaa koodin läpikäyntiä voidaksesi rakentaa ja suorita hiukkasgeneraattori.) Jos jumiudut johonkin vaiheeseen, voit vapaasti esittää kysymyksen tai lähettää viestin /r /raspberry_pi (joka on myös oletettavasti tämän ohjeen pääyleisö)

Vaihe 1: Kokoa LED -kortti

Kokoa LED -kortti
Kokoa LED -kortti

Ensinnäkin aiot koota yksittäiset 32x32 LED -paneelit yhdeksi suureksi 128x32 -paneeliksi. Sinun on tarkasteltava levyjäsi ja löydettävä pienet nuolet, jotka osoittavat yhteysjärjestyksen; omassani ne ovat lähellä HUB75/2x8 IDC -liittimiä. Varmista, että nuolet osoittavat, mistä Rpi muodostaa yhteyden (pois oikealta yllä olevassa kuvassa) levyn pituutta alaspäin.

Sinun on myös kytkettävä virtakaapelit. Suurimmassa osassa näistä kaapeleista on kaksi naarasliitintä, jotka kiinnittyvät levyihin, ja yksi sarja spade -liittimiä, jotka kiinnitetään virtalähteeseen. Paneeleissa, joiden kanssa työskentelen, on 5V- ja GND -indikaattorit lähes kokonaan piilossa liittimien alla, mutta kaapelit kytkeytyvät vain yhteen suuntaan. Haluat varmistaa, että liität kaikki 5 V: n ja kaikki GND: t yhteen, koska jos käytät niitä taaksepäin, paistat ne varmasti.

Koska levyjeni mukana tulleet virtakaapelit olivat niin lyhyitä, minun piti pidentää yhtä työntämällä laastaliittimen koukut toisen liittimeen (tämä on melko yksinkertaista - sinun on ehkä taivutettava lapien liittimiä hieman sisäänpäin, mutta olen lisännyt kuvan joka tapauksessa). Päädyin kahteen patapäätteeseen ja yhteen 2x8 IDC-liittimeen pois nyt pitkänomaisen LED-levyn oikealta puolelta.

Huomaat myös, että minulla on kaksi pulttia, joita ei ole kiinnitetty mihinkään levyn kumpaankaan päähän; nämä ovat päällä, kun koko asia kääntyy ympäri, ja niitä käytetään kiinnittämään se seinään.

Joten - kun olet liittänyt kaikki paneelit yhteen pidikkeillä, 2x8 IDC -kaapelilla ja virtakaapelilla, olet valmis siirtymään seuraavaan vaiheeseen!

Vaihe 2: Valmista Raspberry Pi

Seuraavaksi asetat LED -levyn sivuun (toistaiseksi) ja saat Pi 3: n valmiiksi ajamaan sitä. Käytämme Raspbian Stretch Liteä ja hzellerin RGB -matriisikirjastoa (ei Adafruitin matriisikirjastoa, joka on vanhempi ja ylläpitämätön.)

Ensinnäkin haluat kirjoittaa Raspbian Lite -kuvan SD -kortille; Kun olet tehnyt tämän, yhdistä näyttö ja näppäimistö pi: hen ja käynnistä se. (Voit tehdä tämän myös ilman päätä, joko ssh: n tai sarjaliitännän kautta, mutta jos näin menet, et todennäköisesti tarvitse minun kertovan sinulle, miten se tehdään.) Tarvitset Internet -yhteyden tähän; Jos sinulla on wifi, liitä Pi langattomaan verkkoon muokkaamalla /etc/wpa_supplicant/wpa_supplicant.conf ja suorittamalla wpa_cli -i wlan0 uudelleen. (Jos et ole koskaan tehnyt tätä, saat ohjeet täältä).

Kun olet yhteydessä Internetiin, päivitämme dpkg -arkiston asetukset ja lataamme tarvitsemamme kirjastot suorittamalla seuraavat komennot:

sudo apt-get päivitys

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

git-klooni

Nyt meidän on koottava ja asennettava matriisikoodi. Joten siirryt kansioon, joka sisältää kirjaston:

cd rpi-rgb-led-matriisi

ja käännä se (tämä voi kestää hetken):

make && build build-python

ja asenna python -siteet:

sudo make install-python

Jos saat virheitä kirjoittaessasi kirjastokoodia, palaa takaisin ja varmista, että olet asentanut python-dev ja python-pil oikein! Python -siteet eivät käänny ilman molempia paketteja.

Sinun on myös poistettava PI: n äänentoisto käytöstä (sisäinen ääni häiritsee matriisikoodia) muokkaamalla /boot/config.txt. Etsi rivi, joka sanoo dtparam = audio = on ja muuta se dtparam = audio = off.

Jos kaikki on koottu OK (saat muutaman varoituksen Wstrict-protoypeistä), pi: n pitäisi olla valmis suorittamaan matriisitaulu. Mene eteenpäin ja sammuta se (sudo sammutus nyt), irrota se pistorasiasta ja yhdistämme valotaulun pi: hen seuraavassa vaiheessa.

Vaihe 3: Yhdistä Pi + Matrix Hat + LED -kortti

Yhdistä Pi + Matrix Hat + LED -kortti
Yhdistä Pi + Matrix Hat + LED -kortti

Joten nyt, kun Pi on pois päältä ja irrotettu pistorasiasta, kytketään matriisihattu pi: hen ja LED -kortti matriisihattuun. Jos Pi ei ole jo kotelossaan, nyt on hyvä aika laittaa se sinne.

Asenna matriisihattu asettamalla se Pi: n GPIO -nastojen kanssa ja painamalla sitä varovasti alas tasaisella voimalla molemmin puolin. Varmista, että nastat on asetettu oikein, niin että hatun naaraspäät peittävät tarkasti pi: n GPIO -nastat. Jos kohdistat sen väärin, se ei ole katastrofi; vedä se varovasti pois ja suorista kaikki taipuneet nastat.

Kun olet saanut hatun päähän, aseta Pi kootun LED -kortin oikealle puolelle (tarkista virtaliitännät uudelleen ja varmista, että nuolet osoittavat Pi: stä kortin pituutta pitkin) ja yhdistä IDC kaapeli matriisin hattuun.

Seuraavaksi haluat kytkeä virransyöttölaitteen liittimet matriisihatun riviliittimeen. Sinulla on kaksi lapaliitintä kummallakin puolella, mutta niiden molempien pitäisi sopia sinne hyvin. Löysää ruuvit ensin ja - tämä on sanomattakin selvää - varmista, että asetat 5V -liittimet + -merkinnän puolelle (niiden tulee olla punaisia, mutta - jälleen - tarkista liittimet ja älä oleta, että ne on valmistettu oikein) ja GND -liittimet (niiden on oltava mustia) sivulla, jossa on merkintä -. Kun ne ovat siellä, kiristä riviliittimen päällä olevat ruuvit, ja sinulla pitäisi olla jotain, joka näyttää otsikon kuvasta tässä vaiheessa.

Nyt - olet ehkä huomannut, että tämä erityinen kokoonpano jättää puolet lapioliittimestä kummallakin puolella näkyviin ja leijuu vain millimetreinä matriisin hatun yläpuolella (eikä kovin kaukana toisistaan.) JA - lapio -liittimet ovat hyvin pian joissa on sekä useita volttia että useita ampeereja raakatehoa. Onko tämä (kuulen sinun kysyvän näytön toiselta puolelta) todella oikea tapa tehdä se? Onko se (nojaudut lähemmäs ja kuiskaat), hyvä idea?

Ja vastaus on (Vastaan kohautellen olkapäitäni) - ei, ei ole. Oikea tapa tehdä se olisi irrottaa patteriliittimet virtajohdoista ja puristaa ne uudelleen oikeaan liittimeen (tai jättää ne paljaiksi johtimiksi ja kytkeä ne ilman liitintä lohkoon). Jos näin ei tapahdu, voit laittaa lämpökutistusletkun lapion liittimen paljaan puolen ympärille tai kääriä sen vain sähköteipille. Mutta maailma on kaatunut ja ihminen on laiska ja turhamainen, joten en ole tehnyt sitä.

Mutta - kääritty tai käärimätön - lapariliittimet on kytketty riviliittimeen, ja olemme valmiita siirtymään seuraavaan vaiheeseen.

Vaihe 4: Testaa RGB -matriisi

Nyt kun Pi on liitetty valotauluun, käännä levy ympäri ja kytke Pi takaisin päälle. Voit käyttää matriisihattua, kun Pi on kytketty Jos kuitenkin käytät hattua ennen Pi: tä, Pi yrittää käynnistyä ilman tarpeeksi virtaa ja valittaa katkerasti (ja saattaa aiheuttaa sinulle ytimen paniikin eikä käynnistää ollenkaan.)

Jos sinulla on vaikeuksia saada Pi käynnistymään matriisihattu päällä, varmista, että käytät Pi: lle riittävän voimakasta virtalähdettä (2A+ pitäisi olla hyvä) ja yritä kytkeä sekä hattu että Pii samaan jatkojohtoon tai jatkojohtoon ja käynnistä ne yhdessä.

Kun Pi on käynnistynyt, olemme valmiita testaamaan matriiseja. Siirry kohtaan, jossa python-sidontanäytteet ovat (cd/rpi-rgb-led-matrix/bindings/python/sample), ja kokeile pyörivää lohkogeneraattoria seuraavalla komennolla:

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

Sinun on suoritettava se sudona, koska matriisikirjasto tarvitsee matalan tason pääsyn laitteistoon alustuksen yhteydessä. -M määrittää, miten paneelit on kytketty pi: hen (tässä tapauksessa adafruit hattu), ja --led -ketju määrittää -arvasit sen -kuinka monta paneelia olemme ketjutettu yhteen. Rivit ja sarakkeet paneelia kohti ovat oletusarvoisesti 32, joten olemme kunnossa.

Nyt - kun olet suorittanut ohjelman, yksi kahdesta (tai oikeastaan yksi kolmesta) asiasta tapahtuu:

  • Mitään ei tapahdu
  • Saat mukavan pyörivän lohkon valotaulun keskelle.
  • Valolevy toimii, mielestäni, mutta se näyttää… oudolta (puolet siitä on vihreää, jotkut rivit eivät syty jne.)

Jos mitään ei tapahdu tai jos paneeli näyttää oudolta, sulje näyteohjelma painamalla ctrl+c, sammuta pi ja tarkista kaikki yhteydet (IDC -kaapeli, virta, varmista, että molemmat virtalähteet on kytketty jne.) Varmista myös, että hattu on liitetty oikein; jos se ei korjaa sitä, vie se alas yhteen paneeliin (muista käyttää -led-chain 1 -testausta) ja tarkista, onko jokin paneeleista huono. Jos SE EI toimi, tutustu hzellerin vianetsintävinkkeihin. jos TÄMÄ Vielä EI toimi, yritä lähettää /r /raspberry_pi (tai Adafruit -foorumeille, jos sait paneelisi Adafruitista tai pinonvaihdosta jne.)

Jos se toimii, mutta näyttää silti oudolta (ehkä kuten tämän osion otsikkokuva) sen jälkeen, kun olet tarkistanut liitännät, on mahdollista, että olet liittänyt kaikki oikein, paneelit toimivat oikein, mutta jotain muuta tapahtuu päällä. Tämä vie meidät seuraavaan vaiheeseemme - enemmän poikkeamiseen kuin askeleen - multipleksointiin ja skannausnopeuksiin. (Jos led -korttisi toimii hyvin etkä ole kiinnostunut näiden paneelien sisäisestä toiminnasta, voit ohittaa seuraavan vaiheen.)

Vaihe 5: Multipleksointi- ja skannausnopeudet (tai: hetkellinen siirtyminen matkalla hautaan)

Joten yksi virheistä, joita tein, kun tilasin ensimmäisen paneelisarjan Alibabasta, on se, että sain ulkolevyt (miksi ei, ajattelin - ne ovat vedenpitäviä ja kirkkaampia!). Ja kun kytkin ne matriisihattuuni, asiat näyttivät.. ei oikein.

Ymmärtääksemme, miksi näin on, käytämme hetken tarkastellaksemme Phil Burgessia Adafruitin kuvauksesta näiden paneelien toiminnasta. Huomaat, että Burgess huomauttaa, että paneelit eivät sytytä kaikkia LED -valojaan kerralla - ne sytyttävät rivisarjoja. Paneelin korkeuden pikseleissä ja kerralla syttyvien rivien lukumäärän suhdetta kutsutaan skannausnopeudeksi. Joten esimerkiksi - 32x32 -paneelissa, jossa on 1/16 skannaus, kaksi riviä (1 ja 17, 2 ja 18, 3 ja 19 jne.) Syttyy kerralla, kokonaan levylle, ja sitten ohjain toistaa. Useimmat RGB -matriiseja käyttävät kirjastot on rakennettu paneeleille, joiden skannausnopeus on 1/2 pikselien korkeudesta - eli ne käyttävät kahta LED -riviä kerralla.

Ulkopaneelien (ja joidenkin sisäpaneelien - tarkista tekniset tiedot ennen tilaamista) skannausnopeudet ovat 1/4 pikselien korkeudesta, mikä tarkoittaa, että ne odottavat neljän linjan ajamista kerralla. Tämä tekee niistä kirkkaampia (mikä on hyvä), mutta tekee paljon vakiokoodia, joka ei toimi heidän kanssaan (mikä on huono). Lisäksi pikselit ovat yleensä epäkunnossa sisäisesti, mikä edellyttää x- ja y -arvojen muuttamista ohjelmistossa oikeiden pikselien käsittelemiseksi. Miksi ne on tehty tällä tavalla? Minulla ei ole aavistustakaan. Tiedätkö? Jos on, kerro minulle. Muuten sen täytyy jäädä mysteeriksi.

Joten, jos sinulla on yksi näistä outoista ulkopaneeleista, olet (luultavasti) onnekas! hzeller lisäsi äskettäin kirjastoonsa tukea tällaisille paneeleille. Voit lukea lisää siitä projektin github-sivulla, mutta voit välittää --led-multiplexing = {0, 1, 2, 3} esimerkkikoodille (saatat joutua myös teeskentelemään, että sinulla on kaksipituinen puolipitkien paneelien ketju) ja sen pitäisi toimia.

Joitakin pikselimuunnosmalleja ei kuitenkaan tueta - ja (arvaa mitä) paneelissani on yksi niistä! Joten minun piti kirjoittaa oma muutoskoodini (minun on myös - jostain syystä - kerrottava kirjastolle, että se käyttäytyy kuin minulla olisi kahdeksan 16x32 -paneelia ketjutettu yhteen). joka on seuraava:

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

effK = k % 32

modY = k

modX = j

#modX ja modY ovat muokattuja X ja Y;

#effJ ja effK varmista, että muutamme 32x32 -matriisin sisällä ennen työntämistä

jos ((effJ)> 15):

modX = modX + 16

jos ((effK)> 7):

modY = modY - 8

modX = modX + 16

jos ((effK)> 15):

modX = modX - 16

jos ((effK)> 23):

modY = modY - 8

modX = modX + 16

#Sitten työnnämme ne oikeaan paikkaan (jokainen x+32 siirtää yhtä paneelia)

jos (j> 31):

modX += 32

jos (j> 63):

modX += 32

jos (j> 95):

modX += 32

paluu (modX, modY)

Jos sinulla on minun kaltainen paneeli, tämä saattaa toimia sen puolesta. Jos ei, sinun on kirjoitettava oma - joten tiedät, onnea ja jumalan nopeutta.

Vaihe 6: Oikea ohjelma (tai: takaisin raiteille ja valmiina Pixeliin)

Nyt kun matriisit ovat toiminnassa ja valmiina lähtöön, sinun tarvitsee vain laittaa oikeanpuoleinen ohjelma Pi -laitteellesi ja saada se valmiiksi. Varmista, että olet pi -käyttäjän kotihakemistossa (cd /home /pi) ja suorita seuraava komento:

git -klooni

sinulla pitäisi olla uusi kansio, oikea, joka sisältää kolme tiedostoa: LICENSE.md, README.md ja starboard_s16.py. Kokeile oikeanpuoleista ohjelmaa suorittamalla se pythonin kautta:

sudo python./starboard_s16.py

ja sinun pitäisi saada joukko hiukkasia liikkumaan eri nopeuksilla ja hajoamaan eri nopeuksilla. Noin 10 000 punkin välein (voit siirtyä python -skriptiin muokataksesi/muuttaaksesi tätä) se vaihtaa tilaa (niitä on neljä: RGB, HSV, Rainbow ja Harmaasävy).

Joten nyt ei ole muuta kuin tehdä oikeanpuoleinen koodi käynnistyksen yhteydessä. Teemme sen muokkaamalla (sudolla) /etc/rc.local. Haluat vain lisätä seuraavan rivin ennen komentosarjan "exit 0":

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

Kun olet tehnyt sen, käynnistä pi uudelleen - kun se on käynnistynyt käynnistysjärjestyksen jälkeen, starboard_s16.py -komentosarjan pitäisi käynnistyä heti!

Jos haluat kiertää käsikirjoitusta, voit tehdä sen vapaasti - se on lisensoitu GNU GPL 3.0: n mukaisesti. Jos skripti ei toimi sinulle tai sinulla on ongelmia sen kanssa, voit kertoa minulle tai lähettää virheen githubissa, niin katson, mitä voin tehdä korjataksesi sen!

Viimeinen asia, jonka haluat tehdä, on asettaa SSH pi: lle, jotta voit etäkäyttää ja sammuttaa sen turvallisesti. Haluat / ehdottomasti / haluat vaihtaa salasanasi (passwd -komennon kautta), ja löydät ohjeet ssh: n käyttöön ottamiseksi (myös komentoriviltä) täältä.

Suositeltava: