Indholdsfortegnelse:

RPi 3 styrbord / partikelgenerator: 6 trin (med billeder)
RPi 3 styrbord / partikelgenerator: 6 trin (med billeder)

Video: RPi 3 styrbord / partikelgenerator: 6 trin (med billeder)

Video: RPi 3 styrbord / partikelgenerator: 6 trin (med billeder)
Video: 125' BAGLIETTO 38M "ENTERPRISE" СУПЕРЯХТ-ТУР Роскошная яхта на заказ - ЧАСТЬ 2 2024, November
Anonim
Image
Image
Saml LED -kortet
Saml LED -kortet

Føler du dig ked af din Raspberry Pi? Er du klar til at styre de helt elementære kræfter i universet, indkalde og afvise fotoner efter behag? Vil du bare have noget interessant at hænge i din stue eller et smukt projekt at poste på facebook for at vise Denise, at du har det fint i disse dage, mange tak? Er du fanget i en computersimulering og forsvinder timerne, indtil du er frigivet eller slettet? Hvis nogen af eller alle disse beskriver dig, så [annoncerstemme] Velkommen!

Denne vejledning viser dig, hvordan du samler og opsætter en partikelgeneratorskærm ved hjælp af en Raspberry Pi 3 og nogle RGB -matrixpaneler. Det bør tage dig mellem en og to timer, og det færdige produkt vil være cirka 30 "x8" (inkl. Pi) og kan monteres på væggen. Det laver en temmelig sej dekoration til en stue, kontor, spillerum eller hvor du ellers vil placere det.

Inden du går i gang, har du her brug for, og hvad de omtrentlige omkostninger er:

  • Rpi 3 + SD -kort + kuffert + strømforsyning: $ 70 (fra Canakit, men du kan sandsynligvis få delene billigere, hvis du køber dem separat.)
  • 4x 32x32 RGB LED Matrix (helst p6 indendørs med 1/16 scanning): $ 80- $ 100 afsendt på Alibaba eller Aliexpress; $ 160 på Adafruit eller Sparkfun.
  • Adafruit RGB Matrix hat: $ 25
  • 5V 4A strømforsyning: $ 15
  • 3D -printede klip: $ 1ish (disse er til at forbinde panelerne og hænge dem på væggen; hvis du ikke har adgang til en 3D -printer, kan du bruge en pelsstrimmel til at holde dem sammen og nogle beslag fra isenkræmmeren til hæng den fra væggen. Jeg forsøgte at finde designfilerne eller.stls til disse, men de ser ud til at være gået fra jorden. Klippene er dog ret nemme at modellere.)
  • 14x M4x10 bolte: $ 5ish
  • Fire 4x8 IDC -kabler og tre strømkabler til RGB -matricerne (jeg ved ikke, hvad disse hedder!). Disse skulle have været inkluderet i dine LED -paneler.
  • I alt: Omkring $ 200, giv eller tag.

Projektet kræver ikke, at du lodder eller har nogen specifik programmeringskendskab; det går ud fra, at du ved, hvordan du skriver et billede til et microSD -kort. Hvis du ikke er sikker på, hvordan du gør det, har Raspberry Pi -fundamentet en god vejledning her.

Det forudsætter også, at du har en grundlæggende viden om, hvordan du gør ting fra kommandolinjen i Linux, og kodegennemførelsen forudsætter, at du kender det grundlæggende i Python (men - du behøver ikke følge kodegennemgangen for at kunne bygge og Kør partikelgeneratoren.) Hvis du sidder fast i et af trinene, er du velkommen til at stille et spørgsmål eller skrive i /r /raspberry_pi (hvilket også er, jeg antager, hovedpublikummet for dette instruerbare)

Trin 1: Saml LED -kortet

Saml LED -kortet
Saml LED -kortet

Først skal du samle de individuelle 32x32 LED -paneler til et stort 128x32 panel. Du skal kigge på dine tavler og finde de små pile, der angiver forbindelsesrækkefølge; på mine er de lige i nærheden af HUB75/2x8 IDC -stik. Sørg for at have pilene pegende fra hvor Rpi vil forbinde (fra til højre på billedet ovenfor) ned langs brættets længde.

Du skal også tilslutte strømkablerne. De fleste af disse kabler har to hunstik, der fastgøres til brædderne, og et sæt spadeterminaler, der tilsluttes strømkilden. Panelerne, jeg arbejder med, har indikatorerne for 5V og GND næsten helt skjult væk under selve stik, men kablerne tilsluttes kun i en retning. Du vil gerne sikre dig, at du forbinder alle 5V'erne sammen og alle GND'erne sammen, for hvis du driver disse baglæns, vil du næsten helt sikkert stege dem.

Fordi strømkablerne, der fulgte med mine brædder, var så korte, var jeg nødt til at forlænge en ved at indsætte spadeterminalens stik i stikket på en anden (Dette er ret ligetil - du skal muligvis bøje spadeterminalerne lidt indad, men jeg ' har inkluderet et billede for sikkerheds skyld). Jeg endte med to sæt spadeterminaler og et 2x8 IDC-stik til højre for mit nu langstrakte LED-kort.

Du vil også bemærke, at jeg har to bolte, der ikke er fastgjort til noget i hver ende af brættet; disse vil være på toppen, når det hele bliver vendt, og vil blive brugt til at fastgøre det til væggen.

Så - når du har tilsluttet alle panelerne sammen med clips, 2x8 IDC -kabler og strømkabler, er du klar til at gå videre til næste trin!

Trin 2: Forbered Raspberry Pi

Dernæst skal du sætte LED -kortet til side (for nu) og gøre Pi 3 klar til at køre det. Vi bruger Raspbian Stretch Lite og hzellers RGB -matrixbibliotek (i stedet for Adafruit's matrixbibliotek, som er ældre og ikke vedligeholdt.)

Først vil du skrive Raspbian Lite -billedet til et SD -kort; Når du har gjort dette, skal du gå videre og slutte en skærm og et tastatur til pi'en og starte det op. (Du kan også gøre dette hovedløst, enten over ssh eller et serielt stik, men hvis det er den vej, du skal bruge, har du sandsynligvis ikke brug for mig til at fortælle dig, hvordan du gør det.) Du skal bruge en internetforbindelse til dette; Hvis du har wifi, skal du slutte Pi til dit trådløse netværk ved at redigere /etc/wpa_supplicant/wpa_supplicant.conf og køre wpa_cli -i wlan0 omkonfiguration. (Hvis du aldrig har gjort dette, kan du få instruktioner her).

Når du har forbindelse til internettet, opdaterer vi indstillingerne for dpkg -depotet og downloader de biblioteker, vi har brug for, ved at køre følgende kommandoer:

sudo apt-get opdatering

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

git-klon

Nu skal vi kompilere og installere matrixkoden. Så du går ind i mappen, der indeholder biblioteket:

cd rpi-rgb-led-matrix

og kompilér det (dette kan tage et minut):

lav && lav build-python

og installer pythonbindinger:

sudo lav install-python

Hvis du får fejl under kompilering af bibliotekskoden, skal du gå tilbage og sørge for, at du har installeret python-dev og python-pil korrekt! Pythonbindinger kompileres ikke uden at begge disse pakker er installeret.

Du skal også deaktivere din Pi's lydoutput (indbygget lyd forstyrrer matrixkoden) ved at redigere /boot/config.txt. Se efter linjen, der siger dtparam = audio = on, og skift den til dtparam = audio = off.

Hvis alt er sammensat OK (du får et par advarsler om Wstrict-prototyper), skal din pi være klar til at køre matrixkortet. Fortsæt og luk den ned (sudo -lukning nu), tag stikket ud, og vi forbinder lyskortet til pi'et i næste trin.

Trin 3: Tilslut Pi + Matrix Hat + LED Board

Tilslut Pi + Matrix Hat + LED Board
Tilslut Pi + Matrix Hat + LED Board

Så nu hvor din Pi er slukket og frakoblet, lad os forbinde matrixhatten til pi'en og LED -kortet til matrixhatten. Hvis din Pi ikke allerede er i sin sag, er det nu et godt tidspunkt at lægge den derinde.

Installer matrixhatten ved at stille den op med GPIO -benene på Pi og skubbe den forsigtigt ned med jævn kraft på begge sider. Sørg for, at stifterne er placeret korrekt, så hunhovederne på hatten nøjagtigt dækker GPIO -benene på pi'et. Hvis du justerer det forkert, er det ikke en katastrofe; bare forsigtigt trække det tilbage og rette eventuelle stifter, der blev bøjet.

Når du har fået hatten på, skal du sætte Pi'en til højre for det samlede LED -kort (dobbelttjek strømtilslutningerne igen, og sørg for, at pilene peger fra Pi ned langs brættets længde) og tilslut IDC'en kabel til matrixhatten.

Dernæst vil du slutte spadeterminalerne til strømmen til matrixhattens terminalblok. Du har to spade -stik pr. Side, men de skal begge passe fint der. Løsn først skruerne, og - det burde være en selvfølge - sørg for at sætte 5V -terminalerne i siden mærket + (disse skal være røde, men - igen - dobbelttjek dine stik og antag ikke, at de blev fremstillet korrekt) og GND -terminalerne (disse skal være sorte) i siden mærket -. Når de er derinde, stram skruerne oven på klemrækken, og du skal have noget, der ligner overskriftsbilledet til dette trin.

Nu - du har muligvis bemærket, at denne særlige konfiguration efterlader halvdelen af spadeterminalen på hver side udsat og svæver kun milimeter over matrixhatten (og ikke meget længere fra hinanden.) OG - spadeterminalerne vil meget snart være bærer både flere volt og flere ampere Raw Power. Er dette (jeg kan høre dig spørge fra den anden side af skærmen) virkelig den rigtige måde at gøre det på? Er det, (du læner dig nærmere og hvisker), en god idé?

Og svaret er (jeg svarer og trækker på skuldrene) - nej, det er det ikke. Den rigtige måde at gøre det på ville være at fjerne spadeterminalerne fra strømkablerne og krympe dem igen i det korrekte stik til klemrækken (eller lade dem være som bare ledninger og forbinde dem uden stik i blokken). Hvis dette ikke lykkes, kan du lægge en varmekrympeslange omkring den eksponerede side af spadeforbindelsen eller bare pakke den ind i elektrisk tape. Men verden er faldet, og mennesket er doven og forfængelig, så det har jeg ikke gjort.

Men - indpakket eller uindpakket - er spadeterminalerne forbundet til terminalblokken, og vi er klar til at gå videre til næste trin.

Trin 4: Test RGB -matrixen

Nu hvor din Pi er tilsluttet lysbrættet, skal du vende kortet om og tænde for Pi igen. Du kan drive matrixhatten, når Pi er tilsluttet; Hvis du tænder hatten foran Pi, vil Pi dog prøve at starte med ikke nok strøm og klage bittert (og kan give dig en kernepanik og slet ikke starte.)

Hvis du har problemer med at få Pi'en til at starte op med matrixhatten på, skal du sørge for at bruge en tilstrækkelig kraftig strømforsyning til Pi (2A+ burde være god) og prøve at tilslutte både strømforsyningen til hatten og til Pii i den samme strømstik eller forlængerledning, og tænd dem sammen.

Når Pi er startet, er vi klar til at teste matricerne. Gå til hvor pythonbindingsprøverne er (cd/rpi-rgb-led-matrix/bindings/python/samples), og prøv den roterende blokgenerator med følgende kommando:

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

Du er nødt til at køre det som sudo, fordi matrixbiblioteket har brug for lavt niveau adgang til hardware ved initialisering. -M angiver måden panelerne er forbundet til pi (i dette tilfælde en adafruit hat) og --led -kæden angiver -du gættede det -hvor mange paneler vi har lænket sammen. Rækker og kolonner pr. Panel er begge standard til 32, så vi har det godt der.

Nu - når du har udført programmet, vil en af to (eller virkelig en af tre) ting ske:

  • Intet sker
  • Du får en flot roterende blok midt på dit tavle.
  • Tavlen virker, jeg synes, men det ser ud til at være mærkeligt (halvdelen er grøn, nogle rækker lyser ikke osv.)

Hvis der ikke sker noget, eller hvis panelet ser underligt ud, skal du trykke på ctrl+c for at afslutte prøveprogrammet, lukke pi'en og kontrollere alle dine forbindelser (IDC -kabel, strøm, sørg for at begge strømforsyninger er tilsluttet osv.) Sørg også for, at hatten er tilsluttet korrekt; hvis det ikke løser det, skal du tage det ned til et panel (sørg for at bruge --led-chain 1, når du tester det) og se om et af panelerne kan være dårligt. Hvis DET ikke virker, kan du tjekke hzellers fejlfindingstip. hvis DET stadig ikke virker, kan du prøve at sende til /r /raspberry_pi (eller Adafruit -fora, hvis du har dine paneler fra Adafruit, eller stable exchange osv. osv.)

Hvis det sådan virker, men stadig ser underligt ud (måske som overskriftsbilledet til dette afsnit), efter at du har kontrolleret forbindelserne, er det muligt, at du har alt tilsluttet korrekt, at panelerne fungerer korrekt, men at noget andet går på. Hvilket vil tage os til vores næste trin - mere en afledning end et trin - på multiplex- og scanningshastigheder. (Hvis dit LED -bord fungerer fint, og du ikke er interesseret i disse panelers indre funktion, er du velkommen til at springe det næste trin over.)

Trin 5: Multiplexing og scanningshastigheder (eller: en momentan afledning på vejen til graven)

Så en af de fejl, jeg lavede, da jeg bestilte mit første sæt paneler ud for Alibaba, er, at jeg fik udendørs paneler (hvorfor ikke, tænkte jeg - de er vandtætte og lysere!). Og da jeg kørte dem til min matrixhue, så tingene ud.. ikke rigtigt.

For at forstå, hvorfor det er, tager vi et minut til at se på Phil Burgess fra Adafruit's beskrivelse af, hvordan disse paneler fungerer. Du vil bemærke, at Burgess påpeger, at panelerne ikke tænder alle deres lysdioder på én gang - de lyser sæt rækker op. Forholdet mellem panelhøjde i pixels og antallet af rækker, der lyser op på én gang, kaldes scanningshastighed. Så for eksempel - På et 32x32 panel med 1/16 scanning lyser to rækker (1 og 17, 2 og 18, 3 og 19 osv.) På én gang, helt ned på tavlen, og derefter gentager controlleren. De fleste biblioteker, der driver RGB -matricer, er bygget til paneler, hvor scanningshastigheden er 1/2 af højden i pixels - det vil sige, at de driver to rækker LED'er på én gang.

Udendørs paneler (og nogle indendørs paneler - sørg for at se på specifikationerne inden du bestiller) har scanningshastigheder, der er 1/4 af højden i pixels, hvilket betyder, at de forventer, at der bliver kørt fire linjer på én gang. Dette gør dem lysere (hvilket er godt), men gør at masser af standardkode ikke fungerer med dem (hvilket er dårligt). Ud over det har de en tendens til at have pixel ude af drift internt, hvilket kræver transformering af x- og y -værdierne i software for at adressere de rigtige pixels. Hvorfor er de lavet på denne måde? Jeg har ingen ide. Ved du? Fortæl mig det i så fald. Ellers skal det bare forblive et mysterium.

Så hvis du har en af disse underlige udendørs paneler, har du (sandsynligvis) held og lykke! hzeller tilføjede for nylig support til almindelige konfigurationer af disse typer paneler til sit bibliotek. Du kan læse mere om det på github-siden til projektet, men du kan sende --led-multiplexing = {0, 1, 2, 3} til prøvekoden (du skal muligvis også lade som om du har en dobbeltlængdet kæde af halvlange paneler), og det burde fungere.

Der er dog nogle pixeltransformationsmønstre, der ikke understøttes - og (gæt hvad) mine paneler har et af dem! Så jeg var nødt til at skrive min egen transformationskode (jeg har også - uanset årsag - bedt biblioteket om at handle som om jeg har otte 16x32 paneler lænket 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 modificerede X og Y;

#effJ og effK sørg for, at vi transformerer inden for en 32x32 matrix, før vi skubber

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 skubber vi dem til den korrekte placering (hver x+32 flytter et panel)

hvis (j> 31):

modX += 32

hvis (j> 63):

modX += 32

hvis (j> 95):

modX += 32

return (modX, modY)

Hvis du har et panel som mit, fungerer dette muligvis for det. Hvis det ikke gør det, bliver du nødt til at skrive din egen - så du ved, held og lykke.

Trin 6: Starboard -programmet (eller: Tilbage på sporet og klar til pixel)

Nu hvor du har dine matricer i drift og er klar til at gå, er alt du skal gøre at sætte styrbordsprogrammet på din Pi og gøre det klar til at gå. Sørg for, at du er i pi -brugerens hjemmemappe (cd /home /pi) og kør følgende kommando:

git -klon

du skal have en ny mappe, styrbord, der indeholder tre filer: LICENSE.md, README.md og starboard_s16.py. Prøv styrbordsprogrammet ved at køre det gennem python:

sudo python./starboard_s16.py

og du bør få en flok partikler til at bevæge sig med forskellige hastigheder og henfalde med forskellige hastigheder. Hver 10.000 kryds eller deromkring (du kan gå ind i python -scriptet for at redigere/ændre dette) det vil ændre tilstande (der er fire: RGB, HSV, Rainbow og Greyscale).

Så nu er det eneste, der skal gøres, at få styrbordskoden til at køre ved opstart. Vi gør det ved at redigere (med sudo) /etc/rc.local. Hvad du vil gøre er at tilføje følgende linje lige før "exit 0" i scriptet:

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

Når du har gjort det, skal du genstarte pi'en - når det kører igennem startsekvensen, skal starboard_s16.py -scriptet starte med det samme!

Hvis du vil stikke rundt i scriptet, er du velkommen til at gøre det - det er licenseret under GNU GPL 3.0. Hvis scriptet ikke kører for dig, eller hvis du har problemer med det, er du velkommen til at give mig besked eller indsende en fejl på github, så ser jeg, hvad jeg kan gøre for at løse det!

Den (meget) sidste ting, du måske vil gøre, er at konfigurere SSH på pi'en, så du kan fjernbetjene og sikkert lukke den ned. Du vil / helt sikkert / gerne ændre din adgangskode (via kommandoen passwd), og du kan finde instruktioner til aktivering af ssh (også fra kommandolinjen) her.

Anbefalede: