Obsah:

Diskotéka: 8 krokov (s obrázkami)
Diskotéka: 8 krokov (s obrázkami)

Video: Diskotéka: 8 krokov (s obrázkami)

Video: Diskotéka: 8 krokov (s obrázkami)
Video: 10 pravidel jak sbalit holku | celý film | HD 2024, Júl
Anonim
Disco-pi
Disco-pi

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

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

Pripojenie hardvéru
Pripojenie hardvéru
Pripojenie hardvéru
Pripojenie hardvéru
Pripojenie hardvéru
Pripojenie hardvéru
Pripojenie hardvéru
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

Kód webovej stránky
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

Image
Image

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: