Innholdsfortegnelse:

RPi 3 styrbord / partikkelgenerator: 6 trinn (med bilder)
RPi 3 styrbord / partikkelgenerator: 6 trinn (med bilder)

Video: RPi 3 styrbord / partikkelgenerator: 6 trinn (med bilder)

Video: RPi 3 styrbord / partikkelgenerator: 6 trinn (med bilder)
Video: 2022 RIVIERA 78 Флагманская моторная яхта BLUEWATER Ocean Capable дальний тур на моторной яхте 2024, November
Anonim
Image
Image
Monter LED -kortet
Monter LED -kortet

Føler du deg lei av din Raspberry Pi? Er du klar til å styre de helt elementære kreftene i universet, innkalle og avvise fotoner etter ønske? Vil du bare ha noe interessant å henge i stua, eller et fancy prosjekt å legge ut på facebook for å vise Denise at du har det bra i disse dager, tusen takk? Er du fanget i en datasimulering og vekker bort timene til du blir frigjort eller slettet? Hvis noen eller alle disse beskriver deg, så [kunngjørerstemme] Velkommen!

Denne opplæringen vil vise deg hvordan du monterer og konfigurerer en partikkelgeneratorskjerm ved hjelp av en Raspberry Pi 3 og noen RGB -matrisepaneler. Det bør ta deg mellom en og to timer, og det ferdige produktet vil være omtrent 30 "x8" (ikke inkludert Pi) og kan monteres på veggen. Det er en ganske kul dekorasjon for en stue, et kontor, et spillrom eller hvor du vil plassere det.

Dette trenger du før du begynner, og hva de omtrentlige kostnadene er:

  • Rpi 3 + SD -kort + veske + strømforsyning: $ 70 (fra Canakit, men du kan sannsynligvis få delene billigere hvis du kjøper dem separat.)
  • 4x 32x32 RGB LED Matrix (helst p6 innendørs med 1/16 scan): $ 80- $ 100 sendt på Alibaba eller Aliexpress; $ 160 på Adafruit eller Sparkfun.
  • Adafruit RGB Matrix hatt: $ 25
  • 5V 4A strømforsyning: $ 15
  • 3D -trykte klipp: $ 1ish (disse er for å koble panelene og henge dem på veggen; hvis du ikke har tilgang til en 3D -skriver, kan du bruke en pelslist til å holde dem sammen og noen braketter fra jernvarehandelen til heng den fra veggen. Jeg prøvde å finne designfilene eller.stls for disse, men de ser ut til å ha gått fra jorden. Klippene er ganske enkle å modellere.)
  • 14x M4x10 bolter: $ 5ish
  • Fire 4x8 IDC -kabler og tre strømkabler for RGB -matrisene (jeg vet ikke hva disse heter!). Disse burde vært inkludert i LED -panelene dine.
  • Totalt: Rundt $ 200, gi eller ta.

Prosjektet krever ikke at du lodder eller har noen spesifikk programmeringskunnskap; det antar at du vet hvordan du skriver et bilde til et microSD -kort. Hvis du ikke er sikker på hvordan du gjør det, har Raspberry Pi -stiftelsen en god opplæring her.

Det forutsetter også at du har en grunnleggende kunnskap om hvordan du gjør ting fra kommandolinjen i Linux, og kodegjennomgangen antar at du kjenner det grunnleggende i Python (men - du trenger ikke å følge kodegjennomgangen for å kunne bygge og kjør partikkelgeneratoren.) Hvis du blir sittende fast i noen av trinnene, kan du stille et spørsmål eller legge inn /r /raspberry_pi (som også er, antar jeg, hovedpublikummet for dette instruerbare)

Trinn 1: Monter LED -kortet

Monter LED -kortet
Monter LED -kortet

Først skal du montere de individuelle 32x32 LED -panelene til et stort 128x32 panel. Du må se på tavlene dine og finne de små pilene som angir tilkoblingsrekkefølge; på min er de like i nærheten av HUB75/2x8 IDC -kontaktene. Sørg for at pilene peker fra hvor Rpi vil koble seg (av til høyre på bildet ovenfor) ned langs brettets lengde.

Du må også koble til strømkablene. De fleste av disse kablene har to hunkontakter som festes til brettene, og ett sett med spadeterminaler som festes til strømkilden. Panelene jeg jobber med har indikatorene for 5V og GND nesten helt gjemt under kontaktene selv, men kablene kobles bare i en retning. Du vil være sikker på at du kobler alle 5Vene sammen og alle GND -ene sammen, for hvis du driver disse bakover, kommer du nesten helt sikkert til å steke dem.

Fordi strømkablene som fulgte med brettene mine var så korte, måtte jeg forlenge en ved å sette stikkene på spadeterminalen inn i kontakten på en annen (Dette er ganske greit - du må kanskje bøye spadeterminalene litt innover, men jeg ' har tatt med et bilde for sikkerhets skyld). Jeg endte opp med to sett med spade-terminaler og en 2x8 IDC-kontakt til høyre for mitt nå forlengede LED-kort.

Du vil også legge merke til at jeg har to bolter som ikke er festet til noe i hver ende av brettet; disse vil være på toppen når det hele blir snudd, og vil bli brukt til å feste det på veggen.

Så - når du har koblet alle panelene sammen med klips, 2x8 IDC -kabler og strømkabler, er du klar til å gå videre til neste trinn!

Trinn 2: Forbered Raspberry Pi

Deretter skal du sette LED -kortet til side (for nå) og gjøre Pi 3 klar til å kjøre den. Vi bruker Raspbian Stretch Lite og hzellers RGB -matrisebibliotek (i stedet for Adafruits matrisebibliotek, som er eldre og ikke vedlikeholdt.)

Først vil du skrive Raspbian Lite -bildet til et SD -kort; Når du har gjort dette, kan du koble en skjerm og et tastatur til pi og starte den opp. (Du kan også gjøre dette hodeløst, enten over ssh eller en seriell tilkobling, men hvis det er veien du trenger, trenger du sannsynligvis ikke at jeg skal fortelle deg hvordan du gjør det.) Du trenger en internettforbindelse for dette; Hvis du har wifi, kobler du Pi til det trådløse nettverket ved å redigere /etc/wpa_supplicant/wpa_supplicant.conf og kjøre wpa_cli -i wlan0 omkonfigurering. (Hvis du aldri har gjort dette, kan du få instruksjoner her).

Når du er koblet til internett, oppdaterer vi innstillingene for dpkg -depotet og laster ned bibliotekene vi trenger ved å kjøre følgende kommandoer:

sudo apt-get oppdatering

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

git-klon

Nå må vi kompilere og installere matrisekoden. Så du går inn i mappen som inneholder biblioteket:

cd rpi-rgb-led-matrise

og kompiler det (dette kan ta et minutt):

lage && lage build-python

og installer python -bindingene:

sudo lag install-python

Hvis du får feil mens du kompilerer bibliotekskoden, må du gå tilbake og kontrollere at du har installert python-dev og python-pil riktig! Python -bindingene kompileres ikke uten at begge pakkene er installert.

Du må også deaktivere Pi-lydens utgang (innebygd lyd forstyrrer matrisekoden) ved å redigere /boot/config.txt. Se etter linjen som sier dtparam = audio = on og endre den til dtparam = audio = off.

Hvis alt er OK (du får noen advarsler om Wstrict-prototyper), bør pi-en din være klar til å kjøre matrisekortet. Fortsett og slå den av (sudo nedleggelse nå), koble den fra, så kobler vi lysbordet til pi i neste trinn.

Trinn 3: Koble til Pi + Matrix Hat + LED Board

Koble til Pi + Matrix Hat + LED Board
Koble til Pi + Matrix Hat + LED Board

Så nå som Pi er slått av og koblet fra, la oss koble matrisehatten til pi og LED -kortet til matrisehatten. Hvis Pi ikke allerede er i tilfelle, er det en god tid å sette den inn der.

Installer matrisehatten ved å legge den opp med GPIO -pinnene på Pi og skyve den forsiktig ned med jevn kraft på begge sider. Sørg for at pinnene er stilt riktig opp, slik at hunnhodene på hatten nøyaktig dekker GPIO -pinnene på pi. Hvis du justerer det feil, er det ikke en katastrofe; bare trekk den forsiktig tilbake og rett ut eventuelle pinner som ble bøyd.

Når du har fått på deg hatten, setter du Pi til høyre for det monterte LED -kortet (dobbeltsjekk strømtilkoblingene igjen, og sørg for at pilene peker fra Pi nedover brettets lengde) og koble til IDC kabel til matrikshatten.

Deretter vil du koble spadeterminalene for strømmen til matrisehattens rekkeklemme. Du har to spade -kontakter per side, men de skal passe godt inn der. Løsne skruene først og - Dette burde være en selvfølge - sørg for at du setter 5V -terminalene i siden merket + (disse skal være røde, men - igjen - dobbeltsjekk kontaktene dine og ikke anta at de ble produsert riktig) og GND -terminalene (disse skal være svarte) på siden merket -. Når de er der inne, stram du til skruene på toppen av rekkeklemmen, og du bør ha noe som ser ut som topptekstbildet for dette trinnet.

Nå - du har kanskje lagt merke til at denne spesielle konfigurasjonen etterlater halvparten av spadeterminalen på hver side eksponert og svever bare milimeter over matrisehatten (og ikke veldig mye lenger fra hverandre.) OG - spadeterminalene vil snart være bærer både flere volt og flere ampere Raw Power. Er dette, (jeg kan høre deg spørre fra den andre siden av skjermen) virkelig The Right Way To Do It? Er det, (du lener deg nærmere og hvisker), en god idé?

Og svaret er (jeg svarer og trekker på skuldrene) - nei, det er det ikke. Den riktige måten å gjøre det på er å fjerne spadeterminalene fra strømkablene og krympe dem inn på den riktige kontakten for den aktuelle rekkeklemmen (eller å la dem stå som blanke ledninger og koble dem uten kontakt til blokken). Hvis du ikke klarer det, kan du sette noen varmekrympeslanger rundt den eksponerte siden av spadekontakten eller bare pakke den inn i elektrisk tape. Men verden er falt og mennesket er lat og forfengelig, så det har jeg ikke gjort.

Men - innpakket eller uinnpakket - er spadeterminalene koblet til rekkeklemmen, og vi er klare til å gå videre til neste trinn.

Trinn 4: Test RGB -matrisen

Nå som Pi er koblet til lysbordet, snu kortet og slå på Pi igjen. Du kan drive matrisehatten etter at Pi er plugget inn; Hvis du slår på hatten før Pi, vil Pi imidlertid prøve å starte opp med ikke nok strøm, og vil klage bittert (og kan gi deg en kjernepanikk og ikke starte i det hele tatt.)

Hvis du har problemer med å få Pi til å starte opp med matrikshatten på, må du kontrollere at du bruker en kraftig nok strømforsyning til Pi (2A+ burde være bra) og prøve å koble til både strømforsyningen til hatten og Pii i den samme strømuttaket eller skjøteledningen, og slå dem sammen.

Når Pi har startet, er vi klare til å teste matrisene. Gå til hvor pythonbindingsprøvene er (cd/rpi-rgb-led-matrix/bindings/python/samples) og prøv den roterende blokkgeneratoren med følgende kommando:

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

Du må kjøre den som sudo fordi matrisebiblioteket trenger lavnivåtilgang til maskinvare ved initialisering. -M spesifiserer måten panelene er koblet til pi (i dette tilfellet en adafruit hatt) og --led -kjeden spesifiserer -du gjettet det -hvor mange paneler vi har lenket sammen. Rader og kolonner per panel er begge standard til 32, så vi har det bra der.

Nå - når du har utført programmet, kommer en av to (eller egentlig en av tre) ting til å skje:

  • Ingenting skjer
  • Du får en fin roterende blokk midt på lysbrettet.
  • Lysbordet fungerer, jeg tror, men det ser … rart ut (halvparten er grønn, noen rader lyser ikke opp, etc.)

Hvis ingenting skjer, eller hvis panelet ser rart ut, trykker du på ctrl+c for å gå ut av prøveprogrammet, slå av pi og sjekke alle tilkoblingene dine (IDC -kabel, strøm, sørg for at begge strømforsyningene er plugget inn, etc.) Sørg også for at hatten er riktig tilkoblet; hvis det ikke løser det, ta det ned til ett panel (sørg for å bruke --led-chain 1 når du tester det) og se om et av panelene kan være dårlig. Hvis DET ikke fungerer, sjekk hzellers feilsøkingstips. hvis DET fortsatt ikke fungerer, kan du prøve å legge ut på /r /raspberry_pi (eller Adafruit -forumene, hvis du har panelene fra Adafruit, eller stable exchange, etc, etc.)

Hvis det fungerer, men fremdeles ser rart ut (kanskje som overskriften for denne delen) etter at du har sjekket tilkoblingene, er det mulig at du har alt tilkoblet riktig, at panelene fungerer som de skal, men at noe annet går på. Noe som vil ta oss til vårt neste trinn - mer en avledning enn et skritt - på multipleksing og skanningshastigheter. (Hvis led -bordet ditt fungerer fint og du ikke er interessert i de indre funksjonene til disse panelene, kan du hoppe over neste trinn.)

Trinn 5: Multiplexing og skanningshastigheter (eller: en momentan avledning på veien til graven)

Så en av feilene jeg gjorde da jeg bestilte mitt første sett med paneler utenfor Alibaba, er at jeg fikk uteplater (hvorfor ikke, tenkte jeg - de er vanntette og lysere!). Og da jeg koblet dem til matrishatten min, så ting ut.. ikke riktig.

For å forstå hvorfor det er, tar vi et minutt til å se på Phil Burgess fra Adafruit's beskrivelse av hvordan disse panelene fungerer. Du vil legge merke til at Burgess påpeker at panelene ikke lyser opp alle LED -ene samtidig - de lyser opp sett med rader. Forholdet mellom panelhøyde i piksler og antall rader som lyser opp med en gang kalles skanningshastighet. Så, for eksempel - På et 32x32 panel med 1/16 skanning lyser to rader (1 og 17, 2 og 18, 3 og 19 osv.) Helt ned på brettet, og deretter gjentar kontrolleren. De fleste biblioteker som driver RGB -matriser er bygget for paneler der skanningsfrekvensen er 1/2 av høyden i piksler - det vil si at de driver to rader med lysdioder samtidig.

Utendørspaneler (og noen innendørspaneler - sørg for at du ser på spesifikasjonene før du bestiller) har skannehastigheter som er 1/4 av høyden i piksler, noe som betyr at de forventer at fire linjer kjøres samtidig. Dette gjør dem lysere (som er bra), men gjør at mange standardkoder ikke fungerer med dem (noe som er dårlig). I tillegg til det har de en tendens til å ha pikslene ute av drift internt, noe som krever transformering av x- og y -verdiene i programvare for å adressere de riktige pikslene. Hvorfor er de laget på denne måten? Jeg har ingen anelse. Vet du? Fortell meg i så fall. Ellers må det bare forbli et mysterium.

Så hvis du har en av disse rare utendørs panelene, har du (sannsynligvis) flaks! hzeller har nylig lagt til støtte for vanlige konfigurasjoner av denne typen paneler i biblioteket. Du kan lese mer om det på github-siden for prosjektet, men du kan sende --led-multiplexing = {0, 1, 2, 3} til eksempelkoden (du må kanskje også late som om du har en dobbeltlengdet kjede av halvlange paneler) og det burde fungere.

Det er imidlertid noen pixeltransformasjonsmønstre som ikke støttes - og (gjett hva) panelene mine har en av dem! Så jeg måtte skrive min egen transformasjonskode (jeg må - uansett grunn - fortelle biblioteket å oppføre seg som om jeg har åtte 16x32 paneler lenket sammen). som er som følger:

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

effK = k % 32

modY = k

modX = j

#modX og modY er de modifiserte X og Y;

#effJ og effK sørg for at vi transformerer i en 32x32 matrise før vi skyver

hvis ((effJ)> 15):

modX = modX + 16

hvis ((effK)> 7):

modY = modY - 8

modX = modX + 16

hvis ((effK)> 15):

modX = modX - 16

hvis ((effK)> 23):

modY = modY - 8

modX = modX + 16

#Derefter skyver vi dem til riktig sted (hver x+32 flytter ett panel)

hvis (j> 31):

modX += 32

hvis (j> 63):

modX += 32

hvis (j> 95):

modX += 32

retur (modX, modY)

Hvis du har et panel som mitt, kan dette fungere for det. Hvis den ikke gjør det, må du skrive din egen - så du vet, lykke til og god tid.

Trinn 6: Styrbord -programmet (eller: Back on Track and Ready to Pixel)

Nå som du har matrisene dine i drift og er klare til å gå, er alt du trenger å gjøre å sette styrbord -programmet på Pi -en og gjøre den klar til å gå. Sørg for at du er i pi -brukerens hjemmekatalog (cd /home /pi) og kjør følgende kommando:

git -klon

du bør ha en ny mappe, styrbord, som inneholder tre filer: LICENSE.md, README.md og starboard_s16.py. Prøv styrbord -programmet ved å kjøre det gjennom python:

sudo python./starboard_s16.py

og du bør få en haug med partikler som beveger seg i forskjellige hastigheter og forfaller med forskjellige hastigheter. Hver 10. 000 ticks eller så (du kan gå inn i python -skriptet for å redigere/endre dette) det vil endre modus (det er fire: RGB, HSV, Rainbow og Greyscale).

Så nå er det bare å få styrbordskoden til å kjøre ved oppstart. Vi gjør det ved å redigere (med sudo) /etc/rc.local. Det du vil gjøre er å legge til følgende linje rett før "exit 0" i skriptet:

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

Etter at du har gjort det, starter du pi på nytt - når den kjører gjennom oppstartssekvensen, bør starboard_s16.py -skriptet starte opp igjen!

Hvis du vil lete rundt i manuset, kan du gjerne gjøre det - det er lisensiert under GNU GPL 3.0. Hvis skriptet ikke kjører for deg, eller hvis du har problemer med det, er du velkommen til å gi meg beskjed eller sende inn en feil på github, så skal jeg se hva jeg kan gjøre for å fikse det!

Det (aller) siste du kan gjøre er å sette opp SSH på pi, slik at du kan fjernkontrollere og trygt slå det av. Du vil / definitivt / ønsker å endre passordet ditt (via passwd -kommandoen), og du kan finne instruksjoner for å aktivere ssh (også fra kommandolinjen) her.

Anbefalt: