Satura rādītājs:

Disco-pi: 8 soļi (ar attēliem)
Disco-pi: 8 soļi (ar attēliem)

Video: Disco-pi: 8 soļi (ar attēliem)

Video: Disco-pi: 8 soļi (ar attēliem)
Video: ЮЛЯ ФИНЕСС: Как я вышла с 8 этажа! Групповое изнасилование под мефедроном, психиатрическая больница 2024, Jūlijs
Anonim
Diskotēka
Diskotēka

Šī 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

  1. 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
  2. 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
  3. 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
  4. 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

Aparatūras savienošana
Aparatūras savienošana
Aparatūras savienošana
Aparatūras savienošana
Aparatūras savienošana
Aparatūras savienošana
Aparatūras savienošana
Aparatūras savienoš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

Vietnes kods
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

Image
Image

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: