Satura rādītājs:
- 1. solis: aprīkojums
- 2. darbība. Raspberry Pi iestatīšana
- 3. darbība: parauga koda iestatīšana
- 4. darbība: izveidojiet pašparakstītu SSL sertifikātu
- 5. darbība: aparatūras pievienošana
- 6. darbība: servera puses kods
- 7. darbība: vietnes kods
- 8. solis: Visbeidzot
Video: Disco-pi: 8 soļi (ar attēliem)
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:57
Šī pamācība parāda, kā izmantot Raspberry Pi, lai kontrolētu krāsainu LED sloksni, pamatojoties uz mūziku, kas tiek atskaņota no tīmekļa pārlūkprogrammas.
Tas parāda, kā izveidot pamata vietni, izmantojot Node.js, izmantojot HTTPS, un izmantot socket.io, izmantojot WSS (Secure Websocket).
Vietnei ir viena lapa ar ļoti vienkāršu izkārtojumu. Tīmekļa lapa aizpilda nolaižamo sarakstu ar mūzikas failiem, kas atrodas servera publiskajā/audio mapē. Izvēloties opciju sarakstā, tiek atskaņots mūzikas fails tīmekļa lapā, izmantojot HTML 5 audio elementu. Mūzikas faila atskaņošanas laikā tīmekļa vietne izmanto AudioContext saskarni, lai analizētu mūziku, kas pēc tam tiek nosūtīta uz serveri, izmantojot drošu tīmekļa ligzdas savienojumu.
Serveris, kas darbojas Raspberry Pi, izmanto Node RPI WS281x vietējo bibliotēku (iesaiņo Džeremija Gārfa WS281X bibliotēku), lai mainītu WS2811 LED sloksnes gaismas diodes, pamatojoties uz datiem, kas nosūtīti caur tīmekļa ligzdu.
Piemēra kodu var atrast šeit: disco-pi
1. solis: aprīkojums
- Raspberry Pi - es izmantoju Raspberry Pi 2B, kas bija man apkārt, bet jūs varat iegādāties Raspberry Pi 3 sākuma komplektu par aptuveni 100 CAD
- WS2811 LED sloksne - es spēlēju ar ALITOVE 16.4ft 150 Pixels WS2811. Tam ir pievienots kontrolieris un barošanas avots aptuveni CAD 45-50
- Barrel Jack Connector - es nopirku vienu no sava vietējā elektronikas veikala, kaut kas līdzīgs šim. Vienkārši pārliecinieties, vai tas atbilst jūsu barošanas avotam
- Džempera savienotāji / vads - man bija daži savienotāju kabeļi no sievietes līdz vīrietim un daži 22 gabarīta cietie savienojuma vadi, kas atrodas apkārt
2. darbība. Raspberry Pi iestatīšana
Operētājsistēma
Es parasti izmantoju jaunāko Raspbian būvējumu. Lejupielādējiet attēlu un ierakstiet to SD kartē. Ja izmantojat Windows datoru, attēla ierakstīšanai SD kartē varat izmantot Win32 Disk Imager.
Node.js
Instalējiet jaunāko Node.js versiju. Rakstīšanas laikā es izmantoju 8.9.1
čokurošanās -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install nodejs
Instalējiet git
sudo apt-get instalēt git
3. darbība: parauga koda iestatīšana
Klonējiet parauga kodu
1. Iestatiet bāzes mapi, kurā instalēt
cd /opt
sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock
2. Klonējiet git repozitoriju
git klons https://github.com/haydockjp/disco-pi.git"
vai
git klons [email protected]: haydockjp/disco-pi.git
3. Instalējiet atkarības
cd diskotēka
npm instalēt
Tas var aizņemt 2-3 minūtes
4. darbība: izveidojiet pašparakstītu SSL sertifikātu
1. Izveidojiet privātas atslēgas failu
cd /opt/com.jonhaydock/disco-pi/certs
openssl genrsa -out disco-pi-key.pem 2048. gads
2. Izveidojiet CSR (sertifikāta parakstīšanas pieprasījumu)
openssl req -new -key disco-pi-key.pem -out disco-pi-csr.pem
Šajā brīdī jums tiks piedāvāta informācija par sertifikāta pieprasījumu. Tā kā šis ir pašparakstīts sertifikāts, tas ir atkarīgs no jums, cik precīzi jūs aizpildāt informāciju. Šeit ir piemērs
Valsts nosaukums (divu burtu kods) [AU]: CA
Štata vai provinces nosaukums (pilns nosaukums) [Dažas valstis]: Britu Kolumbijas apgabala nosaukums (piemēram, pilsēta) : Vankūveras organizācijas nosaukums (piemēram, uzņēmums) [Internet Widgits Pty Ltd]: Disco Pi organizatoriskās vienības nosaukums (piemēram, sadaļa)) : Parastais nosaukums (piemēram, servera FQDN vai JŪSU vārds) : disco-pi E-pasta adrese : [email protected] Izaicinājuma parole : Neobligāts uzņēmuma nosaukums :
Šajā piemērā vienkārši nospiediet atgriešanās pogu, lai atstātu izaicinājuma paroli tukšu
3. Izveidojiet sertifikātu
openssl x509 -req -days 1095 -in disco-pi-csr.pem-signkey disco-pi-key.pem -out disco-pi-cert.pem
4. Papildu drošībai mēs izveidosim arī Difija Helmena parametru failu
openssl dhparam -out dh_2048.pem 2048
Tas var aizņemt 15-20 minūtes
5. darbība: aparatūras pievienošana
LED sloksnes barošana
LED sloksni darbina 12 volti. Raspberry Pi spēj izvadīt tikai 3.3v vai 5v, un to nevar izvadīt nekur pie pastiprinātājiem, kas nepieciešami, lai darbinātu tik daudz gaismas diodes.
Ir svarīgi nepievienot 12 voltu barošanas avotu Raspberry Pi.
Manai sloksnei abos galos bija pievienoti arī papildu strāvas vadi. Es iesaku tos pielīmēt, lai tie nesaskartos ar kādu citu jūsu aprīkojumu.
Veiciet nākamos soļus uz savu risku. Es neuzņemos atbildību par visu, kas var notikt nepareizi.
LED sloksne
Manai LED sloksnei ir trīs vadi:
SARKANS - +12 volti
MELNA - Zeme
ZAĻA - dati
PIEZĪME: ir Din un Dout - Datu ievadīšana un izvadīšana. Pārliecinieties, ka strādājat ar LED sloksnes galu, kas saka Din.
Pārliecinieties, ka mucas ligzda nav pievienota barošanas avotam
1. Savienojiet sarkano vadu no LED sloksnes ar mucas ligzdas + pusi.
Es izmantoju baltu 22 gabarīta savienojuma vadu.
Ievietojiet vadu mucas domkrata + spraugā un pieskrūvējiet to vietā.
Ievietojiet vadu otru galu LED ligzdā. Pārliecinieties, ka savienojat ar sarkano vadu.
2. Savienojiet melno vadu no LED sloksnes ar cilindra ligzdas pusi.
Es izmantoju melnu 22 gabarīta savienojuma vadu.
Ievietojiet vadu mucas domkrata slotā. Šajā brīdī arī ievietojiet viena savienotāja kabeļa (fotoattēlā brūnais vads) vīriešu galu vienā caurumā un ieskrūvējiet abus.
Iebīdiet melnā stieples otru galu LED kontaktligzdā.
Pārliecinieties, ka savienojat ar melno vadu.
3. Pievienojiet zaļo vadu no LED sloksnes
Paņemiet vienu no sieviešu un vīriešu savienotāja kabeļiem. Manās fotogrāfijās tas ir zaļais vads.
Ievietojiet vīriešu galu LED kontaktligzdā ar zaļo vadu.
Šis ir datu kabelis.
Raspberry Pi
1. Paņemiet zaļo savienotāja kabeli un pievienojiet to Raspberry Pi GPIO.
Jums tas jāpievieno PCM_CLK (12. tapa / GPIO 18)
2. Paņemiet melno savienotāja kabeli un pievienojiet to Raspberry Pi GPIO.
Jums tas jāpievieno kādam no iemesliem. Es iesaku izmantot tapu 14, bet jūs varat arī izmantot tapu 6, 9, 20, 25, 30, 34 vai 39.
PIEZĪME: lai tas darbotos, LED barošanas avotam un Raspberry Pi jābūt kopīgam pamatam. Ņemiet vērā arī to, ka nedrīkst pieslēgt 12 voltu + (sarkano vadu) pie Raspberry Pi.
LED jauda
Jums nevajadzētu būt iespējai pieslēgt 12 voltu barošanas bloku mucas ligzdai
Visām LED sloksnes gaismas diodēm tagad vajadzētu iedegties BALTAI
6. darbība: servera puses kods
Tiek palaists servera puses kods
cd /opt/com.jonhaydock/disco-pi
sudo npm sākums
Tas sāks tīmekļa servera darbību un sāks klausīties HTTPS un WSS pieprasījumus.
Noklusējuma ports ir 443, taču to var ignorēt, pirms koda palaišanas iestatot vides mainīgo. Piemēram
eksportēt DISCO_PI_PORT = 1443
Manai LED sloksnei ir 150 gaismas diodes. Tos kontrolē trijatā. Tas nozīmē, ka es nevaru kontrolēt katru LED atsevišķi, un man ir jānosūta pietiekami daudz informācijas, lai kontrolētu 50.
Ja jūsu gaismas diodei ir vairāk vai mazāk, varat ignorēt to gaismas diožu skaitu, kuras jūs kontrolējat, ievadot palaišanas parametru. Piemēram, ja jūs varat kontrolēt tikai 10 gaismas diodes
sudo npm sākt 10
Galveno servera kodu var atrast failā app.js. Šis fails palaiž HTTPS tīmekļa serveri, kā arī pievieno socket.io, lai tajā pašā portā noklausītos Websocket pieprasījumus.
Lai piekļūtu vietnei, galvenajā datorā ir jāatver tīmekļa pārlūkprogramma (esmu to pārbaudījis tikai pārlūkā Chrome) un jāizmanto Raspberry Pi IP adrese, piem.
10.0.1.2/
Jūs varat uzzināt savu IP adresi no Raspberry Pi komandrindas.
ifconfig
Tīmekļa serveris apkalpos jebkuru saturu publiskajā mapē. Pēc noklusējuma tiek parādīta lapa index.html.
Tam ir viens API beigu punkts - /api /audio. Šis beigu punkts meklē visus failus publiskajā/audio mapē un atgriež sarakstu. Piemēram
["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"]
Lai opciju pievienotu mūzikai, kopējiet failus šajā mapē. Es personīgi izmantoju Filezilla, izmantojot ssh. Mape, kurai vēlaties pievienot failus, ir /opt/com.jonhaydock/disco-pi/public/audio
7. darbība: vietnes kods
Noklikšķinot uz vietnes, jums vajadzētu redzēt kaut ko līdzīgu.
Ja redzat drošības brīdinājumu, tas ir tāpēc, ka mēs izmantojam pašparakstītu SSL sertifikātu. Varat to ignorēt vai pievienot kā izņēmumu.
Izvēloties faila nosaukumu, HTML 5 audio elementa avots. tiks iestatīts uz šo failu. Kad mūzika būs gatava, tā sāks atskaņot. Kad dziesma ir pabeigta, mūzika tiks pārtraukta.
Ja izvēlaties opciju Nav, mūzikas atskaņošana tiks pārtraukta.
Mūzikas faila atskaņošanas laikā tīmekļa vietne izmanto AudioContext saskarni, lai analizētu mūziku, kas pēc tam tiek nosūtīta uz serveri, izmantojot drošu tīmekļa ligzdas savienojumu.
Ziņojums ir veids, kurā servera socket.io ir iestatīts, lai klausītos "ws2811". Tajā ir 50 elementu masīvs, kas ir no 0 līdz 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}
Serveris izmanto Node RPI WS281x vietējo bibliotēku (iesaiņo Džeremija Gārfa WS281X bibliotēku), lai mainītu WS2811 LED sloksnes gaismas diodes krāsas, pamatojoties uz datiem, kas nosūtīti caur tīmekļa ligzdu.
8. solis: Visbeidzot
Jums vajadzētu redzēt, ka sloksnes gaismas diodes maina krāsu kopā ar mūziku, pamatojoties uz tīmekļa lapā veikto ātrās Furjē transformācijas analīzi.
Es ceru, ka jums tas patiks. Ļaujiet man zināt, ko jūs ar to darāt!
PIEZĪME: Ja rodas kādas problēmas
Tā kā šī bibliotēka un iebūvētais Raspberry Pi audioaparāts izmanto PWM, tos nevar izmantot kopā.
Jums var būt nepieciešams iekļaut Broadcom audio kodola moduli melnajā sarakstā, izveidojot failu /etc/modprobe.d/snd-blacklist.conf ar
melnais saraksts snd_bcm2835
Ja audio ierīce joprojām tiek ielādēta pēc iekļaušanas melnajā sarakstā, jums, iespējams, vajadzēs to komentēt arī failā /etc /modules. Sistēmās bez galvām, iespējams, būs jāpiespiež audio caur hdmi
Rediģējiet config.txt un pievienojiet:
hdmi_force_hotplug = 1
hdmi_force_edid_audio = 1
Lai šīs izmaiņas stātos spēkā, ir nepieciešama restartēšana
Ieteicams:
Pārnēsājama Disco V2 -ar skaņas vadāmām gaismas diodēm: 11 soļi (ar attēliem)
Portable Disco V2 -ar skaņas vadāmām gaismas diodēm: kopš savas pirmās pārnēsājamās diskotēkas veikšanas esmu gājis garu ceļu ar savu elektronikas ceļojumu. Sākotnējā konstrukcijā es uzlauzu shēmu uz prototipa plates un izdevās izveidot glītu, mazu kabatas diskotēku. Šoreiz es izveidoju savu PCB un
Kā: Raspberry PI 4 bez galvas (VNC) instalēšana ar RPI attēlu un attēliem: 7 soļi (ar attēliem)
Kā: Raspberry PI 4 bez galvas (VNC) instalēšana ar Rpi-imager un Pictures: Es plānoju izmantot šo Rapsberry PI daudzos jautros projektos savā emuārā. Jūtieties brīvi to pārbaudīt. Es gribēju atkal izmantot savu aveņu PI, bet manā jaunajā vietā nebija tastatūras vai peles. Pagāja laiks, kopš es izveidoju aveņu
Arduino Halloween Edition - zombiju uznirstošais ekrāns (soļi ar attēliem): 6 soļi
Arduino Helovīna izdevums - zombiju uznirstošais ekrāns (soļi ar attēliem): Vai vēlaties Helovīnā nobiedēt savus draugus un radīt kliedzošu troksni? Vai arī vienkārši gribi uztaisīt labu palaidnību? Šis zombiju uznirstošais ekrāns to var izdarīt! Šajā pamācībā es iemācīšu jums, kā viegli izveidot izlecošus zombijus, izmantojot Arduino. HC-SR0
Ar skaņu vadāmas gaismas diodes - Pocket Disco: 11 soļi (ar attēliem)
Ar skaņu vadāmas gaismas diodes - Pocket Disco: izveidojiet savu kabatas diskotēku ar dažām mūzikas kontrolētām gaismas diodēm. Viss, kas jums nepieciešams, ir mūzika vai skaņa, un gaismas diodes dejos apkārt skaņai. Šī ir patiešām neliela ķēde, un tās izveidei nepieciešami tikai daži komponenti. Galvenais b
Kamera atvieglotiem laika intervāla attēliem: 22 soļi (ar attēliem)
Kamera atvieglotiem laika intervāla attēliem: es pārbaudīju vienu no citām instrukcijām par laika nobīdes filmu veidošanu. Viņš diezgan labi aptvēra filmas daļu. Viņš pastāstīja par bezmaksas programmatūru, kuru varat lejupielādēt, lai izveidotu filmas. Es sev teicu: domāju, ka redzēšu, vai varu