Turinys:

Diskoteka: 8 žingsniai (su nuotraukomis)
Diskoteka: 8 žingsniai (su nuotraukomis)

Video: Diskoteka: 8 žingsniai (su nuotraukomis)

Video: Diskoteka: 8 žingsniai (su nuotraukomis)
Video: VEGA - Dėl tavęs 2024, Lapkritis
Anonim
Diskoteka
Diskoteka

Šioje instrukcijoje parodyta, kaip naudojant „Raspberry Pi“valdyti spalvotą šviesos diodų juostą, pagrįstą muzika, grojama iš žiniatinklio naršyklės.

Jame parodyta, kaip sukurti pagrindinę svetainę naudojant „Node.js“per HTTPS ir naudoti „socket.io“per „WSS“(„Secure Websocket“).

Svetainėje yra vienas puslapis, kurio išdėstymas yra labai paprastas. Tinklalapis užpildo išskleidžiamąjį sąrašą su muzikos failais, kurie yra serverio viešajame/garso aplanke. Pasirinkus parinktį sąraše, muzikos failas tinklalapyje paleidžiamas naudojant HTML 5 garso elementą. Grojant muzikos failą, tinklalapis naudoja „AudioContext“sąsają muzikai analizuoti, kuri vėliau siunčiama į serverį saugiu žiniatinklio lizdo ryšiu.

Serveris, veikiantis „Raspberry Pi“, naudoja „Node RPI WS281x“vietinę biblioteką (apvynioja Jeremy Garffo WS281X biblioteką), kad pakeistų WS2811 LED juostos šviesos diodų spalvas, remdamasis duomenimis, siunčiamais per žiniatinklio lizdą.

Pavyzdinį kodą rasite čia: disco-pi

1 žingsnis: įranga

  1. „Raspberry Pi“- aš naudoju „Raspberry Pi 2B“, kurį turėjau aplink, bet „Raspberry Pi 3“pradinį rinkinį galite įsigyti už maždaug 100 CAD
  2. WS2811 LED juostelė - aš žaidžiau su ALITOVE 16,4 pėdų 150 pikselių WS2811. Komplekte yra valdiklis ir maitinimo šaltinis maždaug CAD 45-50
  3. „Barrel Jack Connector“- nusipirkau vieną iš savo vietinės elektronikos parduotuvės, kažką panašaus. Tiesiog įsitikinkite, ar tinka jūsų maitinimo šaltinis
  4. Džemperio jungtys / viela - aš turėjau keletą kabelių nuo moterų iki vyrų ir kai kuriuos 22 matuoklio tvirtus kabliukus

2 veiksmas: nustatykite „Raspberry Pi“

Operacinė sistema

Paprastai naudoju naujausią „Raspbian“versiją. Atsisiųskite paveikslėlį ir įrašykite jį į SD kortelę. Jei naudojate „Windows“kompiuterį, galite įrašyti vaizdą į SD kortelę naudodami „Win32 Disk Imager“.

Node.js

Įdiekite naujausią „Node.js“versiją. Rašymo metu naudoju 8.9.1

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

sudo apt-get install nodejs

Įdiekite „git“

sudo apt-get install git

3 veiksmas: pavyzdinio kodo nustatymas

Klonuoti pavyzdinį kodą

1. Nustatykite bazinį aplanką, kurį norite įdiegti

cd /opt

sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock

2. Klonuokite pavyzdinę git saugyklą

git klonas https://github.com/haydockjp/disco-pi.git"

arba

git klonas [email protected]: haydockjp/disco-pi.git

3. Įdiekite priklausomybes

CD diskas

npm įdiegti

Tai gali užtrukti 2–3 minutes

4 veiksmas: sukurkite savarankiškai pasirašytą SSL sertifikatą

1. Sukurkite privataus rakto failą

cd /opt/com.jonhaydock/disco-pi/certs

2048 m

2. Sukurkite CSR (sertifikato pasirašymo užklausą)

openssl req -new -key disco-pi-key.pem -out disco-pi-csr.pem

Šiuo metu jūsų bus paprašyta pateikti tam tikrą informaciją, kurią reikia pateikti norint gauti sertifikatą. Kadangi tai yra savarankiškai pasirašytas sertifikatas, jūs turite nuspręsti, kaip tiksliai užpildysite išsamią informaciją. Štai pavyzdys

Šalies pavadinimas (2 raidžių kodas) [AS]: CA

Valstijos ar provincijos pavadinimas (pilnas pavadinimas) [Kai kurios valstijos]: Britų Kolumbijos vietovės pavadinimas (pvz., Miestas) : Vankuverio organizacijos pavadinimas (pvz., Įmonė) [Internet Widgits Pty Ltd]: „Disco Pi“organizacijos padalinio pavadinimas (pvz., Skyrius)) : Įprastas vardas (pvz., Serverio FQDN arba JŪSŲ vardas) : disco-pi El. Pašto adresas : [email protected] Iššūkio slaptažodis : Neprivalomas įmonės pavadinimas :

Šiame pavyzdyje tiesiog paspauskite grįžti, kad iššūkio slaptažodis būtų tuščias

3. Sukurkite sertifikatą

openssl x509 -req -days 1095 -in disco-pi-csr.pem-signkey disco-pi-key.pem -out disco-pi-cert.pem

4. Siekiant didesnio saugumo, mes taip pat sukursime „Diffie Hellman Parameters“failą

openssl dhparam -out dh_2048.pem 2048

Tai gali užtrukti 15-20 minučių

5 žingsnis: Aparatūros prijungimas

Aparatūros prijungimas
Aparatūros prijungimas
Aparatūros prijungimas
Aparatūros prijungimas
Aparatūros prijungimas
Aparatūros prijungimas
Aparatūros prijungimas
Aparatūros prijungimas

Maitinimas LED juosta

LED juostelė maitinama 12 voltų. „Raspberry Pi“gali tiekti tik 3,3 V arba 5 V įtampą ir negali išvesti bet kur šalia stiprintuvų, reikalingų tiek daug šviesos diodų.

Svarbu neprijungti 12 voltų maitinimo šaltinio prie „Raspberry Pi“.

Mano juostelė taip pat turėjo papildomus maitinimo laidus, prijungtus prie juostos abiejuose galuose. Siūlau juos užklijuoti, kad jie nesiliestų su jokia kita jūsų įranga.

Kitus veiksmus atlikite savo rizika. Aš neprisiimu atsakomybės už viską, kas gali nutikti.

LED juostelė

Mano LED juostelėje yra trys laidai:

RAUDONA - +12 voltų

JUODA - Žemė

ŽALIA - duomenys

PASTABA: yra „Din“ir „Dout“- duomenys įeina ir išeina. Įsitikinkite, kad dirbate su šviesos diodų juostos galu, nurodančiu „Din“.

Įsitikinkite, kad „Barrel Jack“nėra prijungtas prie maitinimo šaltinio

1. Prijunkite raudoną laidą nuo šviesos diodų juostelės prie statinės lizdo + pusės.

Aš naudoju baltą 22 gabarito kabliuką.

Įdėkite laidą į cilindro lizdo plyšį + ir prisukite.

Įkiškite kitą laido galą į šviesos diodo lizdą. Įsitikinkite, kad jungiatės raudonu laidu.

2. Prijunkite juodą laidą nuo LED juostelės prie statinės lizdo.

Aš naudoju juodą 22 gabarito kabliuką.

Įdėkite laidą į cilindro lizdo angą. Šiuo metu vieno jungties kabelio (nuotraukoje rudos vielos) kištukinį galą taip pat įstatykite į tą pačią angą ir užsukite abu.

Įkiškite kitą juodos vielos galą į šviesos diodo lizdą.

Įsitikinkite, kad jungiatės juodu laidu.

3. Prijunkite žalią laidą iš LED juostelės

Paimkite vieną iš moterų ir vyrų jungčių kabelių. Mano nuotraukose tai yra žalia viela.

Įdėkite išorinį galą į šviesos diodų lizdą su žalia laida.

Tai yra duomenų kabelis.

Raspberry Pi

1. Paimkite žalią jungties kabelį ir prijunkite jį prie Raspberry Pi GPIO.

Turite jį prijungti prie PCM_CLK (12 kontaktas / GPIO 18)

2. Paimkite juodą jungties kabelį ir prijunkite jį prie Raspberry Pi GPIO.

Turite jį prijungti prie vienos iš priežasčių. Siūlau naudoti 14 kaištį, bet taip pat galite naudoti 6, 9, 20, 25, 30, 34 arba 39 kaištį.

PASTABA: kad tai veiktų, LED maitinimo šaltinis ir „Raspberry Pi“turi turėti bendrą pagrindą. Taip pat atkreipkite dėmesį, kad neturite prijungti 12 voltų + (raudono laido) prie „Raspberry Pi“.

LED maitinimas

Jūs neturėtumėte turėti galimybės prijungti 12 voltų maitinimo šaltinio prie statinės lizdo

Visi LED juostelės šviesos diodai dabar turėtų užsidegti BALTA

6 veiksmas: serverio pusės kodas

Vykdomas serverio pusės kodas

cd /opt/com.jonhaydock/disco-pi

sudo npm start

Tai paleis žiniatinklio serverį ir pradės klausytis HTTPS ir WSS užklausų.

Numatytasis prievadas yra 443, tačiau galite jį nepaisyti, prieš pradėdami kodą nustatyti aplinkos kintamąjį. Pavyzdžiui

eksportas DISCO_PI_PORT = 1443

Mano LED juostelėje yra 150 šviesos diodų. Jie valdomi trise. Tai reiškia, kad aš negaliu valdyti kiekvieno šviesos diodo atskirai, ir man reikia nusiųsti pakankamai informacijos, kad galėčiau valdyti 50.

Jei jūsų šviesos diodas turi daugiau ar mažiau, galite nepaisyti valdomų šviesos diodų skaičiaus, įvesdami parametrą paleidimui. Pavyzdžiui, jei galite valdyti tik 10 šviesos diodų

sudo npm pradėti 10

Pagrindinį serverio kodą galima rasti faile app.js. Šis failas paleidžia HTTPS žiniatinklio serverį ir taip pat prideda „socket.io“, kad galėtų klausytis žiniatinklio lizdo užklausų tame pačiame prievade.

Norėdami pasiekti svetainę, pagrindiniame kompiuteryje turėtumėte atidaryti žiniatinklio naršyklę (tai išbandžiau tik „Chrome“) ir naudoti „Raspberry Pi“IP adresą, pvz.

10.0.1.2/

Savo IP adresą galite sužinoti iš Raspberry Pi komandinės eilutės.

ifconfig

Žiniatinklio serveris pateiks bet kokį turinį viešajame aplanke. Pagal numatytuosius nustatymus rodomas puslapis index.html.

Jis turi vieną API pabaigos tašką - /api /audio. Šis galutinis taškas ieško visų failų, esančių viešajame/garso aplanke, ir grąžina sąrašą. Pavyzdžiui

["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"]

Jei norite pridėti muzikos kaip parinktį, nukopijuokite failus į šį aplanką. Aš asmeniškai naudoju „Filezilla“per ssh. Aplankas, į kurį norite pridėti failus, yra /opt/com.jonhaydock/disco-pi/public/audio

7 veiksmas: svetainės kodas

Svetainės kodas
Svetainės kodas

Kai paspausite svetainę, turėtumėte pamatyti kažką panašaus.

Jei matote saugos įspėjimą, tai yra todėl, kad naudojame savarankiškai pasirašytą SSL sertifikatą. Galite to nepaisyti arba pridėti kaip išimtį.

Pasirinkus failo pavadinimą, HTML 5 garso elemento šaltinį. bus nustatytas tas failas. Kai muzika bus paruošta, ji pradės groti. Kai daina bus baigta, muzika sustos.

Jei pasirinksite parinktį Nėra, muzika nebebus leidžiama.

Grojant muzikos failą, tinklalapis naudoja „AudioContext“sąsają muzikai analizuoti, kuri vėliau siunčiama į serverį saugiu žiniatinklio lizdo ryšiu.

Pranešimas yra tokio tipo, kad serverio socket.io buvo nustatytas klausytis „ws2811“. Jame yra 50 elementų masyvas, kuris yra nuo 0 iki 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 naudoja „Node RPI WS281x“vietinę biblioteką (apvynioja Jeremy Garffo WS281X biblioteką), kad pakeistų WS2811 LED juostos šviesos diodų spalvas, remdamasis duomenimis, siunčiamais per interneto lizdą.

8 žingsnis: Pagaliau

Image
Image

Turėtumėte matyti, kad juostelės šviesos diodai keičia muziką su muzika, remiantis greito Furjė transformacijos analize, atlikta tinklalapyje.

Tikiuosi, kad jums tai patinka. Leiskite man žinoti, ką su juo darote!

PASTABA: jei turite kokių nors problemų

Kadangi ši biblioteka ir „Raspberry Pi“garso plokštė naudoja PWM, jų negalima naudoti kartu.

Jums gali tekti įtraukti į „Broadcom“garso branduolio modulio juodąjį sąrašą, sukuriant failą /etc/modprobe.d/snd-blacklist.conf su

Juodasis sąrašas snd_bcm2835

Jei garso įrenginys vis dar įkeliamas po įtraukimo į juodąjį sąrašą, gali tekti jį pakomentuoti faile /etc /modules. Sistemose be galvos taip pat gali tekti priversti garsą per hdmi

Redaguokite config.txt ir pridėkite:

hdmi_force_hotplug = 1

hdmi_force_edid_audio = 1

Kad šis pakeitimas įsigaliotų, reikia iš naujo paleisti

Rekomenduojamas: