Obsah:
- Krok 1: Zařízení
- Krok 2: Nastavení Raspberry Pi
- Krok 3: Nastavení ukázkového kódu
- Krok 4: Vytvořte certifikát SSL podepsaný svým držitelem
- Krok 5: Připojení hardwaru
- Krok 6: Kód na straně serveru
- Krok 7: Kód webových stránek
- Krok 8: Konečně
Video: Disco-pi: 8 kroků (s obrázky)
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:24
Tento návod ukazuje, jak pomocí Raspberry Pi ovládat barevný LED pás na základě hudby přehrávané z webového prohlížeče.
Ukazuje, jak vytvořit základní web pomocí Node.js přes HTTPS a použít socket.io přes WSS (Secure Websocket).
Web má jedinou stránku, která má velmi základní rozložení. Webová stránka naplní rozevírací seznam hudebními soubory, které jsou umístěny ve veřejné/zvukové složce na serveru. Výběrem možnosti v seznamu se přehraje hudební soubor na webové stránce pomocí zvukového prvku HTML 5. Při přehrávání hudebního souboru používá webová stránka k analýze hudby rozhraní AudioContext, které je poté odesláno na server přes zabezpečené připojení websocket.
Server běžící na Raspberry Pi používá nativní knihovnu Node RPI WS281x Native (obalující knihovnu WS281X Jeremyho Garffa) ke změně barev LED na LED pásku WS2811 na základě dat odeslaných přes websocket.
Ukázkový kód najdete zde: disco-pi
Krok 1: Zařízení
- Raspberry Pi - Použil jsem Raspberry Pi 2B, který jsem měl kolem, ale můžete získat Raspberry Pi 3 Starter Kit za zhruba 100 CAD
- WS2811 LED Strip - hrál jsem s ALITOVE 16,4 stop 150 pixelů WS2811. Dodává se s ovladačem a napájecím zdrojem pro přibližně 45-50 CAD
- Barrel Jack Connector - Koupil jsem jeden z místního obchodu s elektronikou, něco takového. Jen se ujistěte, že odpovídá vašemu napájecímu zdroji
- Propojovací konektory / vodiče - měl jsem položený pár propojovacích kabelů typu Žena - Muž a asi 22 měrných pevných propojovacích vodičů
Krok 2: Nastavení Raspberry Pi
Operační systém
Obvykle používám nejnovější verzi Raspbian. Stáhněte si obrázek a zapište jej na kartu SD. Pokud používáte počítač se systémem Windows, můžete k zápisu obrázku na kartu SD použít Win32 Disk Imager.
Node.js
Nainstalujte si nejnovější verzi Node.js. V době psaní článku používám 8.9.1
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install nodejs
Nainstalujte git
sudo apt-get install git
Krok 3: Nastavení ukázkového kódu
Klonujte ukázkový kód
1. Nastavte základní složku pro instalaci
cd /opt
sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock
2. Naklonujte ukázkové úložiště git
klon git https://github.com/haydockjp/disco-pi.git"
nebo
git clone [email protected]: haydockjp/disco-pi.git
3. Nainstalujte závislosti
cd disco-pi
npm instalace
Může to trvat 2–3 minuty
Krok 4: Vytvořte certifikát SSL podepsaný svým držitelem
1. Vytvořte soubor soukromého klíče
cd /opt/com.jonhaydock/disco-pi/certs
openssl genrsa -out disco-pi-key.pem 2048
2. Vytvořte CSR (žádost o podpis certifikátu)
openssl req -new -key disco-pi-key.pem -out disco-pi-csr.pem
V tomto okamžiku budete vyzváni k zadání některých informací k žádosti o certifikát. Jelikož se jedná o certifikát podepsaný svým držitelem, záleží jen na vás, jak přesně údaje vyplníte. Zde je příklad
Název země (dvoumístný kód) [AU]: CA
Název státu nebo provincie (úplný název) [Některý stát]: Název lokality Britské Kolumbie (např. Město) : Název organizace ve Vancouveru (např. Společnost) [Internet Widgits Pty Ltd]: Název organizační jednotky Disco Pi (např.) : Běžný název (např. FQDN serveru nebo VÁŠ název) : disco-pi E-mailová adresa : [email protected] Heslo výzvy : Volitelný název společnosti :
V tomto případě stačí stisknout klávesu Enter a nechat heslo výzvy prázdné
3. Vygenerujte certifikát
openssl x509 -req -dny 1095 -in disco-pi-csr.pem -signkey disco-pi-key.pem -out disco-pi-cert.pem
4. Pro větší bezpečnost také vytvoříme soubor Diffie Hellman Parameters
openssl dhparam -out dh_2048.pem 2048
To může trvat 15–20 minut
Krok 5: Připojení hardwaru
Napájení LED pásku
LED pásek je napájen 12 volty. Raspberry Pi má pouze výstup 3,3 V nebo 5 V a není schopen výstupu nikde poblíž zesilovačů potřebných k pohonu tolika LED diod.
Je důležité nepřipojovat 12 V napájecí zdroj k Raspberry Pi.
Můj proužek měl také na obou koncích připojené další napájecí vodiče. Navrhuji, abyste je přelepili páskou, aby se nedostali do kontaktu s žádným dalším zařízením.
Další kroky provádějte na vlastní nebezpečí. Nepřijímám žádnou odpovědnost za cokoli, co se může pokazit.
LED pásek
Můj LED pás má tři vodiče:
ČERVENÁ - +12 voltů
ČERNÁ - Ground
ZELENÁ - Data
POZNÁMKA: existuje Din a Dout - Data In a Data Out. Ujistěte se, že pracujete s koncem LED pásu, který říká Din.
Zajistěte, aby barel Jack nebyl připojen k napájení
1. Připojte červený vodič z LED pásky k + straně sudového konektoru.
Použil jsem bílý drát o průměru 22 mm.
Umístěte drát do + štěrbiny ve válcovém zvedáku a zašroubujte jej na místo.
Zatlačte druhý konec drátu do zásuvky na LED. Ujistěte se, že se připojujete červeným vodičem.
2. Připojte černý vodič z LED pásky k - straně barel jacku.
Použil jsem černý drát o průměru 22 mm.
Umístěte drát do - slotu v konektoru hlavně. V tomto místě také vložte samčí konec jednoho z kabelů konektoru (hnědý vodič na fotografii) do stejného otvoru a oba je zašroubujte na místo.
Zatlačte druhý konec černého vodiče do zásuvky na LED.
Ujistěte se, že se připojujete pomocí černého vodiče.
3. Připojte zelený vodič z LED pásky
Vezměte jeden z kabelů konektoru femal to male. Na mých fotografiích je to zelený drát.
Umístěte zástrčkový konec do zásuvky LED zeleným vodičem.
Toto je datový kabel.
Raspberry Pi
1. Vezměte zelený konektorový kabel a připojte jej k Raspberry Pi GPIO.
Musíte jej připojit k PCM_CLK (Pin 12 / GPIO 18)
2. Vezměte černý konektorový kabel a připojte jej k Raspberry Pi GPIO.
Musíte jej připojit k jednomu z důvodů. Doporučuji použít pin 14, ale můžete také použít pin 6, 9, 20, 25, 30, 34 nebo 39.
POZNÁMKA: Aby to fungovalo, musí mít napájecí zdroj LED a Raspberry Pi společnou zem. Pamatujte také, že k Raspberry Pi nesmíte připojit 12 Volt + (červený vodič).
LED napájení
Nemělo by být možné připojit váš 12voltový napájecí zdroj k hlavni
Všechny LED diody na vašem LED pásku by se nyní měly rozsvítit BÍLÉ
Krok 6: Kód na straně serveru
Spuštění kódu na straně serveru
cd /opt/com.jonhaydock/disco-pi
sudo npm start
Tím se spustí webový server a začne naslouchat požadavkům HTTPS a WSS.
Výchozí port je 443, ale můžete to přepsat nastavením proměnné prostředí před spuštěním kódu. Například
export DISCO_PI_PORT = 1443
Můj LED pásek má 150 LED. Ty jsou ovládány ve skupinách po třech. To znamená, že nemohu ovládat každou LED jednotlivě a potřebuji poslat dostatek informací k ovládání 50.
Pokud má vaše LED více nebo méně, můžete přepsat počet LED, které ovládáte, předáním parametru do spuštění. Pokud například můžete ovládat pouze 10 LED diod
sudo npm start 10
Hlavní kód serveru najdete v souboru app.js. Tento soubor spouští webový server HTTPS a také přidává na socket.io, aby naslouchal požadavkům websocket na stejném portu.
Pro přístup na webovou stránku byste měli otevřít webový prohlížeč na hlavním počítači (testoval jsem to pouze v Chromu) a použít IP adresu Raspberry Pi, např.
10.0.1.2/
Svou IP adresu zjistíte z příkazového řádku Raspberry Pi.
ifconfig
Webový server bude poskytovat veškerý obsah ve veřejné složce. Ve výchozím nastavení se zobrazí stránka index.html.
Má jeden koncový bod API - /api /audio. Tento koncový bod vyhledá všechny soubory ve veřejné/zvukové složce a vrátí seznam. Například
["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"]
Chcete -li přidat hudbu jako volitelnou možnost, zkopírujte soubory do této složky. Osobně používám Filezilla přes ssh. Složka, do které chcete přidat soubory, je /opt/com.jonhaydock/disco-pi/public/audio
Krok 7: Kód webových stránek
Když narazíte na web, měli byste vidět něco takového.
Pokud vidíte varování zabezpečení, je to proto, že používáme certifikát SSL podepsaný svým držitelem. Můžete jej ignorovat nebo přidat jako výjimku.
Při výběru názvu souboru zdroj zvukového prvku HTML 5. bude nastaven na tento soubor. Jakmile budete připraveni, začne hrát hudba. Jakmile píseň skončí, hudba se zastaví.
Pokud vyberete možnost Žádná, hudba se přestane přehrávat.
Při přehrávání hudebního souboru používá webová stránka k analýze hudby rozhraní AudioContext, které je poté odesláno na server přes zabezpečené připojení websocket.
Zpráva je typem, který byl nastaven tak, aby socket.io na serveru naslouchal „ws2811“. Obsahuje pole 50 prvků, které jsou mezi 0 a 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}
Server používá nativní knihovnu Node RPI WS281x Native (obalující knihovnu WS281X Jeremyho Garffa) ke změně barev LED na pásku LED WS2811 na základě dat odeslaných přes websocket.
Krok 8: Konečně
Měli byste vidět, jak diody LED na pásu mění barvu s hudbou na základě analýzy rychlé Fourierovy transformace provedené na webové stránce.
Doufám, že si to užijete. Dejte mi vědět, co s tím děláte!
POZNÁMKA: Pokud máte nějaké problémy
Protože tato knihovna a integrovaný audio Raspberry Pi používají PWM, nemohou být použity společně.
Možná budete muset zakázat modul zvukového jádra Broadcom vytvořením souboru /etc/modprobe.d/snd-blacklist.conf pomocí
černá listina snd_bcm2835
Pokud se zvukové zařízení stále načítá i na černé listině, možná ho budete muset také okomentovat v souboru /etc /modules. Na bezhlavých systémech budete možná také muset vynutit zvuk přes HDMI
Upravte soubor config.txt a přidejte:
hdmi_force_hotplug = 1
hdmi_force_edid_audio = 1
Aby se tato změna projevila, je nutné restartovat počítač
Doporučuje:
Disco helma pro 3D tisk !: 11 kroků (s obrázky)
Disco helma pro 3D tisk!: Inspirována klasickou helmou Daft Punk 'Thomas'. Rozsviťte místnost a záviděte všem svým přátelům s touto úžasnou disco helmou napájenou Arduino! K dokončení tohoto projektu budete potřebovat přístup k 3D tiskárně a páječce. Chcete -li
Přenosné LED s ovládáním zvuku Disco V2: 11 kroků (s obrázky)
Přenosné Disco V2 -LED ovládané zvukem: Od té doby, co jsem vytvořil svoji první přenosnou diskotéku, jsem urazil dlouhou cestu. V původní verzi jsem naboural obvod na prototypové desce a podařilo se mi postavit úhlednou malou kapesní diskotéku. Tentokrát jsem navrhl vlastní desku plošných spojů
Led Disco Box: 7 kroků (s obrázky)
Led Disco Box: Jak si vyrobit vlastní Led Disco Box
Disco Desktop Organizer: 8 kroků (s obrázky)
Disco Desktop Organizer: Materiály: triplex, tloušťka: 3 mm Kolik dřevěných desek závisí na tom, jak velký je váš laserový řezač … upravte soubor na své maximální velikosti dřevěné desky … možná budete potřebovat více než 1 desku (mějte to na paměti). 6 x zábleskové diody (použil jsem 7 barevných LED diod) ava
LED Disco světlo ve sklenici!: 11 kroků (s obrázky)
LED Disco Light in a Jar !: This one of my entries for the Let It Glow! Soutěž. Zde je pěkný, jednoduchý návod pro každého, kdo začíná s LED, pájením a elektronikou. Používá základní části, aniž by se musel zabývat mikrokontroléry nebo časovači (stejně zábavné jako ty