Sisällysluettelo:

Disco-pi: 8 vaihetta (kuvilla)
Disco-pi: 8 vaihetta (kuvilla)

Video: Disco-pi: 8 vaihetta (kuvilla)

Video: Disco-pi: 8 vaihetta (kuvilla)
Video: DIE ANTWOORD - BABY'S ON FIRE (OFFICIAL) 2024, Heinäkuu
Anonim
Disko-pi
Disko-pi

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

  1. Raspberry Pi - Käytin Raspberry Pi 2B: tä, jonka olin asettanut, mutta voit saada Raspberry Pi 3 -aloituspaketin hintaan noin 100 CAD
  2. WS2811 LED -nauha - pelasin ALITOVE 16,4ft 150 pikseliä WS2811. Sen mukana tulee ohjain ja virtalähde noin CAD 45-50
  3. Barrel Jack Connector - Ostin sellaisen paikallisesta elektroniikkakaupastani, jotain tällaista. Varmista vain, että se sopii virtalähteeseesi
  4. 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

Laitteiston liittäminen
Laitteiston liittäminen
Laitteiston liittäminen
Laitteiston liittäminen
Laitteiston liittäminen
Laitteiston liittäminen
Laitteiston liittäminen
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

Verkkosivuston koodi
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

Image
Image

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: