Sadržaj:

Disco-pi: 8 koraka (sa slikama)
Disco-pi: 8 koraka (sa slikama)

Video: Disco-pi: 8 koraka (sa slikama)

Video: Disco-pi: 8 koraka (sa slikama)
Video: ЮЛЯ ФИНЕСС: Как я вышла с 8 этажа! Групповое изнасилование под мефедроном, психиатрическая больница 2024, Novembar
Anonim
Disco-pi
Disco-pi

Ovo uputstvo pokazuje kako se koristi Raspberry Pi za kontrolu LED trake u boji, na osnovu muzike koja se reprodukuje iz veb pregledača.

Pokazuje kako stvoriti osnovnu web stranicu koristeći Node.js preko HTTPS -a i koristiti socket.io preko WSS -a (Secure Websocket).

Web stranica ima jednu stranicu koja ima vrlo jednostavan izgled. Web stranica popunjava padajuću listu sa muzičkim datotekama koje se nalaze u javnoj/audio fascikli na serveru. Odabirom opcije na popisu reproducira se muzička datoteka na web stranici pomoću audio elementa HTML 5. Tokom reprodukcije muzičke datoteke, web stranica koristi AudioContext sučelje za analizu muzike, koja se zatim šalje na server putem sigurne websocket veze.

Poslužitelj koji radi na Raspberry Pi -u koristi Node RPI WS281x Native biblioteku (koja omotava Jeremy Garff -ovu biblioteku WS281X) za promjenu boja LED dioda na WS2811 LED traci, na osnovu podataka poslanih putem web utičnice.

Primjer koda možete pronaći ovdje: disco-pi

Korak 1: Oprema

  1. Raspberry Pi - Koristio sam Raspberry Pi 2B koji sam ležao okolo, ali možete nabaviti Raspberry Pi 3 Starter Kit za oko 100 CAD
  2. WS2811 LED traka - Igrao sam se sa ALITOVE 16.4ft 150 piksela WS2811. Dolazi sa kontrolerom i napajanjem za CAD 45-50
  3. Barrel Jack Connector - Kupio sam jedan u lokalnoj trgovini elektronike, otprilike ovako. Samo provjerite odgovara li vašem napajanju
  4. Konektori / žice za kratkospojnike - imao sam nekoliko ženskih na muških konektorskih kablova i oko 22 pune žice za spajanje

Korak 2: Postavljanje Raspberry Pi

Operativni sistem

Obično koristim najnoviju Raspbian verziju. Preuzmite sliku i zapišite je na SD karticu. Ako koristite Windows računar, možete koristiti Win32 Disk Imager za upisivanje slike na SD karticu.

Node.js

Instalirajte najnoviju verziju Node.js. U vrijeme pisanja ovog teksta koristim 8.9.1

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

sudo apt-get install nodejs

Instalirajte git

sudo apt-get install git

Korak 3: Postavljanje primjera koda

Klonirajte primjer koda

1. Postavite osnovnu fasciklu za instaliranje

cd /opt

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

2. Klonirajte primjer git spremišta

git clone https://github.com/haydockjp/disco-pi.git"

ili

git klon [email protected]: haydockjp/disco-pi.git

3. Instalirajte ovisnosti

cd disco-pi

npm install

To može potrajati 2-3 minute

Korak 4: Kreirajte samopotpisani SSL certifikat

1. Kreirajte datoteku privatnog ključa

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

openssl genrsa -out disco-pi-key.pem 2048

2. Kreirajte CSR (zahtjev za potpisivanje certifikata)

openssl req -nov -ključ disco-pi-key.pem -out disko-pi-csr.pem

U ovom trenutku od vas će se tražiti neke informacije o zahtjevu za certifikat. Budući da se radi o samopotpisanom certifikatu, na vama je koliko ćete točno ispuniti detalje. Evo primjera

Naziv zemlje (kôd od 2 slova) [AU]: CA

Naziv države ili pokrajine (potpuni naziv) [Some-State]: Naziv lokaliteta Britanska Kolumbija (npr. Grad) : Vancouver Naziv organizacije (npr. Kompanija) [Internet Widgits Pty Ltd]: Naziv organizacione jedinice Disco Pi (npr. Odjeljak) : Uobičajeno ime (npr. FQDN servera ili VAŠE ime) : disco-pi Adresa e-pošte : [email protected] Lozinka za izazov : Opcionalni naziv kompanije :

U ovom primjeru samo pritisnite Return da ostavite izazovnu lozinku praznom

3. Generirajte certifikat

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

4. Za dodatnu sigurnost, kreirat ćemo i datoteku Diffie Hellman Parameters

openssl dhparam -out dh_2048.pem 2048

Ovo bi moglo potrajati 15-20 minuta

Korak 5: Povezivanje hardvera

Povezivanje hardvera
Povezivanje hardvera
Povezivanje hardvera
Povezivanje hardvera
Povezivanje hardvera
Povezivanje hardvera
Povezivanje hardvera
Povezivanje hardvera

Napajanje LED trake

LED traka se napaja sa 12 volti. Raspberry Pi može emitirati samo 3.3v ili 5v i nije sposoban izlaz bilo gdje u blizini pojačala potrebnih za pokretanje toliko LED dioda.

Važno je ne priključivati 12 -voltno napajanje na Raspberry Pi.

Moja traka je također imala dodatne žice za napajanje spojene na traku na oba kraja. Predlažem da ovo zalijepite tako da ne dolaze u kontakt s bilo kojom drugom vašom opremom.

Naredite sljedeće korake na vlastitu odgovornost. Ne preuzimam odgovornost za sve što bi moglo poći po zlu.

LED traka

Moja LED traka ima tri žice:

CRVENA - +12 volti

CRNO - Uzemljenje

ZELENO - Podaci

NAPOMENA: postoje Din i Dout - unos podataka i izlaz podataka. Uvjerite se da radite s krajem LED trake na kojoj piše Din.

Uvjerite se da priključak cijevi nije priključen na izvor napajanja

1. Priključite crvenu žicu sa LED trake na + stranu cijevnog priključka.

Koristio sam bijelu žicu za spajanje od 22 metra.

Stavite žicu u + otvor na utičnici cijevi i pričvrstite je.

Drugi kraj žice gurnite u utičnicu LED diode. Provjerite povezujete li se crvenom žicom.

2. Spojite crnu žicu s LED trake na - bočnu stranu utičnice.

Koristio sam crnu žicu za kačenje od 22 metra.

Stavite žicu u - utor u utičnici cijevi. U ovom trenutku također postavite muški kraj jednog od konektorskih kabela (smeđa žica na fotografiji) u istu rupu i pričvrstite ih oba na mjesto.

Gurnite drugi kraj crne žice u utičnicu na LED diodi.

Provjerite povezujete li se crnom žicom.

3. Priključite zelenu žicu sa LED trake

Povežite jedan od ženskih priključnih kabela na muški. Na mojim fotografijama ovo je zelena žica.

Umetnite muški kraj u LED utičnicu sa zelenom žicom.

Ovo je podatkovni kabel.

Raspberry Pi

1. Uzmite zeleni konektor i povežite ga sa Raspberry Pi GPIO.

Morate ga spojiti na PCM_CLK (Pin 12 / GPIO 18)

2. Uzmite crni konektorski kabel i spojite ga na Raspberry Pi GPIO.

Morate ga povezati s jednim od osnova. Predlažem da koristite pin 14, ali možete koristiti i pin 6, 9, 20, 25, 30, 34 ili 39.

NAPOMENA: da bi ovo radilo, LED izvor napajanja i Raspberry Pi moraju imati zajedničko uzemljenje. Takođe imajte na umu da ne smijete spajati 12 Volt + (crvenu žicu) na Raspberry Pi.

LED napajanje

Ne biste trebali moći priključiti 12 -voltno napajanje na utičnicu cijevi

Sve LED diode na vašoj LED traci sada bi trebale zasvijetliti BJELO

Korak 6: Kôd na strani servera

Pokretanje koda na strani servera

cd /opt/com.jonhaydock/disco-pi

sudo npm start

Ovo će pokrenuti web server i početi slušati HTTPS i WSS zahtjeve.

Zadani port je 443, ali to možete nadjačati postavljanjem varijable okruženja prije pokretanja koda. Na primjer

izvoz DISCO_PI_PORT = 1443

Moja LED traka ima 150 LED dioda. Oni se kontrolišu u grupama trojki. To znači da ne mogu kontrolirati svaki LED pojedinačno i moram poslati dovoljno informacija za kontrolu 50.

Ako vaša LED dioda ima više ili manje, možete nadjačati broj LED dioda kojima upravljate prosljeđivanjem parametra pri pokretanju. Na primjer, ako možete kontrolirati samo 10 LED dioda

sudo npm početak 10

Glavni kod poslužitelja može se pronaći u datoteci app.js. Ova datoteka pokreće HTTPS web poslužitelj i dodaje na socket.io za slušanje zahtjeva websocketa na istom portu.

Da biste pristupili web stranici, trebate otvoriti web preglednik na svom glavnom računaru (ovo sam testirao samo u Chromeu) i koristiti IP adresu Raspberry Pi, npr.

10.0.1.2/

Svoju IP adresu možete saznati iz komandne linije Raspberry Pi.

ifconfig

Web poslužitelj će posluživati bilo koji sadržaj u javnoj mapi. Prema zadanim postavkama prikazuje stranicu index.html.

Ima jednu krajnju tačku API -ja - /api /audio. Ova krajnja točka traži sve datoteke u javnoj/audio mapi i vraća popis. Na primjer

["GYAKO.mp3", "Havana (feat. Young Thug).mp3", "Queen_Bohemian_Rhapsody.mp3", "Set It All Free.mp3", "Ovo je ono zbog čega ste došli (feat. Rihanna).mp3"]

Da biste dodali muziku kao opciju, kopirajte datoteke u ovu mapu. Ja lično koristim Filezilla preko ssh -a. Mapa u koju želite dodati datoteke je /opt/com.jonhaydock/disco-pi/public/audio

Korak 7: Kôd web lokacije

Kod web stranice
Kod web stranice

Kada dođete na web stranicu, trebali biste vidjeti ovako nešto.

Ako vidite sigurnosno upozorenje, to je zato što koristimo samopotpisani SSL certifikat. Možete ga zanemariti ili dodati kao izuzetak.

Prilikom odabira naziva datoteke, izvor za audio element HTML 5. bit će postavljeno na tu datoteku. Kad bude spremna, muzika će početi svirati. Nakon što pjesma završi, muzika će prestati.

Ako odaberete opciju None, muzika će prestati svirati.

Tokom reprodukcije muzičke datoteke, web stranica koristi AudioContext sučelje za analizu muzike, koja se zatim šalje na server putem sigurne websocket veze.

Poruka je tipa za koji je socket.io na serveru postavljen da sluša "ws2811". Sadrži niz od 50 elemenata, koji su između 0 i 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}

Poslužitelj koristi izvornu biblioteku Node RPI WS281x (omotavajući biblioteku Jeremy Garff WS281X) za promjenu boja LED dioda na LED traci WS2811, na osnovu podataka poslanih putem web priključka.

Korak 8: Konačno

Image
Image

Trebali biste vidjeti da LED diode na traci mijenjaju boju uz muziku, na osnovu analize Fast Fourierove transformacije izvršene na web stranici.

Nadam se da ćete uživati. Javi mi šta radiš s tim!

NAPOMENA: Ako imate bilo kakvih problema

Budući da ova biblioteka i ugrađeni audio uređaji Raspberry Pi koriste PWM, ne mogu se koristiti zajedno.

Možda ćete morati staviti crnu listu Broadcom audio kernel modula stvaranjem datoteke /etc/modprobe.d/snd-blacklist.conf sa

crna lista snd_bcm2835

Ako se audio uređaj i dalje učitava nakon stavljanja na crnu listu, možda ćete ga morati i komentirati u datoteci /etc /modules. Na sistemima bez glave možda ćete također morati forsirati zvuk putem HDMI -a

Uredite config.txt i dodajte:

hdmi_force_hotplug = 1

hdmi_force_edid_audio = 1

Potrebno je ponovno pokretanje kako bi ova promjena stupila na snagu

Preporučuje se: