Taula de continguts:
- Pas 1: equipament
- Pas 2: Configuració del Raspberry Pi
- Pas 3: Configuració del codi d'exemple
- Pas 4: creeu un certificat SSL autofirmat
- Pas 5: Connexió del maquinari
- Pas 6: Codi del servidor
- Pas 7: Codi del lloc web
- Pas 8: Finalment
Vídeo: Discopi: 8 passos (amb imatges)
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:16
Aquest instructiu mostra com utilitzar un Raspberry Pi per controlar una tira LED de colors, basada en la música reproduïda des d’un navegador web.
Mostra com crear un lloc web bàsic mitjançant Node.js a través d’HTTPS i utilitzar socket.io a través de WSS (Secure Websocket).
El lloc web té una sola pàgina amb un disseny molt bàsic. La pàgina web omple una llista desplegable amb fitxers de música, que es troben a la carpeta pública / d'àudio del servidor. Si seleccioneu una opció a la llista, es reproduirà el fitxer de música a la pàgina web mitjançant l'element d'àudio HTML 5. Mentre es reprodueix el fitxer de música, la pàgina web utilitza la interfície AudioContext per analitzar la música, que després s’envia al servidor mitjançant una connexió de port de xarxa segur.
El servidor que s’executa en un Raspberry Pi utilitza la biblioteca Native RPI WS281x Native (que embolcalla la biblioteca WS281X de Jeremy Garff) per canviar els colors dels LEDs d’una tira LED WS2811, en funció de les dades enviades a través del portal web.
El codi d'exemple es pot trobar aquí: disco-pi
Pas 1: equipament
- Raspberry Pi: he utilitzat un Raspberry Pi 2B que tenia al voltant, però podeu obtenir un kit d’inici Raspberry Pi 3 per aproximadament 100 CAD
- Cinta LED WS2811: jugava amb ALITOVE 16,4 peus i 150 píxels WS2811. Això ve amb un controlador i una font d'alimentació per aproximadament 45-50 CAD
- Connector Jack Barrel: en vaig comprar un a la meva botiga d’electrònica local, una cosa així. Assegureu-vos si s’adapta a la vostra font d’alimentació
- Connectors de pont / filferro: tenia alguns cables de connectors de femella a mascle i uns cables de connexió sòlids de calibre 22 que estaven al voltant
Pas 2: Configuració del Raspberry Pi
Sistema operatiu
Normalment faig servir la versió més recent de Raspbian. Descarregueu la imatge i escriviu-la a la targeta SD. Si utilitzeu un ordinador Windows, podeu utilitzar Win32 Disk Imager per escriure la imatge a la targeta SD.
Node.js
Instal·leu la versió més recent de Node.js. En el moment d’escriure, estic fent servir 8.9.1
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install nodejs
Instal·leu git
sudo apt-get install git
Pas 3: Configuració del codi d'exemple
Cloneu el codi d'exemple
1. Configureu una carpeta base per instal·lar-la
cd / opt
sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock
2. Cloneu el repositori d'exemple git
git clone https://github.com/haydockjp/disco-pi.git"
o bé
git clone [email protected]: haydockjp / disco-pi.git
3. Instal·leu les dependències
cd disco-pi
Instal·lació de npm
Això pot trigar 2-3 minuts
Pas 4: creeu un certificat SSL autofirmat
1. Creeu un fitxer de clau privada
cd /opt/com.jonhaydock/disco-pi/certs
openssl genrsa -out disco-pi-key.pem 2048
2. Creeu una CSR (Sol·licitud de signatura de certificats)
openssl req -new -key disco-pi-key.pem -out disco-pi-csr.pem
En aquest moment se us demanarà informació sobre la sol·licitud de certificat. Com que es tracta d’un certificat autofirmat, depèn de la precisió que empleneu les dades. Aquí en teniu un exemple
Nom del país (codi de 2 lletres) [AU]: CA
Nom de l'estat o província (nom complet) [Alguns estats]: British Columbia Nom de la localitat (per exemple, ciutat) : Nom de l'organització de Vancouver (per exemple, empresa) [Internet Widgits Pty Ltd]: Nom de la unitat organitzativa Disco Pi (per exemple, secció) : Nom comú (per exemple, nom de domini general del servidor o el vostre nom) : disco-pi Adreça de correu electrònic : [email protected] Una contrasenya de desafiament : un nom d'empresa opcional :
En aquest exemple, només cal prémer Retorn per deixar en blanc la contrasenya de desafiament
3. Generar el certificat
openssl x509 -req -days 1095 -in disco-pi-csr.pem -signkey disco-pi-key.pem -out disco-pi-cert.pem
4. Per a més seguretat, també crearem un fitxer de Paràmetres Diffie Hellman
openssl dhparam -out dh_2048.pem 2048
Això pot trigar entre 15 i 20 minuts
Pas 5: Connexió del maquinari
Alimentació de la tira LED
La tira LED funciona amb 12 volts. El Raspberry Pi només és capaç de generar 3,3v o 5v i no és capaç de sortir a prop dels amplificadors necessaris per conduir tants LED.
És important no connectar la font d'alimentació de 12 volts al Raspberry Pi.
La meva tira també tenia cables d’alimentació addicionals connectats a la banda a cada extrem. Us suggereixo que enregistreu-los perquè no entrin en contacte amb cap altre equip.
Realitzeu els passos següents sota el vostre propi risc. No assumeixo cap responsabilitat per qualsevol cosa que pugui sortir malament.
Tira LED
La meva tira LED té tres cables:
VERMELL - +12 volts
NEGRE: terra
VERD: dades
NOTA: hi ha un Din i un Dout - Data In i Data Out. Assegureu-vos que esteu treballant amb l'extrem de la tira LED que diu Din.
Assegureu-vos que el Barrel Jack no està connectat a la font d'alimentació
1. Connecteu el cable vermell de la tira LED al costat + del barril Jack.
Vaig fer servir un cable de connexió de calibre 22 blanc.
Col·loqueu el cable a la ranura + de la presa del canó i enrosqueu-lo al seu lloc.
Introduïu l’altre extrem del cable al sòcol del LED. Assegureu-vos que us connecteu amb el cable vermell.
2. Connecteu el cable negre de la tira LED al costat de la presa de barril.
He utilitzat un filferro negre de calibre 22.
Col·loqueu el cable a la ranura - de la presa del canó. En aquest punt, col·loqueu també l'extrem mascle d'un dels cables del connector (fil marró a la foto) al mateix forat i enrosqueu-los tots al lloc.
Introduïu l’altre extrem del cable negre a la presa del LED.
Assegureu-vos que us connecteu amb el cable negre.
3. Connecteu el cable verd de la tira LED
Agafeu un dels cables del connector femal a mascle. A les meves fotos aquest és el fil verd.
Col·loqueu l'extrem mascle a la presa LED amb el fil verd.
Aquest és el cable de dades.
Raspberry Pi
1. Agafeu el cable de connector verd i connecteu-lo al Raspberry Pi GPIO.
Cal connectar-lo al PCM_CLK (pin 12 / GPIO 18)
2. Agafeu el cable del connector negre i connecteu-lo al Raspberry Pi GPIO.
Cal connectar-lo a un dels motius. Us suggereixo que feu servir el pin 14, però també podeu utilitzar el pin 6, 9, 20, 25, 30, 34 o 39.
NOTA: perquè això funcioni, la font d'alimentació LED i el Raspberry Pi han de tenir un punt comú. Tingueu en compte també que no heu de connectar el cable de 12 volts + (cable vermell) al Raspberry Pi.
Alimentació LED
No hauríeu de poder connectar la font d'alimentació de 12 volts a la presa de barril
Ara tots els LEDs de la tira LED haurien d’il·luminar-se EN BLANC
Pas 6: Codi del servidor
Execució del codi del servidor
cd /opt/com.jonhaydock/disco-pi
sudo npm start
Això iniciarà el servidor web i començarà a escoltar les sol·licituds HTTPS i WSS.
El port per defecte és 443, però podeu substituir-lo establint una variable d'entorn abans d'iniciar el codi. Per exemple
exportació DISCO_PI_PORT = 1443
La meva tira LED té 150 LED. Aquests es controlen en grups de tres. Això vol dir que no puc controlar tots els LEDs individualment i que he d’enviar prou informació per controlar-ne 50.
Si el vostre LED té més o menys, podeu anul·lar el nombre de LEDs que controleu passant un paràmetre a l'inici. Per exemple, si només podeu controlar 10 LED
sudo npm start 10
El codi del servidor principal es troba al fitxer app.js. Aquest fitxer inicia el servidor web HTTPS i també afegeix a socket.io per escoltar les sol·licituds de websocket al mateix port.
Per accedir al lloc web, heu d’obrir un navegador web a l’ordinador principal (només ho he provat a Chrome) i utilitzar l’adreça IP del Raspberry Pi, per exemple.
10.0.1.2/
Podeu trobar la vostra adreça IP a la línia d’ordres de Raspberry Pi.
ifconfig
El servidor web publicarà qualsevol contingut a la carpeta pública. Per defecte es mostra la pàgina index.html.
Té un punt final API: / api / audio. Aquest punt final busca qualsevol fitxer de la carpeta pública / àudio i torna la llista. Per exemple
["GYAKO.mp3", "Havana (feat. Young Thug).mp3", "Queen_Bohemian_Rhapsody.mp3", "Set It All Free.mp3", "This Is What You Came For (feat. Rihanna).mp3"]
Per afegir música com a opció, copieu fitxers a aquesta carpeta. Personalment faig servir Filezilla sobre ssh. La carpeta a la qual voleu afegir fitxers és /opt/com.jonhaydock/disco-pi/public/audio
Pas 7: Codi del lloc web
Quan visiteu el lloc web, hauríeu de veure alguna cosa així.
Si veieu un advertiment de seguretat, és perquè utilitzem un certificat SSL autosignat. Podeu ignorar-lo o afegir-lo com a excepció.
En seleccionar un nom de fitxer, la font de l'element d'àudio HTML 5. es definirà en aquest fitxer. Un cop llesta, la música començarà a sonar. Un cop acabada la cançó, la música s'aturarà.
Si seleccioneu l'opció Cap, la música deixarà de reproduir-se.
Mentre es reprodueix el fitxer de música, la pàgina web utilitza la interfície AudioContext per analitzar la música, que després s’envia al servidor mitjançant una connexió de port de xarxa segur.
El missatge és del tipus que s'ha configurat el socket.io al servidor per escoltar "ws2811". Conté una matriu de 50 elements, entre 0 i 255.
"ws2811", {"0": 251, "1": 252, "2": 241, "3": 217, "4": 193, "5": 164, "6": 148, "7": 139, "8": 110, "9": 96, "10": 81, "11": 67, "12": 72, "13": 66, "14": 60, "15": 60, "16": 63, "17": 54, "18": 37, "19": 30, "20": 31, "21": 26, "22": 13, "23": 3, " 24 ": 10," 25 ": 7," 26 ": 6," 27 ": 0," 28 ": 0," 29 ": 0," 30 ": 1," 31 ": 8," 32 ": 12, "33": 3, "34": 2, "35": 2, "36": 0, "37": 0, "38": 0, "39": 0, "40": 0, "41": 0, "42": 0, "43": 0, "44": 0, "45": 0, "46": 0, "47": 0, "48": 0, " 49 ": 0}
El servidor utilitza la biblioteca Native RPI WS281x Native (que empaqueta la biblioteca WS281X de Jeremy Garff) per canviar els colors dels LEDs en una tira LED WS2811, en funció de les dades enviades a través del portal web.
Pas 8: Finalment
Hauríeu de veure que els LED de la tira canvien de color amb la música, basant-se en l’anàlisi de la transformada de Fourier ràpida feta a la pàgina web.
Espero que us agradi això. Feu-me saber què en feu.
NOTA: Si teniu algun problema
Atès que aquesta biblioteca i l’àudio integrat de Raspberry Pi fan servir PWM, no es poden utilitzar junts.
És possible que hàgiu de fer una llista negra del mòdul del nucli d’àudio Broadcom creant un fitxer /etc/modprobe.d/snd-blacklist.conf amb
llista negra snd_bcm2835
Si el dispositiu d'àudio es continua carregant després de la llista negra, també pot ser que hagueu de comentar-lo al fitxer / etc / modules. En sistemes sense capçalera, és possible que també hàgiu de forçar l’àudio a través del HDMI
Editeu config.txt i afegiu:
hdmi_force_hotplug = 1
hdmi_force_edid_audio = 1
Cal que es reiniciï perquè aquest canvi tingui efecte
Recomanat:
Llum (s) LED amb bateria amb càrrega solar: 11 passos (amb imatges)
Llums LED amb bateria amb càrrega solar: la meva dona ensenya a la gent a fer sabó, la majoria de les seves classes eren al vespre i aquí a l’hivern es fa fosc cap a les 4:30 de la tarda, alguns dels seus alumnes tenien problemes per trobar el nostre casa. Teníem un rètol frontal però fins i tot amb un lligam al carrer
Porta imatges amb altaveu incorporat: 7 passos (amb imatges)
Suport d'imatges amb altaveu incorporat: aquí teniu un gran projecte per dur a terme durant el cap de setmana, si voleu que us poseu un altaveu que pugui contenir imatges / postals o fins i tot la vostra llista de tasques. Com a part de la construcció, utilitzarem un Raspberry Pi Zero W com a centre del projecte i un
Reconeixement d'imatges amb plaques K210 i Arduino IDE / Micropython: 6 passos (amb imatges)
Reconeixement d’imatges amb plaques K210 i Arduino IDE / Micropython: ja vaig escriure un article sobre com executar demostracions d’OpenMV a Sipeed Maix Bit i també vaig fer un vídeo de demostració de detecció d’objectes amb aquesta placa. Una de les moltes preguntes que la gent ha formulat és: com puc reconèixer un objecte que la xarxa neuronal no és tr
Gesture Hawk: robot controlat amb gestos manuals mitjançant la interfície basada en el processament d’imatges: 13 passos (amb imatges)
Gesture Hawk: robot controlat amb gestos manuals mitjançant interfície basada en el processament d’imatges: Gesture Hawk es va mostrar a TechEvince 4.0 com una interfície simple màquina basada en el processament d’imatges. La seva utilitat rau en el fet que no es requereixen cap sensor addicional ni un dispositiu portàtil, excepte un guant, per controlar el cotxe robòtic que funciona amb diferents
Com desmuntar un ordinador amb passos i imatges senzills: 13 passos (amb imatges)
Com desmuntar un ordinador amb passos i imatges senzills: és una instrucció sobre com desmuntar un ordinador. La majoria dels components bàsics són modulars i fàcilment eliminables. Tanmateix, és important que us organitzeu al respecte. Això us ajudarà a evitar la pèrdua de peces i també a fer el muntatge