Sisällysluettelo:
- Vaihe 1: Laitteet
- Vaihe 2: Asenna Raspberry Pi
- Vaihe 3: Esimerkkikoodin määrittäminen
- Vaihe 4: Luo itse allekirjoitettu SSL -varmenne
- Vaihe 5: Laitteiston liittäminen
- Vaihe 6: Palvelinpuolen koodi
- Vaihe 7: Verkkosivuston koodi
- Vaihe 8: Lopuksi
Video: Disco-pi: 8 vaihetta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:03
Tässä ohjeessa näytetään, miten Raspberry Pi -laitteen avulla voidaan ohjata värillistä LED -nauhaa verkkoselaimesta toistettavan musiikin perusteella.
Se näyttää, kuinka luoda perusverkkosivusto käyttämällä Node.js -protokollaa HTTPS -protokollan kautta ja käyttää socket.io -protokollaa WSS -protokollan (Secure Websocket) avulla.
Sivustolla on yksi sivu, jolla on hyvin yksinkertainen ulkoasu. Verkkosivu täyttää avattavan luettelon musiikkitiedostoista, jotka sijaitsevat palvelimen julkisessa/äänikansiossa. Valitsemalla vaihtoehdon luettelosta toistetaan verkkosivun musiikkitiedosto HTML 5 -äänielementin avulla. Musiikkitiedostoa toistettaessa verkkosivu käyttää AudioContext -käyttöliittymää musiikin analysointiin, joka lähetetään sitten palvelimelle suojatun websocket -yhteyden kautta.
Raspberry Pi -palvelimella toimiva palvelin muuttaa Node RPI WS281x -kirjastoa (Jeremy Garffin WS281X -kirjastoa) WS2811 -LED -nauhan LED -valojen värien muuttamiseen verkkopistokkeen kautta lähetettyjen tietojen perusteella.
Esimerkkikoodi löytyy täältä: disco-pi
Vaihe 1: Laitteet
- Raspberry Pi - Käytin Raspberry Pi 2B: tä, jonka olin asettanut, mutta voit saada Raspberry Pi 3 -aloituspaketin hintaan noin 100 CAD
- WS2811 LED -nauha - pelasin ALITOVE 16,4ft 150 pikseliä WS2811. Sen mukana tulee ohjain ja virtalähde noin CAD 45-50
- Barrel Jack Connector - Ostin sellaisen paikallisesta elektroniikkakaupastani, jotain tällaista. Varmista vain, että se sopii virtalähteeseesi
- Jumper -liittimet / johto - Minulla oli naaras -uros -liitäntäkaapeleita ja noin 22 -mittarinen kiinteä koukkujohto makaa ympäri
Vaihe 2: Asenna Raspberry Pi
Käyttöjärjestelmä
Käytän yleensä uusinta Raspbian -rakennetta. Lataa kuva ja kirjoita se SD -kortille. Jos käytät Windows -tietokonetta, voit kirjoittaa kuvan SD -kortille Win32 Disk Imager -ohjelmalla.
Node.js
Asenna Node.js: n uusin versio. Käytän tätä kirjoitettaessa 8.9.1
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install nodejs
Asenna git
sudo apt-get install git
Vaihe 3: Esimerkkikoodin määrittäminen
Kloonaa esimerkkikoodi
1. Määritä peruskansio asennettavaksi
cd /opt
sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock
2. Kloonaa esimerkki git -arkisto
git-klooni https://github.com/haydockjp/disco-pi.git"
tai
git klooni [email protected]: haydockjp/disco-pi.git
3. Asenna riippuvuudet
cd disco-pi
npm asennus
Tämä voi kestää 2-3 minuuttia
Vaihe 4: Luo itse allekirjoitettu SSL -varmenne
1. Luo yksityisen avaimen tiedosto
cd /opt/com.jonhaydock/disco-pi/certs
openssl genrsa -out disco-pi-key.pem 2048
2. Luo CSR (Certificate Signing Request)
openssl req -new -key disco-pi-key.pem -out disco-pi-csr.pem
Tässä vaiheessa sinulta kysytään varmennepyyntöä koskevia tietoja. Koska tämä on itse allekirjoitettu todistus, sinun on päätettävä, kuinka tarkasti täytät tiedot. Tässä on esimerkki
Maan nimi (2 -kirjaiminen koodi) [AU]: CA
Osavaltion tai provinssin nimi (koko nimi) [Jotkin osavaltiot]: Brittiläinen Kolumbia Paikannimi (esim. Kaupunki) : Vancouver-organisaation nimi (esim. Yritys) [Internet Widgits Pty Ltd]: Disco Pi -organisaation yksikön nimi (esim. Osio) : Yleinen nimi (esim. Palvelimen FQDN tai SINUN nimi) : disco-pi Sähköpostiosoite : [email protected] Haastussalasana : Valinnainen yrityksen nimi :
Tässä esimerkissä paina vain paluuta, jos haluat jättää haassalasanan tyhjäksi
3. Luo varmenne
openssl x509 -req -days 1095 -in disco-pi-csr.pem-signkey disco-pi-key.pem -out disco-pi-cert.pem
4. Turvallisuuden lisäämiseksi luomme myös Diffie Hellman -parametritiedoston
openssl dhparam -out dh_2048.pem 2048
Tämä voi kestää 15-20 minuuttia
Vaihe 5: Laitteiston liittäminen
Virta LED -nauhalle
LED -nauha saa virtansa 12 voltista. Raspberry Pi tuottaa vain 3.3v tai 5v, eikä se pysty lähettämään lähelle vahvistimia, joita tarvitaan niin monien LED -valojen käyttämiseen.
On tärkeää olla kytkemättä 12 voltin virtalähdettä Raspberry Pi -laitteeseen.
Nauhassa oli myös ylimääräisiä virtajohtoja kytketty nauhaan molemmissa päissä. Ehdotan, että teippaat ne kiinni, jotta ne eivät joudu kosketuksiin muiden laitteidesi kanssa.
Suorita seuraavat vaiheet omalla vastuullasi. En ota vastuuta mistään, mikä voi mennä pieleen.
LED-nauha
LED -nauhassa on kolme johtoa:
PUNAINEN - +12 volttia
MUSTA - Maa
VIHREÄ - Tiedot
HUOMAUTUS: on Din ja Dout - Data In ja Data Out. Varmista, että käytät Din -merkkisen LED -nauhan päätä.
Varmista, että tynnyrin liitintä ei ole kytketty virtalähteeseen
1. Liitä punainen nauha LED -nauhasta piippuliittimen + puolelle.
Käytin valkoista 22 -koukkuista lankaa.
Aseta lanka tynnyrin liittimen + -aukkoon ja ruuvaa se paikalleen.
Työnnä johdon toinen pää LED -liittimeen. Varmista, että yhdistät punaisella johdolla.
2. Liitä LED -nauhan musta johto piippuliittimen - puoleen.
Käytin mustaa 22 gaugen kytkentäjohtoa.
Aseta lanka tynnyrin liittimen - aukkoon. Aseta tässä vaiheessa myös yhden liitäntäkaapelin urospää (valokuvan ruskea johto) samaan reikään ja ruuvaa molemmat paikalleen.
Työnnä mustan johdon toinen pää LED -valon liitäntään.
Varmista, että yhdistät mustalla johdolla.
3. Liitä vihreä johto LED -nauhasta
Ota yksi naaras -uros -liitäntäkaapeleista. Kuvissani tämä on vihreä lanka.
Aseta urospää LED -pistorasiaan vihreällä johdolla.
Tämä on datakaapeli.
Raspberry Pi
1. Ota vihreä liitäntäkaapeli ja liitä se Raspberry Pi GPIO -laitteeseen.
Sinun on yhdistettävä se PCM_CLK -laitteeseen (nasta 12 / GPIO 18)
2. Ota musta liitäntäkaapeli ja liitä se Raspberry Pi GPIO -laitteeseen.
Sinun on liitettävä se johonkin perusteista. Ehdotan, että käytät tappia 14, mutta voit käyttää myös tappia 6, 9, 20, 25, 30, 34 tai 39.
HUOMAUTUS: jotta tämä toimisi, LED -virtalähteellä ja Raspberry Pi: llä on oltava yhteinen maa. Huomaa myös, että 12 Volt + (punainen johto) -liitäntää ei saa kytkeä Raspberry Pi -laitteeseen.
LED -teho
Sinun ei pitäisi voida kytkeä 12 voltin virtalähdettä tynnyrin liittimeen
Kaikkien LED -nauhan merkkivalojen pitäisi nyt syttyä VALKOISEKSI
Vaihe 6: Palvelinpuolen koodi
Palvelinpuolen koodi suoritetaan
cd /opt/com.jonhaydock/disco-pi
sudo npm käynnistyy
Tämä käynnistää verkkopalvelimen ja alkaa kuunnella HTTPS- ja WSS -pyyntöjä.
Oletusportti on 443, mutta voit ohittaa tämän asettamalla ympäristömuuttujan ennen koodin käynnistämistä. Esimerkiksi
vienti DISCO_PI_PORT = 1443
LED -nauhassa on 150 LEDiä. Näitä ohjataan kolmessa ryhmässä. Tämä tarkoittaa sitä, että en voi ohjata jokaista LEDiä erikseen, ja minun on lähetettävä tarpeeksi tietoja hallitaksesi 50: tä.
Jos LED -valossasi on enemmän tai vähemmän, voit ohittaa ohjaamiesi LED -merkkien määrän syöttämällä parametrin käynnistykseen. Jos esimerkiksi voit ohjata vain 10 LEDiä
sudo npm aloita 10
Pääpalvelimen koodi löytyy app.js -tiedostosta. Tämä tiedosto käynnistää HTTPS -verkkopalvelimen ja lisää myös socket.io -sivuston kuuntelemaan Websocket -pyyntöjä samassa portissa.
Päästäksesi verkkosivustoon, avaa verkkoselain pääkoneellasi (olen testannut tämän vain Chromessa) ja käytä Raspberry Pi: n IP -osoitetta, esim.
10.0.1.2/
Voit selvittää IP -osoitteesi Raspberry Pi -komentoriviltä.
ifconfig
Verkkopalvelin palvelee mitä tahansa julkisen kansion sisältöä. Se näyttää oletuksena index.html -sivun.
Siinä on yksi API -päätepiste - /api /audio. Tämä päätepiste etsii kaikki tiedostot julkisen/äänikansion alta ja palauttaa luettelon. Esimerkiksi
["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"]
Jos haluat lisätä musiikkia lisävarusteena, kopioi tiedostot tähän kansioon. Itse käytän Filezillaa ssh: n yli. Kansio, johon haluat lisätä tiedostoja, on /opt/com.jonhaydock/disco-pi/public/audio
Vaihe 7: Verkkosivuston koodi
Kun napsautat verkkosivustoa, sinun pitäisi nähdä jotain tällaista.
Jos näet suojausvaroituksen, tämä johtuu siitä, että käytämme itse allekirjoitettua SSL-varmennetta. Voit jättää sen huomiotta tai lisätä sen poikkeuksena.
Kun valitset tiedostonimen, HTML 5 -elementin lähde. asetetaan kyseiseen tiedostoon. Kun olet valmis, musiikki alkaa soida. Kun kappale on valmis, musiikki lakkaa.
Jos valitset Ei mitään, musiikin toisto lakkaa.
Musiikkitiedostoa toistettaessa verkkosivu käyttää AudioContext -käyttöliittymää musiikin analysointiin, joka lähetetään sitten palvelimelle suojatun websocket -yhteyden kautta.
Viesti on tyyppi, jonka palvelimen socket.io on määritetty kuuntelemaan "ws2811". Se sisältää 50 elementtiä, jotka ovat välillä 0 ja 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}
Palvelin käyttää Node RPI WS281x -kirjastoa (käärii Jeremy Garffin WS281X -kirjaston) muuttaakseen WS2811 -LED -nauhan LED -valojen värejä verkkopistokkeen kautta lähetettyjen tietojen perusteella.
Vaihe 8: Lopuksi
Sinun pitäisi nähdä, että nauhan LED -valot vaihtavat väriä musiikin mukana verkkosivulla tehdyn Fast Fourier -muunnoksen analyysin perusteella.
Toivottavasti pidät tästä. Kerro minulle, mitä teet sen kanssa!
HUOMAUTUS: Jos sinulla on ongelmia
Koska tämä kirjasto ja sisäinen Raspberry Pi -ääni käyttävät PWM: ää, niitä ei voi käyttää yhdessä.
Saatat joutua lisäämään mustalle listalle Broadcom-ääniydinmoduulin luomalla tiedoston /etc/modprobe.d/snd-blacklist.conf
musta lista snd_bcm2835
Jos äänilaite latautuu edelleen mustan listan jälkeen, sinun on ehkä myös kommentoitava se tiedostoon /etc /modules. Päättömissä järjestelmissä saatat joutua pakottamaan äänen myös hdmi -liitännän kautta
Muokkaa config.txt ja lisää:
hdmi_force_hotplug = 1
hdmi_force_edid_audio = 1
Tämän muutoksen voimaantulo edellyttää uudelleenkäynnistystä
Suositeltava:
Kannettava Disco V2 -ääniohjatut LEDit: 11 vaihetta (kuvilla)
Kannettava Disco V2 -Ääniohjatut LEDit: Olen saavuttanut pitkän matkan elektroniikkamatkalla siitä lähtien, kun tein ensimmäisen kannettavan diskoni. Alkuperäisessä kokoonpanossa hakkeroin piirin prototyyppikortille ja onnistuin rakentamaan siistin pienen taskudiskon. Tällä kertaa suunnittelin oman piirilevyn ja
Led Disco Box: 7 vaihetta (kuvilla)
Led Disco Box: Kuinka tehdä oma Led Disco Box
Light-Up Disco Table: 27 vaihetta (kuvilla)
Light-Up Disco Table: Jokainen huoneisto tarvitsee upeita huonekaluja, joten miksi et tee itse? Tämä sohvapöytä sisältää LED -nauhoja, jotka valaisevat erilaisia muokattavia kuvioita ja värejä. Valoja ohjaavat Arduino ja piilotettu painike, ja koko asia
Disco Desktop Organizer: 8 vaihetta (kuvilla)
Disco Desktop Organizer: Materiaalit: tripleksi, paksuus: 3 mm Kuinka monta puulevyä riippuu siitä, kuinka suuri laserleikkurisi on … säädä viilaa enimmäiskokoiselle puulevyllesi … ehkä tarvitset enemmän kuin yhden levyn (pidä tämä mielessä). 6 x salamalaitteet (käytin 7 värillistä salamalaitteita)
Infinite Disco: 6 vaihetta (kuvilla)
Infinite Disco: Tässä projektissa tein äärettömän peilin dodekaedrin perusteella, joka reagoi ääneen