Taula de continguts:

Generador de partícules RPi 3: 6 passos (amb imatges)
Generador de partícules RPi 3: 6 passos (amb imatges)

Vídeo: Generador de partícules RPi 3: 6 passos (amb imatges)

Vídeo: Generador de partícules RPi 3: 6 passos (amb imatges)
Vídeo: Штукатурка стен - самое полное видео! Переделка хрущевки от А до Я. #5 2024, Juliol
Anonim
Image
Image
Munteu la placa LED
Munteu la placa LED

Us avorreix el vostre Raspberry Pi? Esteu preparats per manar les forces elementals de l'univers, convocant i acomiadant fotons a voluntat? Només voleu que hi hagi alguna cosa interessant per penjar a la vostra sala d’estar o un fantàstic projecte que publiqueu a Facebook per mostrar a Denise que ho esteu fent bé aquests dies, moltes gràcies? Esteu atrapat en una simulació per ordinador i deixeu de banda les hores fins que us alliberen o suprimiu? Si algun o tots aquests us descriuen, doncs, [veu de l'anunciant] Benvingut!

Aquest tutorial us mostrarà com muntar i configurar una pantalla de generador de partícules mitjançant un Raspberry Pi 3 i alguns panells de matriu RGB. Us hauria de trigar entre una i dues hores i el producte acabat serà d'aproximadament 30 "x8" (sense incloure el Pi) i muntable a la paret. Fa una decoració força maca per a una sala d’estar, oficina, sala de jocs o allà on vulgueu posar-la.

Abans de començar, això és el que necessiteu i quins són els costos aproximats:

  • Rpi 3 + targeta SD + caixa + font d'alimentació: 70 dòlars (de Canakit, però probablement podreu aconseguir les peces més barates si les comprareu per separat).
  • 4x 32x32 RGB LED Matrix (preferiblement p6 interior amb escaneig 1/16): entre $ 80 i $ 100 enviats a Alibaba o Aliexpress; 160 dòlars a Adafruit o Sparkfun.
  • Barret Adafruit RGB Matrix: 25 dòlars
  • Font d'alimentació de 5V 4A: 15 dòlars
  • Clips impresos en 3D: 1 dòlar americà (són per connectar els panells i penjar-los a la paret; si no teniu accés a una impressora 3D, podeu utilitzar una tira de pells per mantenir-los units i alguns suports des de la ferreteria fins a pengeu-lo de la paret. He intentat trobar els fitxers de disseny o els fitxers.stls, però sembla que han passat de la terra. Però els clips són força fàcils de modelar.)
  • Cargols M4x10 de 14x: 5 dòlars americans
  • Quatre cables IDC 4x8 i tres cables d'alimentació per a les matrius RGB (no sé com es diuen!). Aquests haurien d'haver estat inclosos amb els vostres panells LED.
  • Total: aproximadament 200 dòlars, donats o agafats.

El projecte no requereix soldar ni tenir cap coneixement de programació específic; suposa que saps com escriure una imatge en una targeta microSD. Si no esteu segur de com fer-ho, la fundació Raspberry Pi té aquí un bon tutorial.

També suposa que teniu un coneixement bàsic de com fer coses des de la línia d’ordres a Linux i que el pas a pas del codi suposa que coneixeu els conceptes bàsics de Python (però no cal que seguiu el pas a pas del codi per poder construir i executeu el generador de partícules.) Si us quedeu atrapats en algun dels passos, no dubteu a fer una pregunta o publicar a / r / raspberry_pi (que també és, suposo, el públic principal d’aquest instructiu)

Pas 1: munteu la placa LED

Munteu la placa LED
Munteu la placa LED

En primer lloc, muntareu els panells LED de 32x32 individuals en un panell gran de 128x32. Haureu de mirar els vostres taulers i trobar les petites fletxes que indiquen l’ordre de connexió; a la meva, estan a prop dels connectors IDC HUB75 / 2x8. Assegureu-vos que teniu les fletxes que apunten des d’on es connectarà el Rpi (a la dreta de la foto superior) per la longitud del tauler.

També haureu de connectar els cables d’alimentació. La majoria d'aquests cables tenen dos connectors femella que es fixen a les plaques i un conjunt de terminals de pala que es fixen a la font d'alimentació. Els panells amb els quals treballo tenen els indicadors de 5V i GND gairebé totalment amagats sota els propis connectors, però els cables només es connecten en una direcció. Voleu assegurar-vos que connecteu tots els 5V junts i tots els GND junts, ja que si els alimenteu cap enrere gairebé segur que els fregireu.

Com que els cables d’alimentació inclosos amb les meves taules eren tan curts, n’he hagut d’estendre un inserint les puntes del terminal de pala al connector d’un altre (això és bastant senzill; és possible que hagueu de doblegar els terminals de pala lleugerament cap a l’interior, però sí). He inclòs una imatge per si de cas). Vaig acabar amb dos conjunts de terminals de pala i un connector IDC de 2x8 a la dreta de la meva placa LED ara allargada.

També notareu que tinc dos parabolts que no estan units a res a cap dels extrems del tauler; aquests estaran a la part superior un cop capgirat tot i s’utilitzaran per fixar-lo a la paret.

Per tant, un cop hàgiu connectat tots els panells junts amb clips, cables IDC de 2x8 i cables d’alimentació, podreu passar al següent pas.

Pas 2: prepareu el Raspberry Pi

A continuació, deixareu el tauler LED (de moment) i preparareu el Pi 3 per executar-lo. Utilitzarem Raspbian Stretch Lite i la biblioteca de matrius RGB de hzeller (en lloc de la biblioteca de matrius d’Adafruit, que és més antiga i no es manté).

En primer lloc, voldreu escriure la imatge de Raspbian Lite en una targeta SD; un cop fet això, seguiu endavant i connecteu un monitor i un teclat al pi i arrenceu-lo. (També podeu fer-ho sense cap tipus de cap, ja sigui per ssh o per un connector sèrie, però si és així, probablement no necessiteu que us expliqui com fer-ho). Per a això, necessitareu una connexió a Internet.; Si teniu wifi, connecteu el Pi a la vostra xarxa sense fils editant /etc/wpa_supplicant/wpa_supplicant.conf i executant wpa_cli -i wlan0 reconfigure. (Si no ho heu fet mai, podeu obtenir instruccions aquí).

Un cop connectat a Internet, actualitzarem la configuració del dipòsit dpkg i descarregarem les biblioteques que necessitem executant les ordres següents:

sudo apt-get update

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

git clone

Ara hem de compilar i instal·lar el codi matricial. Per tant, accedireu a la carpeta que conté la biblioteca:

cd rpi-rgb-led-matrix

i compileu-lo (pot trigar un minut):

make && make build-python

i instal·leu els enllaços python:

sudo make install-python

Si teniu algun error en compilar el codi de la biblioteca, torneu enrere i assegureu-vos que heu instal·lat correctament python-dev i python-pil. Els enllaços de python no es compilaran sense instal·lar-se tots dos paquets.

També haureu de desactivar la sortida de so del vostre Pi (el so incorporat interfereix amb el codi de la matriu) editant /boot/config.txt. Cerqueu la línia que diu dtparam = audio = on i canvieu-la per dtparam = audio = off.

Si tot el que s'ha compilat està bé (rebrà uns quants advertiments sobre els prototipus Wstrict), el vostre pi hauria d'estar preparat per executar la placa matriu. Seguiu endavant i tanqueu-lo (apagat sudo ara), desconnecteu-lo i connectarem la placa de llum al pi al següent pas.

Pas 3: connecteu Pi + Matrix Hat + LED Board

Connecteu Pi + Matrix Hat + placa LED
Connecteu Pi + Matrix Hat + placa LED

Per tant, ara que el Pi està apagat i desconnectat, connectem el barret de matriu al pi i la placa LED al barret de matriu. Si el vostre Pi encara no està en aquest cas, ara és un bon moment per posar-lo.

Instal·leu el barret de la matriu alineant-lo amb els passadors GPIO del Pi i empenyent-lo suaument cap avall amb força uniforme pels dos costats. Assegureu-vos que els pins estan alineats correctament, de manera que les capçaleres femenines del barret cobreixin exactament els pins GPIO del pi. Si el desajusteu, no és una catàstrofe; només traieu-lo suaument cap enrere i rectifiqueu els passadors que estiguessin doblegats.

Quan tingueu el barret posat, poseu el Pi a la dreta del tauler LED muntat (torneu a comprovar les connexions d’alimentació i assegureu-vos que les fletxes apunten des del Pi per la longitud del tauler) i connecteu l’IDC cable al barret de la matriu.

A continuació, voldreu connectar els terminals de pala per a l'alimentació al bloc de terminals del barret de la matriu. Teniu dos connectors de pala per banda, però tots dos haurien d’adaptar-s’hi bé. Afluixeu primer els cargols i, per descomptat, assegureu-vos que poseu els terminals de 5V al costat marcat amb + (haurien de ser de color vermell, però, de nou, comproveu els connectors i no suposeu que s’hagin fabricat correctament) i els terminals GND (haurien de ser negres) al costat etiquetat -. Un cop hi sigueu, estreneu els cargols a la part superior del bloc de terminals i hauríeu de tenir alguna cosa que sembli la imatge de capçalera d’aquest pas.

Ara, és possible que us hàgiu adonat que aquesta configuració en particular deixa la meitat del terminal de pala a banda i banda exposat, situant-se a uns mil·límetres per sobre del barret de la matriu (i no gaire més allunyats els uns dels altres) I - els terminals de pala seran molt aviat transportant diversos volts i diversos amplificadors de Raw Power. És realment aquesta ((us sento preguntar des de l’altra banda de la pantalla) la manera correcta de fer-ho?) És, (us acosteu més i xiuxiuegeu), una bona idea?

I la resposta és (responc, aixecant les espatlles): no, no ho és. La manera correcta de fer-ho seria treure els cables d’alimentació dels terminals de pala i tornar-los a engruixir al connector correcte d’aquest bloc de terminals (o deixar-los com a cables nus i connectar-los sense cap connector al bloc). Si no ho feu, podríeu col·locar alguns tubs de contracció de calor al voltant del costat exposat del connector de pala o simplement embolicar-los amb cinta elèctrica. Però el món ha caigut i l’home és mandrós i va, així que no ho he fet.

Però, embolicats o sense embolicar, els terminals de pala estan connectats al bloc de terminals i estem preparats per passar al següent pas.

Pas 4: proveu la matriu RGB

Ara que el Pi està connectat al tauler de llum, gireu el tauler i torneu a encendre el Pi. Podeu alimentar el barret de la matriu després que el Pi estigui endollat; si accioneu el barret abans que el Pi, però, el Pi intentarà arrencar amb una intensitat insuficient i es queixarà amargament (i pot donar-vos pànic del nucli i no arrencar-lo en absolut).

Si teniu problemes perquè el Pi arrenci amb el barret de la matriu posat, assegureu-vos que utilitzeu una font d’alimentació prou resistent per al Pi (2A + hauria de ser bo) i proveu de connectar tant la font d’alimentació del barret com Pii a la mateixa tira d’alimentació o cable d’extensió i alimentant-los junts.

Un cop arrencat el Pi, estem preparats per provar les matrius. Aneu a on es troben les mostres d’unió de python (cd / rpi-rgb-led-matrix / bindings / python / samples) i proveu el generador de blocs rotatius amb l’ordre següent:

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

L'heu d'executar com a sudo perquè la biblioteca de matrius necessita accés de baix nivell al maquinari a la inicialització. El paràmetre -m especifica la forma en què els panells estan connectats al pi (en aquest cas, un barret adafruit) i la cadena --led especifica - ho heu endevinat - quants panells hem encadenat. Les files i les columnes per tauler tenen un valor predeterminat de 32, de manera que hi estem bé.

Ara, un cop hàgiu executat el programa, passarà una de les dues (o, realment, una de les tres) coses:

  • No passa res
  • Obteniu un bonic bloc giratori al mig del tauler.
  • El tauler de llum funciona, crec, però sembla … estrany (la meitat és verda, algunes files no s’encenen, etc.)

Si no passa res o si el panell sembla estrany, premeu ctrl + c per sortir del programa de mostra, apagueu el pi i comproveu totes les connexions (cable IDC, alimentació, assegureu-vos que totes dues fonts d’alimentació estiguin endollades, etc.) Assegureu-vos també que el barret està connectat correctament; si això no ho soluciona, baixeu-lo a un panell (assegureu-vos d'utilitzar --led-chain 1 quan el proveu) i comproveu si un dels panells pot ser dolent. Si això no funciona, consulteu els consells de resolució de problemes de hzeller. si THAT STILL encara no funciona, proveu de publicar a / r / raspberry_pi (o als fòrums d'Adafruit, si teniu els vostres panells d'Adafruit o de stack exchange, etc.)

Si funciona, encara que sembla estrany (potser com la imatge de capçalera d'aquesta secció) després de comprovar les connexions, és possible que tingueu tot connectat correctament, que els panells funcionin correctament, però que alguna cosa més vagi encès. El que ens portarà al nostre següent pas (més una diversió que un pas) en la velocitat de multiplexació i escaneig. (Si el tauler LED funciona bé i no us interessa el funcionament intern d'aquests panells, no dubteu a saltar-vos el següent pas.)

Pas 5: Taxes de multiplexació i escaneig (o bé: una desviació momentània en el camí cap a la tomba)

Per tant, un dels errors que vaig cometre quan vaig demanar el meu primer joc de panells a Alibaba és que tinc panells exteriors (per què no, vaig pensar: són impermeables i més brillants!). I, quan els vaig connectar al barret de la matriu, les coses semblaven … no van bé.

Per entendre per què és així, trigarem un minut a mirar Phil Burgess a partir de la descripció d’Adafruit de com funcionen aquests panells. Notareu que Burgess assenyala que els panells no il·luminen tots els LED alhora, sinó que il·luminen conjunts de files. La relació entre l’alçada del panell en píxels i el nombre de files que s’il·luminen alhora s’anomena velocitat d’escaneig. Per exemple, en un tauler de 32x32 amb escaneig 1/16, s’il·luminen dues files (1 i 17, 2 i 18, 3 i 19, etc.) alhora, fins a la taula i el controlador repeteix. La majoria de les biblioteques que gestionen matrius RGB es construeixen per a panells on la velocitat d’escaneig és la meitat de l’altura en píxels, és a dir, condueixen dues files de LED alhora.

Els panells exteriors (i alguns panells interiors, assegureu-vos de mirar les especificacions abans de fer la comanda) tenen taxes d’escaneig que són 1/4 de l’alçada en píxels, cosa que significa que esperen que es condueixin quatre línies alhora. Això els fa més brillants (que és bo), però fa que molts codis estàndard no funcionin amb ells (cosa que és dolent). A més d’això, solen tenir els píxels desordenats internament, la qual cosa requereix transformar els valors x i en el programari per abordar els píxels adequats. Per què es fabriquen d'aquesta manera? No en tinc ni idea. Saps? Si és així, digueu-ho. En cas contrari, haurà de seguir sent un misteri.

Per tant, si teniu un d’aquests estranys panells exteriors, (probablement) tindreu sort! hzeller ha afegit recentment suport per a configuracions habituals d’aquest tipus de panells a la seva biblioteca. Podeu obtenir-ne més informació a la pàgina de github del projecte, però podeu passar --led-multiplexing = {0, 1, 2, 3} al codi de mostra (potser també haureu de pretendre que tingueu un cadena de doble longitud de panells de mitja longitud) i hauria de funcionar.

Hi ha alguns patrons de transformació de píxels que no s’admeten, i (endevineu què) els meus panells en tenen un. Per tant, vaig haver d’escriure el meu propi codi de transformació (també, per qualsevol motiu, he de dir a la biblioteca que actuï com si tingués vuit panells de 16x32 encadenats). que és el següent:

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

effK = k% 32

modY = k

modX = j

#modX i modY són les modificades X i Y;

#effJ i effK asseguren que ens transformem dins d’una matriu de 32x32 abans d’empènyer

si ((effJ)> 15):

modX = modX + 16

si ((effK)> 7):

modY = modY - 8

modX = modX + 16

si ((effK)> 15):

modX = modX - 16

si ((effK)> 23):

modY = modY - 8

modX = modX + 16

#A continuació, els empenyem a la ubicació correcta (cada x + 32 mou un tauler)

si (j> 31):

modX + = 32

si (j> 63):

modX + = 32

si (j> 95):

modX + = 32

retorn (modX, modY)

Si teniu un panell com el meu, això pot funcionar. Si no ho fa, haureu d’escriure la vostra, per tant, ja ho sabeu, sort i velocitat de Déu.

Pas 6: el programa de Starboard (o bé: Tornar a la pista i llest per a Pixel)

Ara que ja teniu les vostres matrius operatives i llestes per començar, tot el que heu de fer és posar el programa d’estribord al vostre Pi i preparar-lo per començar. Assegureu-vos que esteu al directori inicial de l'usuari pi (cd / home / pi) i executeu l'ordre següent:

git clone

hauríeu de tenir una carpeta nova, estribord, que contingui tres fitxers: LICENSE.md, README.md i starboard_s16.py. Proveu el programa de tribord executant-lo per python:

sudo python./starboard_s16.py

i hauríeu d'obtenir un munt de partícules que es moguessin a diferents velocitats i que decaiguessin a diferents ritmes. Cada 10.000 paparres més o menys (podeu entrar a l’escriptura python per editar-lo / canviar-lo) canviarà de mode (n’hi ha quatre: RGB, HSV, Rainbow i escala de grisos).

Per tant, ara l’únic que queda per fer és fer que el codi de tribord s’executi a l’inici. Ho farem editant (amb sudo) /etc/rc.local. El que voleu fer és afegir la línia següent just abans de "sortir de 0" a l'script:

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

Després de fer això, reinicieu el pi: un cop executi la seqüència d'arrencada, s'hauria d'iniciar l'script starboard_s16.py.

Si voleu fer un cop d’ull al guió, no dubteu a fer-ho: està llicenciat sota la GNU GPL 3.0. Si l'script no s'executa per a vosaltres, o si teniu problemes, no dubteu en fer-m'ho saber o enviar un error a github i veuré què puc fer per solucionar-lo.

L'últim (molt) que us agradaria fer és configurar SSH al pi, de manera que pugueu remoure-ho i apagar-lo amb seguretat. / Definitivament / voldreu canviar la vostra contrasenya (mitjançant l'ordre passwd), i podeu trobar instruccions per habilitar ssh (també des de la línia d'ordres) aquí.

Recomanat: