Kazalo:

RPi 3 Starboard / Generator delcev: 6 korakov (s slikami)
RPi 3 Starboard / Generator delcev: 6 korakov (s slikami)

Video: RPi 3 Starboard / Generator delcev: 6 korakov (s slikami)

Video: RPi 3 Starboard / Generator delcev: 6 korakov (s slikami)
Video: Rpi Particle Generator 2024, Julij
Anonim
Image
Image
Sestavite LED ploščo
Sestavite LED ploščo

Vam je z Raspberry Pi dolgčas? Ali ste pripravljeni poveljevati zelo elementarnim silam vesolja, priklicati in odpuščati fotone po svoji volji? Ali želite le nekaj zanimivega obesiti v svojo dnevno sobo ali pa kakšen domišljijski projekt, ki bi ga objavili na facebooku, da bi Denise pokazali, da ste v teh dneh v redu, hvala lepa? Ali ste ujeti v računalniški simulaciji in zapravljate ure, dokler niste osvobojeni ali izbrisani? Če vas kateri od teh ali vsi opisujejo, potem [glas napovedovalca] Dobrodošli!

Ta vadnica vam bo pokazala, kako sestaviti in nastaviti zaslon generatorja delcev z uporabo Raspberry Pi 3 in nekaterih matričnih plošč RGB. Trajalo bi od ene do dveh ur, končni izdelek pa bo približno 30 "x8" (ne vključuje Pi) in ga lahko namestite na steno. Je zelo kul dekoracija za dnevno sobo, pisarno, igralnico ali kamor koli drugam, kamor jo želite postaviti.

Preden začnete, boste potrebovali naslednje in kakšni so približni stroški:

  • Rpi 3 + SD kartica + etui + napajalnik: 70 USD (pri Canakitu, vendar jih lahko verjetno kupite ceneje, če jih kupite ločeno.)
  • 4x 32x32 RGB LED matrika (po možnosti p6 v zaprtih prostorih s 1/16 skeniranjem): 80–100 USD, poslano na Alibabi ali Aliexpressu; 160 dolarjev za Adafruit ali Sparkfun.
  • Klobuk Adafruit RGB Matrix: 25 USD
  • Napajanje 5V 4A: 15 USD
  • Natisnjeni posnetki v 3D: 1 USD (ti so za povezovanje plošč in njihovo obešanje na steno; če nimate dostopa do 3D tiskalnika, jih lahko uporabite skupaj s kosim trakom in nekaj nosilcev iz trgovine s strojno opremo do obesite ga na steno. Poskušal sem najti oblikovalske datoteke ali datoteke.stls za te, vendar se zdi, da so prišle z zemlje. Posnetke je precej enostavno modelirati.)
  • 14x vijaki M4x10: 5 USD
  • Štirje IDX kabli 4x8 in tri napajalne kable za matrike RGB (ne vem, kako se temu reče!). Ti bi morali biti vključeni v vaše LED plošče.
  • Skupaj: približno 200 USD, daj ali vzemi.

Projekt ne zahteva spajkanja ali posebnega znanja programiranja; predpostavlja se, da veste, kako zapisati sliko na kartico microSD. Če niste prepričani, kako to storiti, ima fundacija Raspberry Pi dobro vadnico.

Predvideva tudi, da imate osnovno znanje o tem, kako narediti stvari iz ukazne vrstice v Linuxu, pri sprejemu kode pa predpostavljate, da poznate osnove Pythona (vendar - vam ni treba slediti korakom po korakih, da bi lahko ustvarili in zaženite generator delcev.) Če se pri katerem koli od korakov zataknete, vprašajte ali objavite vprašanje v /r /raspberry_pi (kar je tudi, predvidevam, glavna publika za to navodilo)

1. korak: Sestavite LED ploščo

Sestavite LED ploščo
Sestavite LED ploščo

Najprej boste posamezne LED plošče 32x32 sestavili v eno veliko ploščo velikosti 128x32. Pogledati morate svoje plošče in poiskati puščice, ki označujejo vrstni red povezav; na mojem so tik ob priključkih IDC HUB75/2x8. Prepričajte se, da so puščice usmerjene od mesta, kjer se bo Rpi povezal (desno na zgornji fotografiji) navzdol po dolžini plošče.

Prav tako morate priključiti napajalne kable. Večina teh kablov ima dva ženska priključka, ki se pritrdijo na plošče, in en komplet lopatic, ki se priključi na vir napajanja. Plošče, s katerimi delam, imajo indikatorje za 5V in GND skoraj v celoti skrite pod samimi priključki, vendar se kabli povezujejo samo v eno smer. Poskrbeti boste morali, da vse 5V skupaj povežete in vse GND skupaj, kajti če jih napajate nazaj, jih boste skoraj zagotovo ocvrli.

Ker so bili napajalni kabli, priloženi mojim ploščam, tako kratki, sem moral enega podaljšati tako, da sem vtič lopatice vtaknil v konektor drugega (To je precej preprosto - morda boste morali terminale lopatice rahlo upogniti navznoter, vendar sem za vsak slučaj sem priložil sliko). Končal sem z dvema kompletoma lopaticnih terminalov in enim 2x8 IDC priključkom desno od moje zdaj podolgovate LED plošče.

Opazili boste tudi, da imam dva vijaka, ki nista pritrjena na nič na obeh straneh plošče; ti bodo na vrhu, ko se vse skupaj obrne, in se bodo uporabili za pritrditev na steno.

Torej - ko povežete vse plošče skupaj s sponkami, 2x8 IDC kabli in napajalnimi kabli, ste pripravljeni na naslednji korak!

2. korak: Pripravite Raspberry Pi

Nato boste LED ploščo (zaenkrat) odstranili in Pi 3 pripravili za delovanje. Uporabljali bomo Raspbian Stretch Lite in hzellerjevo knjižnico matrik RGB (namesto knjižnice matrik Adafruit, ki je starejša in ne vzdržuje.)

Najprej boste želeli zapisati sliko Raspbian Lite na kartico SD; ko to storite, priključite monitor in tipkovnico na pi in ga zaženite. (To lahko storite tudi brez glave, bodisi prek ssh ali serijskega priključka, če pa grete tako, vam verjetno ne potrebujem, da vam povem, kako to storiti.) Za to potrebujete internetno povezavo; Če imate wifi, povežite Pi z brezžičnim omrežjem tako, da uredite /etc/wpa_supplicant/wpa_supplicant.conf in zaženete wpa_cli -i wlan0 reconfigure. (Če tega še niste storili, lahko tukaj dobite navodila).

Ko se povežete z internetom, bomo posodobili nastavitve skladišča dpkg in prenesli knjižnice, ki jih potrebujemo, z izvajanjem naslednjih ukazov:

sudo apt-get posodobitev

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

git clone

Zdaj moramo sestaviti in namestiti matrično kodo. Torej pojdite v mapo, ki vsebuje knjižnico:

cd rpi-rgb-led-matrika

in ga sestavite (to lahko traja minuto):

make && make build-python

in namestite vezi python:

sudo make install-python

Če med sestavljanjem kode knjižnice pride do napak, se vrnite in se prepričajte, da ste pravilno namestili python-dev in python-pil! Povezave python se ne bodo prevedle brez namestitve obeh teh paketov.

Prav tako boste morali z urejanjem /boot/config.txt onemogočiti zvočni izhod vašega Pi-ja (vgrajen zvok moti kodo matrice). Poiščite vrstico z napisom dtparam = audio = vklopljeno in jo spremenite v dtparam = audio = off.

Če je vse sestavljeno v redu (dobili boste nekaj opozoril glede protokolov Wstrict), mora biti vaš pi pripravljen za zagon matrične plošče. Pojdi naprej in ga izklopi (sudo shutdown now), ga izključi in v naslednjem koraku bomo svetlobno ploščo povezali s pi.

3. korak: Priključite Pi + Matrix Hat + LED ploščo

Priključite Pi + Matrix Hat + LED ploščo
Priključite Pi + Matrix Hat + LED ploščo

Torej, zdaj, ko je vaš Pi izklopljen in priključen, povežimo matrični klobuk s pi in LED ploščo z matričnim klobukom. Če vaš Pi še ni v tem primeru, je pravi čas, da ga vstavite.

Namestite klobuk matrice tako, da ga položite z zatiči GPIO na Pi in ga nežno potisnete navzdol z enakomerno silo na obeh straneh. Prepričajte se, da so zatiči pravilno poravnani, tako da ženske glave na klobuku natančno pokrivajo zatiče GPIO na pi. Če ga poravnate, to ni katastrofa; le nežno ga izvlecite in poravnajte vse zatiče, ki so se upognili.

Ko nosite klobuk, postavite Pi desno od sestavljene LED plošče (še enkrat znova preverite napajalne povezave in se prepričajte, da puščice kažejo od Pi navzdol po plošči) in povežite IDC kabel do matričnega klobuka.

Nato boste želeli priključiti lopatice za napajanje v priključni blok matričnega klobuka. Na vsaki strani imate dva priključka za lopato, vendar se morata oba dobro prilegati. Najprej odvijte vijake in - to je samoumevno - obvezno vstavite 5V priključke na stran z oznako + (ti morajo biti rdeči, vendar - še enkrat - dvakrat preverite svoje konektorje in ne domnevajte, da so izdelani pravilno) in priključki GND (ti naj bodo črni) na strani z oznako -. Ko so notri, privijte vijake na vrhu spončnega bloka in za ta korak bi morali imeti nekaj, kar izgleda kot slika glave.

Morda ste opazili, da ta posebna konfiguracija pusti polovico lopatice na obeh straneh izpostavljeno in lebdi le milimetre nad matrico (in ne zelo daleč drug od drugega.) IN - lopatice bodo kmalu nosi več voltov in več amperov surove energije. Je to (slišim, da sprašujete z druge strani zaslona) res prava pot? Je to, (se nagnete bližje in šepetate), dobra ideja?

In odgovor je (odgovorim in skomignem z rameni) - ne, ni. Pravilen način bi bil, da odstranite lopatice s napajalnih kablov in jih ponovno stisnete v pravi konektor za to sponko (ali pa jih pustite kot gole žice in jih priključite brez priključka v blok). Če tega ne storite, lahko okoli izpostavljene strani priključka lopatice položite toplotno skrčljivo cev ali pa jo preprosto zavijete v električni trak. Toda svet je padel in človek je len in zaman, zato tega nisem storil.

Toda - zaviti ali razviti - so lopatice priključene na priključni blok in pripravljeni smo na naslednji korak.

4. korak: Preizkusite matriko RGB

Zdaj, ko je vaš Pi priključen na svetlobno ploščo, obrnite ploščo in znova vklopite Pi. Matrični klobuk lahko napajate, ko je Pi priključen; če pa vklopite klobuk pred Pi, se bo Pi poskušal zagnati s premajhnim tokom in se bo bridko pritoževal (in lahko povzroči paniko jedra in se sploh ne bo zagnal.)

Če imate težave pri zagonu Pi z nameščenim matričnim klobukom, se prepričajte, da uporabljate dovolj močan napajalnik za Pi (2A+ bi morala biti dobra) in poskusite priključiti napajalnik za klobuk in za Pii v isti razdelilnik ali podaljšek in jih skupaj vklopite.

Ko se Pi zažene, smo pripravljeni preizkusiti matrice. Pojdite tja, kjer so vzorci vezave python (cd/rpi-rgb-led-matrix/bindings/python/vzorci) in preizkusite generator vrtljivih blokov z naslednjim ukazom:

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

Zagnati ga morate kot sudo, ker matrična knjižnica pri inicializaciji potrebuje dostop do strojne opreme na nizki ravni. -M določa način, kako so plošče povezane s pi (v tem primeru klobuk iz adafruta), veriga --led pa -uganili ste -koliko plošč smo povezali skupaj. Vrstice in stolpci na plošči so privzeto nastavljeni na 32, zato smo tam dobri.

Zdaj, ko program izvedete, se bo zgodila ena od dveh (ali res ena od treh) stvari:

  • Se ne zgodi nič
  • Na sredini svetlobne deske dobite lep vrtljiv blok.
  • Svetlobna tabla deluje, uh, mislim, vendar izgleda … čudno (polovica je zelena, nekatere vrstice ne svetijo itd.)

Če se nič ne zgodi ali če je plošča videti čudno, pritisnite ctrl+c, da zapustite vzorčni program, izklopite pi in preverite vse svoje povezave (kabel IDC, napajanje, preverite, ali sta oba napajalnika priključena itd.) Prepričajte se tudi, da je klobuk pravilno priključen; če tega ne odpravite, ga odnesite na eno ploščo (pri preizkusu uporabite --led-chain 1) in preverite, ali je morda ena od plošč slaba. Če to ne deluje, si oglejte nasvete za odpravljanje težav podjetja Hzeller. če TO še vedno ne deluje, poskusite objaviti na /r /raspberry_pi (ali na forumih Adafruit, če ste svoje plošče dobili od Adafruit, ali pa zamenjati kup itd.)

Če nekako deluje, vendar še vedno izgleda čudno (morda kot slika glave tega razdelka), potem ko ste preverili povezave, je možno, da imate vse pravilno povezane, da plošče delujejo pravilno, vendar se dogaja še kaj drugega naprej. Kar nas bo pripeljalo do naslednjega koraka - več preusmeritve kot koraka - pri stopnjah multipleksiranja in skeniranja. (Če vaša LED plošča deluje dobro in vas notranje delovanje teh plošč ne zanima, preskočite naslednji korak.)

5. korak: Stopnje multipleksiranja in skeniranja (ali: trenutna preusmeritev na poti v grob)

Torej, ena od napak, ki sem jih naredil, ko sem naročil svoj prvi komplet plošč pri Alibabi, je, da sem dobil zunanje plošče (zakaj ne, sem si mislil - vodotesne so in svetlejše!). In ko sem jih priklopil na svoj matrični klobuk, je bilo videti … da ni v redu.

Da bi razumeli, zakaj je tako, si bomo vzeli minuto časa, da si ogledamo Phila Burgessa iz Adafrutovega opisa delovanja teh plošč. Opazili boste, da Burgess poudarja, da plošče ne prižgejo vseh LED naenkrat - prižgejo niz vrstic. Razmerje med višino plošče v pikslih in številom vrstic, ki zasvetijo hkrati, imenujemo hitrost skeniranja. Tako na primer - Na plošči 32x32 s skeniranjem 1/16 se hkrati osvetlita dve vrstici (1 in 17, 2 in 18, 3 in 19 itd.), Vse do plošče, nato pa se krmilnik ponovi. Večina knjižnic, ki poganjajo matrike RGB, je zgrajena za plošče, kjer je stopnja optičnega branja 1/2 višine v slikovnih pikah - to pomeni, da poganjajo dve vrsti LED naenkrat.

Zunanje plošče (in nekatere notranje plošče - pred naročilom si oglejte specifikacije) imajo stopnje skeniranja 1/4 višine v pikslih, kar pomeni, da pričakujejo, da bodo naenkrat prevožene štiri vrstice. Zaradi tega so svetlejši (kar je dobro), vendar veliko standardne kode ne deluje z njimi (kar je slabo). Poleg tega imajo ponavadi notranje nepravilnosti v pikslih, kar zahteva preoblikovanje vrednosti x in y v programski opremi, da bi lahko obravnavali prave slikovne pike. Zakaj so narejeni tako? Nimam pojma. Ali veš? Če je tako, mi prosim povejte. V nasprotnem primeru bo morala ostati skrivnost.

Torej, če imate eno od teh čudnih zunanjih plošč, imate (verjetno) srečo! hzeller je nedavno v svojo knjižnico dodal podporo za običajne konfiguracije teh vrst plošč. Več o tem lahko preberete na strani github za projekt, lahko pa posredujete --led-multiplexing = {0, 1, 2, 3} vzorčni kodi (morda se boste morali pretvarjati, da imate dvojne dolžine verig iz polovičnih dolžin) in bi morala delovati.

Obstaja nekaj vzorcev preoblikovanja slikovnih pik, ki pa niso podprti - in (uganite, kaj) imajo moje plošče enega od njih! Zato sem moral napisati svojo kodo za preoblikovanje (tudi jaz - iz kakršnega koli razloga - moram knjižnici povedati, naj se obnaša, kot da imam osem plošč 16x32 povezanih skupaj). ki je sledeč:

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

effK = k % 32

modY = k

modX = j

#modX in modY sta spremenjena X in Y;

#effJ in effK se prepričajte, da se pred potiskanjem preoblikujemo v matriki 32x32

če ((effJ)> 15):

modX = modX + 16

če ((effK)> 7):

modY = modY - 8

modX = modX + 16

če ((effK)> 15):

modX = modX - 16

če ((effK)> 23):

modY = modY - 8

modX = modX + 16

#Nato jih potisnemo na pravo mesto (vsak x+32 premakne eno ploščo)

če (j> 31):

modX += 32

če (j> 63):

modX += 32

če (j> 95):

modX += 32

return (modX, modY)

Če imate ploščo, kot je moja, bi to morda delovalo. Če se ne bo, boste morali sami napisati - torej, veste, veliko sreče in vse dobro.

6. korak: program Starboard (ali: Nazaj na skladbo in pripravljen na slikovno piko)

Zdaj, ko imate matrice operativne in pripravljene za delo, morate le postaviti desni program na svoj Pi in ga pripraviti za uporabo. Prepričajte se, da ste v domačem imeniku uporabnika pi (cd /home /pi) in zaženite naslednji ukaz:

git clone

imeti bi morali novo mapo, desno, ki vsebuje tri datoteke: LICENSE.md, README.md in starboard_s16.py. Preizkusite program desnega desnega kota tako, da ga zaženete prek pythona:

sudo python./starboard_s16.py

in morali bi dobiti kup delcev, ki se gibljejo z različno hitrostjo in razpadajo z različno hitrostjo. Vsakih 10.000 klopov (za urejanje/spreminjanje pojdite v skript python) bo spremenil načine (obstajajo štirje: RGB, HSV, Rainbow in Greyscale).

Torej, edino, kar je še treba storiti, je, da se zagonska koda zažene ob zagonu. To bomo storili z urejanjem (s sudo) /etc/rc.local. Kar želite narediti, je, da tik pred "izhodom 0" v skriptu dodate naslednjo vrstico:

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

Ko to storite, znova zaženite pi - ko teče skozi zagonsko zaporedje, se mora skript starboard_s16.py zagnati takoj!

Če želite pobrskati po skriptu, lahko to storite - licencirano je pod GNU GPL 3.0. Če vam skript ne bo deloval ali imate težave z njim, mi sporočite ali pošljite napako na githubu, pa bom videl, kaj lahko popravim!

(Zelo) zadnja stvar, ki bi jo morda želeli narediti, je, da nastavite SSH na pi, tako da se lahko odmaknete in varno izklopite. Geslo boste / zagotovo / želeli spremeniti (z ukazom passwd), tukaj pa najdete navodila za omogočanje ssh (tudi iz ukazne vrstice).

Priporočena: