Obsah:

Disco-pi: 8 kroků (s obrázky)
Disco-pi: 8 kroků (s obrázky)

Video: Disco-pi: 8 kroků (s obrázky)

Video: Disco-pi: 8 kroků (s obrázky)
Video: Naše denc můvs🕺💃🤣 #czech #youtubeshorts #dance #dancevideo 2024, Červenec
Anonim
Disco-pi
Disco-pi

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í

  1. 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
  2. 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
  3. 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
  4. 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

Připojení hardwaru
Připojení hardwaru
Připojení hardwaru
Připojení hardwaru
Připojení hardwaru
Připojení hardwaru
Připojení hardwaru
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

Kód webových stránek
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ě

Image
Image

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: