Innehållsförteckning:

RPi 3 styrbord / partikelgenerator: 6 steg (med bilder)
RPi 3 styrbord / partikelgenerator: 6 steg (med bilder)

Video: RPi 3 styrbord / partikelgenerator: 6 steg (med bilder)

Video: RPi 3 styrbord / partikelgenerator: 6 steg (med bilder)
Video: Birmingham Canals by Narrowboat. Capital of the UK Canal System! - Ep. 88 2024, Juli
Anonim
Image
Image
Montera LED -kortet
Montera LED -kortet

Känner du dig uttråkad av din Raspberry Pi? Är du redo att styra universums själva elementära krafter, kalla och avfärda fotoner efter behag? Vill du bara ha något intressant att hänga i ditt vardagsrum, eller ett snyggt projekt att lägga upp på facebook för att visa Denise att du har det bra just nu, tack så mycket? Är du instängd i en datorsimulering och väntar bort timmarna tills du är frigiven eller raderad? Om någon eller alla av dessa beskriver dig, välkomnar [annonsörens röst]!

Denna handledning visar dig hur du monterar och konfigurerar en partikelgeneratorskärm med en Raspberry Pi 3 och några RGB -matrispaneler. Det bör ta dig mellan en och två timmar, och den färdiga produkten kommer att vara cirka 30 "x8" (exklusive Pi) och väggmonterbar. Det är en ganska cool dekoration för ett vardagsrum, kontor, spelrum eller var du än vill placera det.

Här är vad du behöver innan du sätter igång och vad de ungefärliga kostnaderna är:

  • Rpi 3 + SD -kort + fodral + strömförsörjning: $ 70 (från Canakit, men du kan förmodligen få delarna billigare om du köper dem separat.)
  • 4x 32x32 RGB LED Matrix (helst p6 inomhus med 1/16 scan): $ 80- $ 100 levereras på Alibaba eller Aliexpress; $ 160 på Adafruit eller Sparkfun.
  • Adafruit RGB Matrix hatt: $ 25
  • 5V 4A strömförsörjning: $ 15
  • 3D -tryckta klipp: 1 dollar häng den från väggen. Jag försökte hitta designfilerna eller.stls för dessa, men de verkar ha gått från jorden. Klippen är dock ganska enkla att modellera.)
  • 14x M4x10 bultar: $ 5ish
  • Fyra 4x8 IDC -kablar och tre strömkablar för RGB -matriserna (jag vet inte vad dessa heter!). Dessa borde ha ingått i dina LED -paneler.
  • Totalt: Cirka $ 200, ge eller ta.

Projektet kräver inte att du lödar eller har någon specifik programmeringskunskap; det förutsätter att du vet hur du skriver en bild till ett microSD -kort. Om du inte är säker på hur du gör det har Raspberry Pi -stiftelsen en bra handledning här.

Det förutsätter också att du har en grundläggande kunskap om hur du gör saker från kommandoraden i Linux, och kodgenomgången förutsätter att du känner till grunderna i Python (men - du behöver inte följa kodens genomgång för att kunna bygga och kör partikelgeneratorn.) Om du fastnar i något av stegen, ställ gärna en fråga eller posta i /r /raspberry_pi (vilket också är, antar jag, huvudpubliken för detta instruerbara)

Steg 1: Montera LED -kortet

Montera LED -kortet
Montera LED -kortet

Först ska du montera de individuella 32x32 LED -panelerna till en stor 128x32 panel. Du måste titta på dina brädor och hitta de små pilarna som anger anslutningsordning; på mina är de precis nära HUB75/2x8 IDC -kontakterna. Se till att du har pilarna som pekar från var Rpi kommer att ansluta (av till höger på bilden ovan) längs brädans längd.

Du måste också ansluta strömkablarna. De flesta av dessa kablar har två honkontakter som fästs på korten, och en uppsättning spadterminaler som fästs till strömkällan. Panelerna jag arbetar med har indikatorerna för 5V och GND nästan helt gömda under själva kontakterna, men kablarna ansluts bara i en riktning. Du vill se till att du ansluter alla 5V: erna tillsammans och alla GND: erna tillsammans, för om du driver dessa bakåt kommer du nästan säkert att steka dem.

Eftersom strömkablarna som medföljde mina brädor var så korta, var jag tvungen att förlänga en genom att sätta in spadterminalens stift i en annan kontakt (Detta är ganska enkelt - du kan behöva böja spadterminalerna något inåt, men jag ' har inkluderat en bild för säkerhets skull). Jag slutade med två uppsättningar spadterminaler och en 2x8 IDC-kontakt till höger om mitt nu långsträckta LED-kort.

Du kommer också att märka att jag har två bultar som inte är fästa vid någonting i båda ändarna av brädet; dessa kommer att vara på toppen när det hela vänds och kommer att användas för att fästa det på väggen.

Så - när du har anslutit alla panelerna tillsammans med clips, 2x8 IDC -kablar och strömkablar är du redo att gå vidare till nästa steg!

Steg 2: Förbered Raspberry Pi

Därefter ska du ställa LED -kortet åt sidan (för nu) och göra Pi 3 redo att köra den. Vi kommer att använda Raspbian Stretch Lite och hzellers RGB -matrisbibliotek (snarare än Adafruits matrisbibliotek, som är äldre och oskött.)

Först vill du skriva Raspbian Lite -bilden till ett SD -kort; när du har gjort detta, fortsätt och anslut en bildskärm och tangentbord till pi och starta upp den. (Du kan också göra detta utan huvud, antingen över ssh eller en seriell kontakt, men om det är så du behöver förmodligen inte att jag ska berätta hur du gör det.) Du behöver en internetanslutning för detta; Om du har wifi, anslut Pi till ditt trådlösa nätverk genom att redigera /etc/wpa_supplicant/wpa_supplicant.conf och köra wpa_cli -i wlan0 omkonfigurera. (Om du aldrig har gjort detta kan du få instruktioner här).

När du är ansluten till internet uppdaterar vi inställningarna för dpkg -förvaret och laddar ner de bibliotek vi behöver genom att köra följande kommandon:

sudo apt-get uppdatering

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

git-klon

Nu måste vi kompilera och installera matriskoden. Så du går in i mappen som innehåller biblioteket:

cd rpi-rgb-led-matris

och kompilera det (det kan ta en minut):

make && make build-python

och installera pythonbindningarna:

sudo gör install-python

Om du får några fel när du kompilerar bibliotekskoden, gå tillbaka och se till att du installerade python-dev och python-pil korrekt! Pythonbindningarna kompileras inte utan att båda paketen är installerade.

Du måste också inaktivera din Pi: s ljudutgång (det inbyggda ljudet stör matriskoden) genom att redigera /boot/config.txt. Leta efter raden som säger dtparam = audio = on och ändra den till dtparam = audio = off.

Om allt sammanställts OK (du får några varningar om Wstrict-protoyper) bör din pi vara redo att köra matriskortet. Stäng av den (sudo avstängning nu), koppla ur den, så kopplar vi upp ljuskortet till pi i nästa steg.

Steg 3: Anslut Pi + Matrix Hat + LED -kort

Anslut Pi + Matrix Hat + LED -kort
Anslut Pi + Matrix Hat + LED -kort

Så nu när din Pi är avstängd och urkopplad, låt oss ansluta matrishatten till pi och LED -kortet till matrishatten. Om din Pi inte redan är i sitt fall, är det nu en bra tid att lägga den där.

Installera matrishatten genom att rada upp den med GPIO -stiften på Pi och skjuta den försiktigt ner med jämn kraft på båda sidor. Se till att stiften är korrekt uppställda så att honhuvudena på hatten exakt täcker GPIO -stiften på pi. Om du justerar det fel är det ingen katastrof. dra försiktigt tillbaka den och räta ut alla stift som böjts.

När du har fått på dig hatten sätter du Pi till höger om det monterade LED -kortet (dubbelkolla strömanslutningarna igen och se till att pilarna pekar från Pi ner längs brädans längd) och anslut IDC kabel till matrishatten.

Därefter vill du ansluta spadeterminalerna för strömmen till matrishattens plint. Du har två spadekontakter per sida, men de borde passa in fint där. Lossa skruvarna först och - det är självklart - se till att du sätter 5V -terminalerna i sidan märkt + (dessa ska vara röda, men - igen - dubbelkolla dina kontakter och anta inte att de har tillverkats korrekt) och GND -terminalerna (dessa ska vara svarta) på sidan märkt -. När de väl är där, dra åt skruvarna ovanpå kopplingsplinten, så ska du ha något som ser ut som rubrikbilden för det här steget.

Nu - du kanske har märkt att den här konfigurationen lämnar hälften av spadterminalen på vardera sidan utsatt och svävar bara milimeter ovanför matrishatten (och inte mycket längre från varandra.) OCH - spadterminalerna kommer snart att vara med både flera volt och flera ampere Raw Power. Är detta (jag kan höra dig fråga från andra sidan av skärmen) verkligen det rätta sättet att göra det? Är det, (du lutar dig närmare och viskar), en bra idé?

Och svaret är (jag svarar och rycker på axlarna) - nej, det är det inte. Det rätta sättet att göra det skulle vara att ta bort spadeplintarna från strömkablarna och krympa dem igen i rätt kontakt för det anslutningsblocket (eller att lämna dem som bara trådar och ansluta dem utan kontakt i blocket). Om du inte lyckas kan du lägga lite värmekrympslangar runt den exponerade sidan av spadekontakten eller bara slå in den i eltejp. Men världen har fallit och människan är lat och fåfäng, så det har jag inte gjort.

Men - inslagna eller oinsvepta - spadterminalerna är anslutna till kopplingsplinten, och vi är redo att gå vidare till nästa steg.

Steg 4: Testa RGB -matrisen

Nu när din Pi är ansluten till ljuskortet, vänd på kortet och slå på Pi: n igen. Du kan driva matrishatten efter att Pi har anslutits; om du drar på hatten före Pi, kommer dock Pi att försöka starta med inte tillräckligt med ström och kommer att klaga bittert (och kan ge dig en kärnpanik och inte starta alls.)

Om du har problem med att få Pi att starta med matrishatten på, se till att du använder en tillräckligt kraftig strömförsörjning för Pi (2A+ borde vara bra) och försök att ansluta både strömförsörjningen till hatten och till Pii i samma nätsladd eller förlängningssladd, och slå ihop dem tillsammans.

När Pi har startat är vi redo att testa matriserna. Gå till där pythonbindningsproven är (cd/rpi-rgb-led-matrix/bindings/python/samples) och prova den roterande blockgeneratorn med följande kommando:

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

Du måste köra det som sudo eftersom matrisbiblioteket behöver lågnivååtkomst till hårdvara vid initialisering. -M anger hur panelerna är anslutna till pi (i det här fallet en adafruit hatt) och --led -kedjan anger -du gissade det -hur många paneler vi har kedjat ihop. Rader och kolumner per panel är båda standard till 32, så vi är bra där.

Nu - när du väl har kört programmet kommer en av två (eller egentligen en av tre) saker att hända:

  • Ingenting händer
  • Du får ett fint roterande block mitt på din ljusbräda.
  • Tavlan fungerar, tror jag, men det ser … konstigt ut (hälften är grön, vissa rader lyser inte upp, etc.)

Om inget händer, eller om panelen ser konstig ut, tryck på ctrl+c för att lämna provprogrammet, stäng av pi och kontrollera alla dina anslutningar (IDC -kabel, ström, se till att båda nätaggregaten är inkopplade, etc.) Se också till att hatten är korrekt ansluten; om det inte löser det, ta ner det till en panel (se till att använda --led-chain 1 när du testar det) och se om en av panelerna kan vara dålig. Om DET inte fungerar, kolla in hzellers felsökningstips. om DET fortfarande inte fungerar, försök att posta till /r /raspberry_pi (eller Adafruit -forumen, om du fick dina paneler från Adafruit, eller stack exchange, etc, etc.)

Om det liksom fungerar men ändå ser konstigt ut (kanske som rubrikbilden för det här avsnittet) efter att du har kontrollerat anslutningarna är det möjligt att du har allt korrekt anslutet, att panelerna fungerar korrekt, men att något annat går på. Vilket tar oss till vårt nästa steg - mer en avledning än ett steg - på multiplex- och skanningshastigheter. (Om din ledskiva fungerar bra och du inte är intresserad av dessa panelers inre funktion, hoppa gärna över nästa steg.)

Steg 5: Multiplexing och skanningshastigheter (eller: en tillfällig avledning på vägen till graven)

Så ett av misstagen jag gjorde när jag beställde min första uppsättning paneler utanför Alibaba är att jag fick utomhuspaneler (varför inte, tänkte jag - de är vattentäta och ljusare!). Och när jag kopplade dem till min matrishatt såg saker ut.. inte rätt.

För att förstå varför det är, tar vi en minut att titta på Phil Burgess från Adafruits beskrivning av hur dessa paneler fungerar. Du kommer att notera att Burgess påpekar att panelerna inte lyser upp alla sina lysdioder samtidigt - de lyser upp uppsättningar rader. Förhållandet mellan panelhöjd i pixlar och antalet rader som lyser upp på en gång kallas skanningshastighet. Så, till exempel - På en 32x32 panel med 1/16 scan, två rader (1 och 17, 2 och 18, 3 och 19, etc) lyser upp på en gång, hela vägen ner på kortet, och sedan upprepas kontrollen. De flesta bibliotek som driver RGB -matriser är byggda för paneler där skanningshastigheten är 1/2 av höjden i pixlar - det vill säga de driver två rader med lysdioder samtidigt.

Utomhuspaneler (och vissa inomhuspaneler - se till att du tittar på specifikationerna innan du beställer) har skanningshastigheter som är 1/4 av höjden i pixlar, vilket innebär att de förväntar sig att fyra linjer körs samtidigt. Detta gör dem ljusare (vilket är bra) men gör att massor av standardkoder inte fungerar med dem (vilket är dåligt). Utöver det tenderar de att ha pixlarna ur funktion internt, vilket kräver att x- och y -värdena omvandlas i programvaran för att adressera de rätta pixlarna. Varför är de gjorda på detta sätt? Jag har ingen aning. Vet du? Berätta i så fall för mig. Annars måste det bara förbli ett mysterium.

Så om du har en av dessa underliga utomhuspaneler har du (förmodligen) tur! hzeller har nyligen lagt till stöd för vanliga konfigurationer av dessa typer av paneler i sitt bibliotek. Du kan läsa mer om det på github-sidan för projektet, men du kan skicka --led-multiplexing = {0, 1, 2, 3} till exempelkoden (du kan också behöva låtsas som om du har en dubbellängdskedja av halvlånga paneler) och det borde fungera.

Det finns dock några pixeltransformationsmönster som inte stöds - och (gissa vad) mina paneler har en av dem! Så jag var tvungen att skriva min egen transformationskod (jag måste - av vilken anledning som helst - ber biblioteket att agera som om jag har åtta 16x32 paneler kopplade ihop). som är följande:

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

effK = k % 32

modY = k

modX = j

#modX och modY är de modifierade X och Y;

#effJ och effK se till att vi transformerar inom en 32x32 matris innan vi trycker på

om ((effJ)> 15):

modX = modX + 16

om ((effK)> 7):

modY = modY - 8

modX = modX + 16

om ((effK)> 15):

modX = modX - 16

om ((effK)> 23):

modY = modY - 8

modX = modX + 16

#Därefter skjuter vi dem till rätt plats (varje x+32 flyttar en panel)

om (j> 31):

modX += 32

om (j> 63):

modX += 32

om (j> 95):

modX += 32

retur (modX, modY)

Om du har en panel som min kan det här fungera för det. Om det inte gör det måste du skriva ditt eget - så, du vet, lycka till och god tur.

Steg 6: Styrbordsprogrammet (eller: Back on Track and Ready to Pixel)

Nu när du har dina matriser i drift och redo att gå, är det bara att sätta styrbordsprogrammet på din Pi och göra det klart. Se till att du är i pi -användarens hemkatalog (cd /home /pi) och kör följande kommando:

git -klon

du bör ha en ny mapp, styrbord, som innehåller tre filer: LICENSE.md, README.md och starboard_s16.py. Prova styrbordsprogrammet genom att köra det genom python:

sudo python./starboard_s16.py

och du bör få en massa partiklar att röra sig i olika hastigheter och sönderfalla med olika hastigheter. Var 10 000 fästingar eller så (du kan gå in i pythonskriptet för att redigera/ändra detta) det kommer att ändra lägen (det finns fyra: RGB, HSV, Rainbow och Greyscale).

Så nu är det enda som återstår att göra att styrbordskoden körs vid start. Vi gör det genom att redigera (med sudo) /etc/rc.local. Vad du vill göra är att lägga till följande rad precis före "exit 0" i skriptet:

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

När du har gjort det startar du om pi - när det går igenom uppstartssekvensen bör manuset starboard_s16.py starta direkt!

Om du vill peta runt i manuset kan du göra det - det är licensierat enligt GNU GPL 3.0. Om skriptet inte körs för dig, eller om du har problem med det, meddela mig gärna eller skicka ett fel på github, så ska jag se vad jag kan göra för att åtgärda det!

Det (mycket) sista du kanske vill göra är att konfigurera SSH på pi, så att du kan fjärrkontrollera och säkert stänga av det. Du kommer / definitivt / vill ändra ditt lösenord (via passwd -kommandot), och du kan hitta instruktioner för att aktivera ssh (även från kommandoraden) här.

Rekommenderad: