Tartalomjegyzék:

Disco-pi: 8 lépés (képekkel)
Disco-pi: 8 lépés (képekkel)

Videó: Disco-pi: 8 lépés (képekkel)

Videó: Disco-pi: 8 lépés (képekkel)
Videó: PIKOTARO - PPAP (Pen Pineapple Apple Pen) (Long Version) (Official Video) [Ultra Records] 2024, Július
Anonim
Disco-pi
Disco-pi

Ez az oktatóanyag bemutatja, hogyan kell Raspberry Pi -t használni egy színes LED -szalag vezérléséhez a webböngészőből lejátszott zene alapján.

Bemutatja, hogyan hozhat létre alapszintű webhelyet a Node.js használatával HTTPS protokollon keresztül, és hogyan használhatja a socket.io protokollt WSS (Secure Websocket) használatával.

A weboldal egyetlen oldallal rendelkezik, amely nagyon egyszerű elrendezésű. A weboldal egy legördülő listát tölt be a zenefájlokkal, amelyek a szerver nyilvános/audio mappájában találhatók. Ha kiválaszt egy opciót a listában, a zenei fájl lejátszása a weboldalon a HTML 5 audioelem használatával történik. A zenei fájl lejátszása közben a weboldal az AudioContext felületet használja a zene elemzéséhez, amelyet ezután biztonságos szerverkapcsolaton keresztül elküld a szervernek.

A Raspberry Pi rendszeren futó szerver a Node RPI WS281x natív könyvtárat használja (Jeremy Garff WS281X könyvtárát csomagolja) a WS2811 LED szalagon lévő LED -ek színének megváltoztatásához a websocketen keresztül küldött adatok alapján.

A példakód itt található: disco-pi

1. lépés: Felszerelés

  1. Raspberry Pi - Egy Raspberry Pi 2B -t használtam, amit lefektettem, de Raspberry Pi 3 kezdő készletet kaphat 100 CAD körül
  2. WS2811 LED szalag - ALITOVE 16,4ft 150 Pixel WS2811 -el játszottam. Ehhez jár egy vezérlő és egy tápegység körülbelül 45-50 CAD értékben
  3. Barrel Jack Connector - Vettem egyet a helyi elektronikai üzletemből, valami ilyesmit. Csak ellenőrizze, hogy megfelel -e a tápegységnek
  4. Jumper csatlakozók / huzal - Volt néhány női -férfi csatlakozó kábelem és néhány 22 -es nyomtávú tömör huzal

2. lépés: A Raspberry Pi beállítása

Operációs rendszer

Általában a legújabb Raspbian buildet használom. Töltse le a képet, és írja be az SD kártyára. Ha Windows számítógépet használ, akkor a Win32 Disk Imager segítségével írhatja be a képet az SD -kártyára.

Node.js

Telepítse a Node.js legújabb verzióját. Íráskor a 8.9.1 -et használom

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

sudo apt-get install nodejs

Telepítse a git programot

sudo apt-get install git

3. lépés: A példakód beállítása

Klónozza a példakódot

1. Állítson be egy alapmappát a telepítéshez

cd /opt

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

2. Klónozza a példa git adattárat

git klón https://github.com/haydockjp/disco-pi.git"

vagy

git klón [email protected]: haydockjp/disco-pi.git

3. Telepítse a függőségeket

cd disco-pi

npm telepítés

Ez 2-3 percet vehet igénybe

4. lépés: Hozzon létre saját aláírású SSL -tanúsítványt

1. Hozzon létre privát kulcsfájlt

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

2048-ban

2. Hozzon létre CSR -t (tanúsítvány -aláírási kérelem)

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

Ezen a ponton a tanúsítványkéréshez szükséges információkat kell megadnia. Mivel ez egy önaláírt tanúsítvány, rajtad múlik, hogy milyen pontosan tölti ki az adatokat. Íme egy példa

Ország neve (2 betűből álló kód) [AU]: CA

Állam vagy tartomány neve (teljes név) [Néhány állam]: Brit Columbia Helységnév (pl. Város) : Vancouveri szervezet neve (pl. Cég) [Internet Widgits Pty Ltd]: Disco Pi szervezeti egység neve (pl. Szakasz) : Általános név (pl. Szerver FQDN vagy ÖN neve) : disco-pi E-mail cím : [email protected] Kihívási jelszó : Választható cégnév :

Ebben a példában csak nyomja meg a visszatér gombot, hogy üresen hagyja a kihívási jelszót

3. Generálja a tanúsítványt

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

4. A nagyobb biztonság érdekében létrehozunk egy Diffie Hellman Parameters fájlt is

openssl dhparam -out dh_2048.pem 2048

Ez 15-20 percet vehet igénybe

5. lépés: A hardver csatlakoztatása

A hardver csatlakoztatása
A hardver csatlakoztatása
A hardver csatlakoztatása
A hardver csatlakoztatása
A hardver csatlakoztatása
A hardver csatlakoztatása
A hardver csatlakoztatása
A hardver csatlakoztatása

A LED szalag táplálása

A LED szalag 12 volt feszültségű. A Raspberry Pi csak 3,3 vagy 5 voltos kimenetre képes, és nem képes a sok LED meghajtásához szükséges erősítők közelében sem.

Fontos, hogy ne csatlakoztassa a 12 voltos tápegységet a Raspberry Pi -hez.

A szalagom mindkét végén további tápkábeleket is csatlakoztatott a szalaghoz. Javaslom, hogy ragassza fel ezeket, hogy ne érintkezzenek más berendezéseivel.

A következő lépéseket saját felelősségére hajtsa végre. Nem vállalok felelősséget semmiért, ami elromolhat.

LED-csík

A LED szalagom három vezetékkel rendelkezik:

PIROS - +12 volt

FEKETE - Föld

ZÖLD - Adatok

MEGJEGYZÉS: van Din és Dout - Data In és Data Out. Győződjön meg arról, hogy a LED szalag Din feliratú végével dolgozik.

Győződjön meg arról, hogy a hordócsatlakozó nincs csatlakoztatva az áramforráshoz

1. Csatlakoztassa a piros vezetéket a LED szalagból a hordócsatlakozó + oldalához.

Fehér, 22 -es méretű bekötőhuzalt használtam.

Helyezze a vezetéket a hordócsatlakozó + nyílásába, és csavarja be a helyére.

Nyomja be a vezeték másik végét a LED aljzatába. Győződjön meg arról, hogy a piros vezetékkel csatlakozik.

2. Csatlakoztassa a fekete vezetéket a LED szalagból a hordócsatlakozó oldalához.

Fekete, 22 méteres bekötőhuzalt használtam.

Helyezze a vezetéket a hordócsatlakozó - nyílásába. Ezen a ponton szintén helyezze az egyik csatlakozó kábel dugaszoló végét (a képen barna vezeték) ugyanabba a lyukba, és csavarja be mindkettőt.

Nyomja a fekete vezeték másik végét a LED aljzatába.

Győződjön meg arról, hogy a fekete vezetékkel csatlakozik.

3. Csatlakoztassa a zöld vezetéket a LED szalagból

Vegye ki a femal -male csatlakozókábelek egyikét. A fotóimon ez a zöld vezeték.

Helyezze a dugót a LED -aljzatba a zöld vezetékkel.

Ez az adatkábel.

Raspberry Pi

1. Fogja meg a zöld csatlakozókábelt, és csatlakoztassa a Raspberry Pi GPIO -hoz.

Csatlakoztatnia kell a PCM_CLK -hoz (12. tű / GPIO 18)

2. Fogja meg a fekete csatlakozókábelt, és csatlakoztassa a Raspberry Pi GPIO -hoz.

Csatlakoztatnia kell az egyik aljzathoz. Javaslom, hogy használja a 14 -es tűt, de használhat 6 -os, 9 -es, 20 -as, 25 -ös, 30 -as, 34 -es vagy 39 -es tűt is.

MEGJEGYZÉS: ennek működéséhez a LED -es áramforrásnak és a Raspberry Pi -nek közös alapokkal kell rendelkeznie. Ne feledje, hogy a 12 Volt + (piros vezetéket) nem szabad a Raspberry Pi -hez csatlakoztatni.

LED teljesítmény

Nem szabad csatlakoztatnia a 12 voltos tápegységet a csőcsatlakozóhoz

A LED szalag összes LED -jének fehéren kell világítania

6. lépés: Kiszolgáló oldali kód

A szerver oldali kód futtatása

cd /opt/com.jonhaydock/disco-pi

sudo npm start

Ezzel elindítja a webszervert, és elkezdi figyelni a HTTPS és WSS kéréseket.

Az alapértelmezett port a 443, de ezt felülbírálhatja, ha beállít egy környezeti változót a kód elindítása előtt. Például

export DISCO_PI_PORT = 1443

A LED szalagom 150 LED -et tartalmaz. Ezeket hármas csoportokban ellenőrzik. Ez azt jelenti, hogy nem tudok minden LED -et külön -külön vezérelni, és elegendő információt kell küldenem az 50 vezérléséhez.

Ha a LED -ben több vagy kevesebb van, akkor felülbírálhatja a vezérelt LED -ek számát úgy, hogy megad egy paramétert az indításhoz. Például, ha csak 10 LED -et tud vezérelni

sudo npm start 10

A fő szerverkód az app.js fájlban található. Ez a fájl elindítja a HTTPS webszervert, és hozzáadja a socket.io fájlt is, hogy meghallgassa a websocket kéréseket ugyanazon a porton.

A webhely eléréséhez nyisson meg egy böngészőt a fő számítógépén (ezt csak a Chrome -ban teszteltem), és használja a Raspberry Pi IP -címét, pl.

10.0.1.2/

A Raspberry Pi parancssorból megtudhatja az IP -címét.

ifconfig

A webszerver bármilyen tartalmat kiszolgál a nyilvános mappa alatt. Alapértelmezés szerint az index.html oldal jelenik meg.

Egy API végpontja van - /api /audio. Ez a végpont megkeresi a nyilvános/audio mappa alatt található fájlokat, és visszaadja a listát. Például

["GYAKO.mp3", "Havanna (feat. Young Thug).mp3", "Queen_Bohemian_Rhapsody.mp3", "Set It All Free.mp3", "Ez az, amiért jöttél (feat. Rihanna).mp3"]

Zene opcióként való hozzáadásához másolja a fájlokat ebbe a mappába. Én személy szerint a Filezillát használom az ssh felett. A mappa, amelyhez fájlokat kíván hozzáadni, az /opt/com.jonhaydock/disco-pi/public/audio

7. lépés: Webhely kódja

Weboldal kódja
Weboldal kódja

Amikor meglátogatja a webhelyet, valami ilyesmit kell látnia.

Ha biztonsági figyelmeztetést lát, ez azért van, mert saját aláírású SSL-tanúsítványt használunk. Figyelmen kívül hagyhatja, vagy kivételként hozzáadhatja.

A fájlnév kiválasztásakor a HTML 5 audioelem forrása. fájlra lesz állítva. Ha kész, a zene elkezd játszani. A dal befejezése után a zene leáll.

Ha a Nincs lehetőséget választja, a zene leáll.

A zenei fájl lejátszása közben a weboldal az AudioContext felületet használja a zene elemzéséhez, amelyet ezután biztonságos szerverkapcsolaton keresztül elküld a szervernek.

Az üzenet az a típus, amelyet a kiszolgálón található socket.io beállított a "ws2811" figyelésére. 50 elemből álló tömböt tartalmaz, amelyek 0 és 255 között vannak.

"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}

A szerver a Node RPI WS281x natív könyvtárat használja (Jeremy Garff WS281X könyvtárát csomagolja) a WS2811 LED szalagon lévő LED -ek színének megváltoztatásához, a websocketen keresztül küldött adatok alapján.

8. lépés: Végül

Image
Image

Látnia kell, hogy a szalagon lévő LED -ek a zenével együtt színt váltanak, a weboldalon elvégzett gyors Fourier -transzformáció elemzés alapján.

Remélem, élvezni fogja ezt. Tudassa velem, mit csinál vele!

MEGJEGYZÉS: Ha bármilyen problémája van

Mivel ez a könyvtár és a beépített Raspberry Pi audioegység egyaránt használja a PWM -et, nem használhatók együtt.

Lehet, hogy feketelistára kell tennie a Broadcom audio kernel modult, ha létrehoz egy /etc/modprobe.d/snd-blacklist.conf fájlt

feketelista snd_bcm2835

Ha a hangeszköz továbbra is betöltődik a feketelista után, akkor az /etc /modules fájlban is megjegyzést kell tennie. Fej nélküli rendszerek esetén előfordulhat, hogy a hangot kényszeríteni kell a hdmi -n keresztül

Szerkessze a config.txt fájlt, és adja hozzá:

hdmi_force_hotplug = 1

hdmi_force_edid_audio = 1

A módosítás életbe léptetéséhez újra kell indítani

Ajánlott: