INHOUDSOPGAWE:

RPi 3 stuurboord / deeltjiegenerator: 6 stappe (met foto's)
RPi 3 stuurboord / deeltjiegenerator: 6 stappe (met foto's)

Video: RPi 3 stuurboord / deeltjiegenerator: 6 stappe (met foto's)

Video: RPi 3 stuurboord / deeltjiegenerator: 6 stappe (met foto's)
Video: Raspberry Pi 3 Model B+ 2024, November
Anonim
Image
Image
Monteer die LED -bord
Monteer die LED -bord

Voel u verveeld met u Raspberry Pi? Is u gereed om die elementêre kragte van die heelal te beveel en fotone na willekeur te ontbied en te ontslaan? Wil u net iets interessants in u woonkamer hê, of 'n wonderlike projek om op Facebook te plaas om vir Denise te wys dat u deesdae goed gaan, baie dankie? Is u vasgevang in 'n rekenaarsimulasie en wag u die ure totdat u bevry of verwyder word? As een of al hierdie dinge u beskryf, dan [stem van die omroeper] Welkom!

Hierdie tutoriaal sal u wys hoe u 'n deeltjiegenerator -skerm saamstel en opstel met behulp van 'n Raspberry Pi 3 en 'n paar RGB -matrikspanele. Dit behoort u tussen een en twee uur te neem, en die finale produk is ongeveer 30 x 8 cm (die Pi nie ingesluit nie) en kan aan die muur geheg word. Dit sorg vir 'n baie oulike versiering vir 'n sitkamer, kantoor, speelkamer of waar u dit ook al wil plaas.

Hier is wat u nodig het voordat u begin, en wat die geskatte koste is:

  • Rpi 3 + SD -kaart + omhulsel + kragbron: $ 70 (by Canakit, maar u kan die onderdele waarskynlik goedkoper kry as u dit afsonderlik koop.)
  • 4x 32x32 RGB LED Matrix (verkieslik p6 binne met 1/16 scan): $ 80- $ 100 gestuur op Alibaba of Aliexpress; $ 160 op Adafruit of Sparkfun.
  • Adafruit RGB Matrix hoed: $ 25
  • 5V 4A kragtoevoer: $ 15
  • 3D -gedrukte snitte: $ 1 elk (dit is vir die koppeling van die panele en om dit aan die muur te hang; as u nie toegang tot 'n 3D -drukker het nie, kan u 'n bandstrook gebruik om dit bymekaar te hou en 'n paar hakies van die hardewarewinkel tot hang dit aan die muur. Ek het probeer om die ontwerplêers of die.stls hiervoor te vind, maar dit lyk asof dit van die aarde af is. Die snitte is egter redelik maklik om te modelleer.)
  • 14x M4x10 -boute: $ 5 elk
  • Vier 4x8 IDC -kabels en drie kragkabels vir die RGB -matrikse (ek weet nie wat dit genoem word nie!). Dit moes by u LED -panele ingesluit gewees het.
  • Totaal: ongeveer $ 200, gee of neem.

Die projek vereis nie dat u soldeer of spesifieke programmeringskennis het nie; dit neem wel aan dat u weet hoe om 'n prentjie na 'n microSD -kaart te skryf. As u nie seker is hoe u dit moet doen nie, het die Raspberry Pi -stigting hier 'n goeie handleiding.

Dit veronderstel ook dat u 'n basiese kennis het van hoe u dinge vanaf die opdragreël in Linux moet doen, en die deurloop van die kode veronderstel dat u die basiese beginsels van Python ken (maar - u hoef nie die deurloop van die kode te volg om te kan bou en hardloop die deeltjiegenerator.) As u op een van die stappe vasval, kan u gerus 'n vraag stel of in /r /raspberry_pi plaas (wat ek ook aanneem, die hoofgehoor vir hierdie instruksies)

Stap 1: Monteer die LED -bord

Monteer die LED -bord
Monteer die LED -bord

Eerstens gaan u die individuele 32x32 LED -panele in een groot 128x32 -paneel saamstel. U moet na u borde kyk en die klein pyltjies vind wat die verbindingsvolgorde aandui; op myne is hulle naby die HUB75/2x8 IDC -verbindings. Maak seker dat die pyltjies wys van waar die Rpi verbind sal word (regs op die foto hierbo) oor die lengte van die bord.

U moet ook die kragkabels aansluit. Die meeste van hierdie kabels het twee vroulike verbindings wat aan die planke geheg word, en 'n stel graafterminale wat aan die kragbron geheg word. Die panele waarmee ek werk, het die aanwysers vir 5V en GND amper heeltemal weggesteek onder die verbindings self, maar die kabels sluit slegs in een rigting aan. U wil seker maak dat u al die 5V's en al die GND's saam verbind, want as u dit agteruit dryf, gaan u dit sekerlik braai.

Omdat die kragkabels wat by my borde so kort was, so kort was, moes ek een verleng deur die steke van die graafterminaal in die aansluiting van 'n ander te steek (dit is redelik eenvoudig - u moet die graafklemme effens na binne buig, maar ek ' Ek het 'n prentjie ingesluit vir die geval). Ek het uiteindelik twee stelle graafterminale en een 2x8 IDC-aansluiting regs van my nou verlengde LED-bord gekry.

U sal ook agterkom dat ek twee boute aan niks aan elke kant van die bord vasgemaak het nie; dit sal aan die bokant wees sodra die hele ding omgedraai word, en dit sal gebruik word om dit aan die muur vas te maak.

Dus - sodra u al die panele met clips, 2x8 IDC -kabels en kragkabels verbind het, is u gereed om na die volgende stap te gaan!

Stap 2: Berei die Framboos Pi voor

Vervolgens gaan u die LED -bord opsy sit (vir eers) en die Pi 3 gereed maak om dit te laat loop. Ons gebruik Raspbian Stretch Lite en hzeller se RGB -matriksbiblioteek (eerder as Adafruit se matriksbiblioteek, wat ouer en onversorg is.)

Eerstens wil u die Raspbian Lite -prent op 'n SD -kaart skryf; Sodra u dit gedoen het, kan u 'n monitor en 'n sleutelbord aan die pi koppel en dit oplaai. (U kan dit ook sonder kop doen, óf oor ssh óf 'n seriële aansluiting, maar as u so gaan, het u my waarskynlik nie nodig om u te vertel hoe u dit moet doen nie.) U benodig 'n internetverbinding hiervoor; As u wifi het, koppel die Pi aan u draadlose netwerk deur /etc/wpa_supplicant/wpa_supplicant.conf te redigeer en wpa_cli -i wlan0 te herkonfigureer. (As u dit nog nooit gedoen het nie, kan u instruksies hier kry).

Sodra u aan die internet gekoppel is, werk ons die dpkg repository -instellings op en laai ons die biblioteke af wat ons benodig deur die volgende opdragte uit te voer:

sudo apt-get update

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

git-kloon

Nou moet ons die matrikskode saamstel en installeer. U gaan dus in die gids met die biblioteek:

cd rpi-rgb-led-matrix

en stel dit saam (dit kan 'n minuut neem):

maak && maak bou-luislang

en installeer die luislangbindings:

sudo maak install-python

As u foute ondervind tydens die opstel van die biblioteekkode, moet u teruggaan en seker maak dat u python-dev en python-pil korrek geïnstalleer het! Die pythonbindings kan nie saamgestel word sonder dat albei pakkette geïnstalleer is nie.

U moet ook u Pi-klankuitset deaktiveer (die ingeboude klank belemmer die matrikskode) deur /boot/config.txt te redigeer. Soek die reël wat sê dtparam = audio = aan en verander dit in dtparam = audio = off.

As alles goed saamgestel is (u kry 'n paar waarskuwings oor Wstrict-prototipes), moet u pi gereed wees om die matriksbord te laat loop. Skakel dit af (sudo -afsluiting nou), trek die stekker uit, en ons sal in die volgende stap die ligbord aan die pi koppel.

Stap 3: Koppel Pi + Matrix Hat + LED Board

Koppel Pi + Matrix Hat + LED Board
Koppel Pi + Matrix Hat + LED Board

Dus, noudat u Pi afgeskakel en ontkoppel is, laat ons die matrikshoed aan die pi koppel en die LED -bord aan die matrikshoed. As u Pi nog nie in die geval is nie, is dit 'n goeie tyd om dit daar te plaas.

Installeer die matrikshoed deur dit in lyn te bring met die GPIO -penne op die Pi en druk dit saggies af met ewe veel krag aan beide kante. Maak seker dat die penne reg in lyn is, sodat die kopstukke op die hoed presies die GPIO -penne op die pi bedek. As u dit verkeerd belyn, is dit nie 'n katastrofe nie; trek dit net saggies af en trek die penne wat gebuig is, reguit.

Sodra u die hoed op het, plaas die Pi regs van die saamgestelde LED -bord (kontroleer weer die kragverbindings en maak seker dat die pyle van die Pi af in die lengte van die bord wys) en verbind die IDC kabel na die matrikshoed.

Vervolgens wil u die graafterminale vir die krag in die eindblok van die matrikshoed koppel. U het twee graafverbindings aan elke kant, maar hulle moet albei goed pas. Draai eers die skroewe los en - dit moet vanselfsprekend wees - maak seker dat u die 5V -aansluitings in die kant met die etiket + sit (dit moet rooi wees, maar - weer - kyk na u verbindings en moenie aanvaar dat dit korrek vervaardig is nie) en die GND -terminale (dit moet swart wees) in die kant gemerk -. As hulle daar is, draai die skroewe bo -op die aansluitblok vas, en u moet iets hê wat lyk soos die kop van die kop vir hierdie stap.

Nou - u het miskien opgemerk dat hierdie spesifieke konfigurasie die helfte van die spade -terminale aan weerskante blootgestel laat bly, slegs milimeters bokant die matrikshoed (en nie veel verder van mekaar nie) EN - die spade -terminale sal binnekort wees met verskeie volt en verskeie ampère Raw Power. Is dit (ek kan u hoor vra van die ander kant van die skerm) werklik die regte manier om dit te doen? Is dit, (jy leun nader en fluister), 'n goeie idee?

En die antwoord is (ek reageer en trek my skouers op) - nee, dit is nie. Die regte manier om dit te doen, is deur die graafklemme van die kragkabels af te haal en weer in die regte aansluiting vir die aansluitblok te krimp (of om dit as kaal drade te laat en dit sonder 'n aansluiting in die blok te koppel). As u dit nie regkry nie, kan u 'n krimpende buis om die blootgestelde kant van die graafverbinder sit of dit net in 'n elektriese band draai. Maar die wêreld is verval en die mens is lui en tevergeefs, so ek het dit nie gedoen nie.

Maar - toegedraai of ongedraai - is die graafterminale aan die aansluitblok gekoppel, en ons is gereed om na die volgende stap te gaan.

Stap 4: Toets die RGB -matriks

Noudat u Pi aan die ligbord gekoppel is, draai die bord om en skakel die Pi weer aan. U kan die matrikshoed aandryf nadat die Pi ingeprop is; As u egter die hoed voor die Pi aanskakel, sal die Pi probeer om te begin met nie genoeg stroom nie, en sal hy bitter kla (en dit kan 'n skerp paniek veroorsaak en glad nie begin nie.)

As u probleme ondervind om die Pi met die matrikshoed aan die gang te kry, moet u seker maak dat u 'n stewige kragbron vir die Pi gebruik (2A+ behoort goed te wees) en probeer om die kragtoevoer vir die hoed en die Steek die dieselfde kragstrook of verlengsnoer in en skakel hulle saam aan.

Sodra die Pi opgestart is, is ons gereed om die matrikse te toets. Gaan na waar die python-bindingsmonsters is (cd/rpi-rgb-led-matrix/bindings/python/samples) en probeer die roterende blokgenerator met die volgende opdrag:

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

U moet dit as sudo uitvoer, want die matriksbiblioteek benodig lae-vlak toegang tot hardeware by inisialisering. Die -m spesifiseer die manier waarop die panele aan die pi gekoppel is (in hierdie geval 'n adafruit -hoed) en die --ketting spesifiseer -jy het al geraai -hoeveel panele ons aan mekaar vasgeketting het. Rye en kolomme per paneel is beide standaard op 32, so ons is goed daar.

Nou - sodra u die program uitgevoer het, gaan een van twee (of eintlik een van drie) dinge gebeur:

  • Niks gebeur
  • U kry 'n mooi roterende blok in die middel van u ligbord.
  • Ek dink die ligbord werk, maar dit lyk … vreemd (die helfte is groen, sommige rye brand nie, ens.)

As niks gebeur nie, of as die paneel vreemd lyk, druk ctrl+c om die voorbeeldprogram te verlaat, skakel die pi af en kontroleer al u verbindings (IDC -kabel, krag, maak seker dat beide kragtoevoer ingeprop is, ens.) Maak ook seker dat die hoed korrek verbind is; As dit nie regkom nie, neem dit na een paneel (maak seker dat u --led-chain 1 gebruik wanneer u dit toets) en kyk of een van die panele sleg is. As dit nie werk nie, kyk na die wenke vir probleemoplossing by hzeller. As DIT nog steeds nie werk nie, probeer om dit te plaas op /r /raspberry_pi (of op die Adafruit -forums, as u u panele van Adafruit gekry het, of stapelruil, ens, ens.)

As dit werk, maar steeds vreemd lyk (miskien soos die kopafbeelding vir hierdie afdeling) nadat u die verbindings nagegaan het, is dit moontlik dat u alles korrek gekoppel het, dat die panele behoorlik funksioneer, maar dat iets anders gaan op. Dit sal ons na ons volgende stap neem - meer 'n afleiding as 'n stap - met betrekking tot multiplexing en scan rate. (As u ledbord goed werk en u nie geïnteresseerd is in die interne werking van hierdie panele nie, kan u die volgende stap oorslaan.)

Stap 5: Multiplexing en scan tariewe (of: 'n kortstondige afleiding op pad na die graf)

Een van die foute wat ek gemaak het toe ek my eerste stel panele by Alibaba bestel het, is dat ek buitepanele gekry het (hoekom nie, ek het gedink - hulle is waterdig en helderder!). En toe ek dit aan my matrix -hoed vasmaak, lyk dinge nie reg nie.

Om te verstaan waarom dit is, neem ons 'n minuut om na Phil Burgess te kyk uit die beskrywing van Adafruit oor hoe hierdie panele werk. U sal opmerk dat Burgess daarop wys dat die panele nie al hul LED's tegelyk verlig nie - dit stel stelle rye aan. Die verband tussen paneelhoogte in pixels en die aantal rye wat gelyktydig brand, word skansnelheid genoem. So byvoorbeeld - Op 'n 32x32 -paneel met 1/16 -skandering word twee rye (1 en 17, 2 en 18, 3 en 19, ens.) Gelyktydig verlig tot op die bord, en dan herhaal die beheerder. Die meeste biblioteke wat RGB -matrikse aandryf, is gebou vir panele waar die skanderingstempo 1/2 van die hoogte in pixels is - dit wil sê, hulle ry twee rye LED's tegelyk.

Buitelugpanele (en sommige binnepanele - kyk eers na die spesifikasies voordat u bestel) het 'n skanderingstempo van 1/4 van die hoogte in pixels, wat beteken dat hulle verwag dat vier lyne tegelyk aangedryf word. Dit maak hulle helderder (wat goed is), maar baie standaardkode werk nie daarmee saam nie (wat sleg is). Daarbenewens het hulle die neiging om die pixels intern buite werking te stel, wat die x- en y -waardes in sagteware moet verander om die regte pixels aan te spreek. Waarom word die so gemaak? Ek het geen idee nie. Weet jy? Indien wel, vertel my asseblief. Andersins sal dit net 'n raaisel moet bly.

Dus, as u een van hierdie vreemde buitepanele het, het u (waarskynlik) geluk! hzeller het onlangs ondersteuning vir algemene konfigurasies van hierdie tipe panele by sy biblioteek gevoeg. U kan meer daaroor op die github-bladsy vir die projek lees, maar u kan --led-multiplexing = {0, 1, 2, 3} na die voorbeeldkode stuur (u moet ook maak asof u 'n dubbellengte ketting van halflengte panele) en dit behoort te werk.

Daar is egter 'n paar pixeltransformasiepatrone wat nie ondersteun word nie - en (raai wat) my panele het een daarvan! Dus moes ek my eie transformasiekode skryf (ek moet ook - om watter rede ook al - vir die biblioteek sê om op te tree asof ek agt 16x32 panele aan mekaar vasgeketting het). wat as volg is:

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

effK = k % 32

modY = k

modX = j

#modX en modY is die gewysigde X en Y;

#effJ en effK maak seker dat ons binne 'n 32x32 matriks transformeer voordat ons druk

as ((effJ)> 15):

modX = modX + 16

as ((effK)> 7):

modY = modY - 8

modX = modX + 16

as ((effK)> 15):

modX = modX - 16

as ((effK)> 23):

modY = modY - 8

modX = modX + 16

#Dan stoot ons hulle na die regte plek (elke x+32 skuif een paneel)

as (j> 31):

modX += 32

as (j> 63):

modX += 32

as (j> 95):

modX += 32

terugkeer (modX, modY)

As u 'n paneel soos myne het, werk dit moontlik daarvoor. As dit nie die geval is nie, moet u u eie skryf - baie geluk en sterkte.

Stap 6: Die stuurboordprogram (of: terug op koers en gereed om te pixel)

Noudat u u matrikse in werking en gereed is, hoef u net die stuurboordprogram op u Pi te plaas en gereed te maak. Maak seker dat u in die tuisgids van die pi -gebruiker (cd /home /pi) is en voer die volgende opdrag uit:

git -kloon

jy behoort 'n nuwe gids, stuurboord, te hê wat drie lêers bevat: LICENSE.md, README.md en starboard_s16.py. Probeer die stuurboordprogram deur dit deur python uit te voer:

sudo python./starboard_s16.py

en u moet 'n klomp deeltjies teen verskillende snelhede laat beweeg en teen verskillende snelhede verval. Elke 10 000 bosluise of so (u kan in die luislang -script gaan om dit te wysig/te verander) dit verander van modus (daar is vier: RGB, HSV, Rainbow en Greyscale).

Die enigste ding wat u moet doen, is om die stuurboordkode te laat loop tydens die aanvang. Ons sal dit doen deur (met sudo) /etc/rc.local te redigeer. Wat u wil doen, is om die volgende reël by te voeg net voor "exit 0" in die script:

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

Nadat u dit gedoen het, herlaai die pi - sodra dit deur die opstartvolgorde is, moet die starboard_s16.py -script dadelik begin!

As u in die draaiboek wil rondbeweeg, doen dit gerus - dit is gelisensieer onder die GNU GPL 3.0. As die script nie vir u werk nie, of as u probleme ondervind, laat weet my gerus of stuur 'n fout op github, en ek sal kyk wat ek kan doen om dit reg te stel!

Die (heel) laaste ding wat u dalk wil doen, is om SSH op die pi op te stel, sodat u dit kan inskakel en veilig kan afsluit. U wil / beslis / wil u wagwoord verander (via die passwd -opdrag), en u kan hier instruksies vind om ssh (ook vanaf die opdragreël) in te skakel.

Aanbeveel: