Turinys:
- 1 žingsnis: įranga
- 2 veiksmas: nustatykite „Raspberry Pi“
- 3 veiksmas: pavyzdinio kodo nustatymas
- 4 veiksmas: sukurkite savarankiškai pasirašytą SSL sertifikatą
- 5 žingsnis: Aparatūros prijungimas
- 6 veiksmas: serverio pusės kodas
- 7 veiksmas: svetainės kodas
- 8 žingsnis: Pagaliau
Video: Diskoteka: 8 žingsniai (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:49
Š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
- „Raspberry Pi“- aš naudoju „Raspberry Pi 2B“, kurį turėjau aplink, bet „Raspberry Pi 3“pradinį rinkinį galite įsigyti už maždaug 100 CAD
- 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
- „Barrel Jack Connector“- nusipirkau vieną iš savo vietinės elektronikos parduotuvės, kažką panašaus. Tiesiog įsitikinkite, ar tinka jūsų maitinimo šaltinis
- 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
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
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
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:
„Pasidaryk pats“„Leds Arduino“ruletės žaidimas: 3 žingsniai (su nuotraukomis)
„Pasidaryk pats“37 „Leds Arduino“ruletės žaidimas: Ruletė yra kazino žaidimas, pavadintas prancūziško žodžio, reiškiančio mažą ratą, vardu
„Arduino Halloween Edition“- „Zombies“iššokantis ekranas (žingsniai su nuotraukomis): 6 žingsniai
„Arduino Halloween Edition“- „Zombies“iššokantis ekranas (žingsniai su paveikslėliais): norite Helovino metu išgąsdinti savo draugus ir sukelti riksmą? O gal tiesiog norite padaryti gerą išdaigą? Šis iššokantis „Zombies“ekranas gali tai padaryti! Šioje instrukcijoje aš išmokysiu jus, kaip lengvai padaryti iššokančius zombius naudojant „Arduino“. HC-SR0
Varžtas - „pasidaryk pats“belaidis įkrovimo naktinis laikrodis (6 žingsniai): 6 žingsniai (su nuotraukomis)
Varžtas - „Pasidaryk pats“belaidis įkrovimo naktinis laikrodis (6 žingsniai): Indukcinis įkrovimas (taip pat žinomas kaip belaidis įkrovimas arba belaidis įkrovimas) yra belaidžio energijos perdavimo tipas. Jis naudoja elektromagnetinę indukciją tiekti elektros energiją nešiojamiesiems įrenginiams. Dažniausia programa yra „Qi“belaidžio įkrovimo st
Begalinė diskoteka: 6 žingsniai (su nuotraukomis)
„Infinite Disco“: Šiame projekte aš padariau begalybės veidrodį, pagrįstą dodekaedru, kuris reaguoja į garsą
CD diskoteka: 7 žingsniai
CD diskoteka: sukurkite vėsų diskotekos apšvietimą savo kambariui tiesiog naudodami kompaktinį diską ar DVD diską, kai kuriuos rgb šviesos diodus ir akumuliatoriaus laikiklį. Tie, kurie jau perskaitė šią instrukciją, gali dar kartą perskaityti šią priežastį. A VI ŽINGSNIAI