Obsah:
- Krok 1: Zariadenie
- Krok 2: Nastavenie Raspberry Pi
- Krok 3: Nastavenie ukážkového kódu
- Krok 4: Vytvorte si vlastnoručne podpísaný certifikát SSL
- Krok 5: Pripojenie hardvéru
- Krok 6: Kód na strane servera
- Krok 7: Kód webovej stránky
- Krok 8: Nakoniec
Video: Diskotéka: 8 krokov (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:01
Tento návod ukazuje, ako používať Raspberry Pi na ovládanie farebného LED pásu na základe hudby prehrávanej z webového prehliadača.
Ukazuje, ako vytvoriť základnú webovú stránku pomocou Node.js cez HTTPS a použiť socket.io cez WSS (Secure Websocket).
Webová stránka má jednu stránku, ktorá má veľmi základné rozloženie. Webová stránka obsahuje rozbaľovací zoznam s hudobnými súbormi, ktoré sa nachádzajú vo verejnom/zvukovom priečinku na serveri. Výberom možnosti v zozname sa prehrá hudobný súbor na webovej stránke pomocou zvukového prvku HTML 5. Pri prehrávaní hudobného súboru webová stránka používa na analýzu hudby rozhranie AudioContext, ktoré je potom odoslané na server prostredníctvom zabezpečeného websocket pripojenia.
Server spustený na Raspberry Pi používa pôvodnú knižnicu Node RPI WS281x Native (obal knižnice WS281X Jeremyho Garffa) na zmenu farieb diód LED na páse LED WS2811 na základe údajov odoslaných cez webovú zásuvku.
Príklad kódu nájdete tu: disco-pi
Krok 1: Zariadenie
- Raspberry Pi - Použil som Raspberry Pi 2B, ktorý som mal položený okolo, ale môžete získať štartovaciu sadu Raspberry Pi 3 za približne 100 CAD
- WS2811 LED Strip - Hrával som s ALITOVE 16,4 stôp 150 pixelov WS2811. Dodáva sa s ovládačom a napájacím zdrojom pre približne 45-50 CAD
- Konektor Barrel Jack - Kúpil som si ho v miestnom obchode s elektronikou, niečo také. Uistite sa, že vyhovuje vášmu zdroju napájania
- Jumperové konektory / vodiče - Okolo som položil niekoľko konektorových káblov typu Female to Male a asi 22 -metrový pevný prepojovací kábel
Krok 2: Nastavenie Raspberry Pi
Operačný systém
Normálne používam najnovšiu zostavu Raspbian. Stiahnite si obrázok a napíšte ho na kartu SD. Ak používate počítač so systémom Windows, na zapísanie obrázku na kartu SD môžete použiť program Win32 Disk Imager.
Node.js
Nainštalujte najnovšiu verziu Node.js. V čase písania článku používam 8.9.1
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install nodejs
Nainštalovať git
sudo apt-get install git
Krok 3: Nastavenie ukážkového kódu
Klonujte ukážkový kód
1. Nastavte základný priečinok, do ktorého sa má nainštalovať
cd /opt
sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock
2. Klonujte vzorové úložisko git
klon git https://github.com/haydockjp/disco-pi.git"
alebo
git clone [email protected]: haydockjp/disco-pi.git
3. Nainštalujte závislosti
cd disco-pi
npm inštalácia
Môže to trvať 2-3 minúty
Krok 4: Vytvorte si vlastnoručne podpísaný certifikát SSL
1. Vytvorte súbor súkromného kľúča
cd /opt/com.jonhaydock/disco-pi/certs
openssl genrsa -out disco-pi-key.pem 2048
2. Vytvorte CSR (žiadosť o podpis certifikátu)
openssl req -new -key disco-pi-key.pem -out disco-pi-csr.pem
V tomto mieste budete vyzvaní na poskytnutie niektorých informácií k žiadosti o certifikát. Pretože ide o certifikát s vlastným podpisom, je len na vás, ako presne vyplníte údaje. Tu je príklad
Názov krajiny (dvojpísmenový kód) [AU]: CA
Názov štátu alebo provincie (úplný názov) [Niektorý štát]: Názov lokality Britskej Kolumbie (napr. Mesto) : Názov organizácie vo Vancouveri (napr. Spoločnosť) [Internet Widgits Pty Ltd]: Názov organizačnej jednotky Disco Pi (napr.) : Bežný názov (napr. FQDN servera alebo VAŠE meno) : disco-pi E-mailová adresa : [email protected] Heslo výzvy : Voliteľný názov spoločnosti :
V tomto prípade stačí stlačiť kláves Enter a heslo výzvy zostane prázdne
3. Vygenerujte certifikát
openssl x509 -req -dni 1095 -in disco-pi-csr.pem -signkey disco-pi-key.pem -out disco-pi-cert.pem
4. Pre väčšiu bezpečnosť tiež vytvoríme súbor Diffie Hellman Parameters
openssl dhparam -out dh_2048.pem 2048
To môže trvať 15-20 minút
Krok 5: Pripojenie hardvéru
Napájanie LED pásika
LED pás je napájaný 12 voltami. Raspberry Pi má výstup iba 3,3 V alebo 5 V a nie je schopný produkovať kdekoľvek v blízkosti zosilňovačov potrebných na napájanie toľkých LED diód.
Je dôležité, aby ste k Raspberry Pi nepripájali 12 voltový napájací zdroj.
Môj pásik mal tiež na oboch koncoch k pásu pripojené ďalšie napájacie vodiče. Navrhujem, aby ste ich zlepili, aby sa nedostali do kontaktu s iným vašim zariadením.
Ďalšie kroky vykonajte na vlastné riziko. Nezodpovedám za nič, čo sa môže pokaziť.
LED pásik
Môj pás LED má tri vodiče:
ČERVENÁ - +12 voltov
ČIERNA - Zem
ZELENÁ - Údaje
POZNÁMKA: Existuje Din a Dout - vstup a výstup dát. Uistite sa, že pracujete s koncom pásika LED s nápisom Din.
Zaistenie toho, aby barel jack nebol pripojený k zdroju napájania
1. Pripojte červený vodič z LED pásika k + strane sudového konektora.
Použil som biely drôt 22 mm.
Umiestnite drôt do otvoru + v zdvíhači hlavne a zaskrutkujte ho na miesto.
Druhý koniec drôtu zatlačte do zásuvky na dióde LED. Uistite sa, že sa pripájate červeným vodičom.
2. Pripojte čierny vodič z LED pásky k - strane hlavne.
Použil som čierny drôt na pripojenie 22.
Vložte drôt do - otvoru v zdierke hlavne. V tomto mieste tiež vložte vidlicový koniec jedného z káblov konektora (hnedý drôt na fotografii) do rovnakého otvoru a obidva ich zaskrutkujte na miesto.
Zatlačte druhý koniec čierneho vodiča do zásuvky na dióde LED.
Uistite sa, že sa pripájate čiernym vodičom.
3. Pripojte zelený vodič z LED pásika
Vezmite jeden z konektorových káblov zo zásuvky na zásuvku. Na mojich fotografiách je to zelený drôt.
Zástrčkový koniec umiestnite do zásuvky LED zeleným vodičom.
Toto je dátový kábel.
Malinový koláč
1. Vezmite zelený konektorový kábel a pripojte ho k Raspberry Pi GPIO.
Musíte ho pripojiť k PCM_CLK (Pin 12 / GPIO 18)
2. Vezmite čierny konektorový kábel a pripojte ho k Raspberry Pi GPIO.
Musíte ho pripojiť k jednému z pozemkov. Odporúčame vám použiť kolík 14, ale môžete použiť aj kolík 6, 9, 20, 25, 30, 34 alebo 39.
POZNÁMKA: Aby to fungovalo, zdroj energie LED a Raspberry Pi musia mať spoločnú zem. Upozorňujeme, že k Raspberry Pi nesmiete pripojiť 12 Volt + (červený vodič).
LED napájanie
Nemalo by byť možné pripojiť váš 12 voltový napájací zdroj k hlavnému konektoru
Všetky diódy LED na vašom páse LED by sa teraz mali rozsvietiť BIELE
Krok 6: Kód na strane servera
Spustenie kódu na strane servera
cd /opt/com.jonhaydock/disco-pi
sudo npm start
Spustí sa webový server a začnú sa počúvať požiadavky HTTPS a WSS.
Predvolený port je 443, ale môžete to prepísať nastavením premennej prostredia pred spustením kódu. Napríklad
export DISCO_PI_PORT = 1443
Môj LED pás má 150 LED diód. Ovládajú sa v skupinách po troch. To znamená, že nemôžem ovládať každú LED jednotlivo a potrebujem odoslať dostatok informácií na ovládanie 50.
Ak má vaša LED dióda viac alebo menej, môžete prepísať počet LED, ktoré ovládate, zadaním parametra do spustenia. Napríklad, ak môžete ovládať iba 10 LED diód
sudo npm začiatok 10
Hlavný kód servera nájdete v súbore app.js. Tento súbor spustí webový server HTTPS a pridá aj socket.io na počúvanie požiadaviek websocketu na rovnakom porte.
Na prístup na webovú stránku by ste mali otvoriť webový prehliadač na hlavnom počítači (testoval som to iba v Chrome) a použiť IP adresu Raspberry Pi, napr.
10.0.1.2/
Svoju IP adresu môžete zistiť z príkazového riadka Raspberry Pi.
ifconfig
Webový server bude zobrazovať všetok obsah vo verejnom priečinku. Štandardne sa zobrazí stránka index.html.
Má jeden koncový bod API - /api /audio. Tento koncový bod vyhľadá všetky súbory v priečinku public/audio a vráti zoznam. Naprí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"]
Ak chcete ako jednu z možností pridať hudbu, skopírujte súbory do tohto priečinka. Osobne používam Filezilla cez ssh. Priečinok, do ktorého chcete pridať súbory, je /opt/com.jonhaydock/disco-pi/public/audio
Krok 7: Kód webovej stránky
Keď prejdete na webovú stránku, mali by ste vidieť niečo také.
Ak sa vám zobrazuje bezpečnostné upozornenie, je to kvôli tomu, že používame certifikát SSL podpísaný svojím vlastníkom. Môžete ho ignorovať alebo ho pridať ako výnimku.
Po výbere názvu súboru zdroj zvukového prvku HTML 5. bude nastavený na tento súbor. Hneď ako budete pripravení, začne hrať hudba. Hneď ako pieseň skončí, hudba sa zastaví.
Ak vyberiete možnosť Žiadna, prehrávanie hudby sa zastaví.
Pri prehrávaní hudobného súboru webová stránka používa na analýzu hudby rozhranie AudioContext, ktoré je potom odoslané na server prostredníctvom zabezpečeného websocket pripojenia.
Správa je typom, ktorý socket.io na serveri nastavil na počúvanie „ws2811“. Obsahuje pole 50 prvkov, ktoré sú v rozsahu 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žíva natívnu knižnicu Node RPI WS281x Native (obal knižnice WS281X Jeremyho Garffa) na zmenu farieb diód LED na páse LED WS2811 na základe údajov odoslaných prostredníctvom webovej zásuvky.
Krok 8: Nakoniec
Mali by ste vidieť LED diódy na páse, ako menia farbu s hudbou, na základe analýzy Fast Fourierovej transformácie vykonanej na webovej stránke.
Dúfam, že sa vám to bude páčiť. Dajte mi vedieť, čo s tým robíte!
POZNÁMKA: Ak máte nejaké problémy
Pretože táto knižnica a vstavaný audio Raspberry Pi používajú PWM, nemožno ich používať spoločne.
Možno budete musieť zakázať modul zvukového jadra Broadcom vytvorením súboru /etc/modprobe.d/snd-blacklist.conf pomocou
čierna listina snd_bcm2835
Ak sa zvukové zariadenie aj po načítaní čiernej listiny načítava, možno ho budete musieť tiež okomentovať v súbore /etc /modules. Na bezhlavých systémoch môže byť tiež potrebné vynútiť zvuk prostredníctvom HDMI
Upravte súbor config.txt a pridajte:
hdmi_force_hotplug = 1
hdmi_force_edid_audio = 1
Aby sa táto zmena prejavila, je potrebné reštartovať počítač
Odporúča:
Ako: Inštalácia Raspberry PI 4 bezhlavého (VNC) s obrazovým procesorom Rpi a obrázkami: 7 krokov (s obrázkami)
Ako na to: Inštalácia Raspberry PI 4 bez hlavy (VNC) s obrázkom Rpi a obrázkami: Plánujem použiť tento nástroj Rapsberry PI v mnohých zábavných projektoch späť na mojom blogu. Neváhajte sa na to pozrieť. Chcel som sa vrátiť k používaniu svojho Raspberry PI, ale na novom mieste som nemal klávesnicu ani myš. Chvíľu to bolo, odkedy som nastavil Raspberry
Počítadlo krokov - mikro: bit: 12 krokov (s obrázkami)
Počítadlo krokov - mikro: bit: Tento projekt bude počítadlom krokov. Na meranie našich krokov použijeme senzor akcelerometra, ktorý je vstavaný v Micro: Bit. Zakaždým, keď sa Micro: Bit zatrasie, pridáme k počtu 2 a zobrazíme ho na obrazovke
Bolt - Nočné hodiny pre bezdrôtové nabíjanie DIY (6 krokov): 6 krokov (s obrázkami)
Bolt - Nočné hodiny bezdrôtového nabíjania DIY (6 krokov): Indukčné nabíjanie (tiež známe ako bezdrôtové nabíjanie alebo bezdrôtové nabíjanie) je typ bezdrôtového prenosu energie. Na prenos elektriny do prenosných zariadení používa elektromagnetickú indukciu. Najbežnejšou aplikáciou je bezdrôtové nabíjanie Qi
Ako rozobrať počítač pomocou jednoduchých krokov a fotografií: 13 krokov (s obrázkami)
Ako rozobrať počítač jednoduchými krokmi a obrázkami: Toto je návod, ako rozobrať počítač. Väčšina základných komponentov je modulárna a dá sa ľahko odstrániť. Je však dôležité, aby ste o tom boli organizovaní. Pomôže to zabrániť strate súčiastok a tiež pri opätovnej montáži
Nekonečná diskotéka: 6 krokov (s obrázkami)
Infinite Disco: V tomto projekte som vyrobil nekonečné zrkadlo na základe dodekahedronu, ktorý reaguje na zvuk