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, Studeni
Anonim
Disko-pi
Disko-pi

Ovo uputstvo pokazuje kako koristiti Raspberry Pi za kontrolu LED trake u boji, na temelju glazbe koja se reproducira iz web preglednika.

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ći popis s glazbenim datotekama koje se nalaze u javnoj/audio mapi na poslužitelju. Odabirom opcije na popisu reproducira se glazbena datoteka na web stranici pomoću audio elementa HTML 5. Tijekom reprodukcije glazbene datoteke web stranica koristi AudioContext sučelje za analizu glazbe, koja se zatim šalje na poslužitelj putem sigurne websocket veze.

Poslužitelj koji radi na Raspberry Pi -u koristi Node RPI WS281x Native biblioteku (koja omotava knjižnicu WS281X Jeremyja Garffa) za promjenu boja LED dioda na LED traci WS2811, na temelju 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 dobiti Raspberry Pi 3 Starter Kit za oko 100 CAD
  2. WS2811 LED traka - Igrao sam se sa ALITOVE 16,4ft 150 piksela WS2811. Dolazi s kontrolerom i napajanjem za CAD 45-50
  3. Barrel Jack Connector - Kupio sam jedan u svojoj lokalnoj trgovini elektronike, otprilike ovako. Samo provjerite odgovara li vašem napajanju
  4. Kratkospojni konektori / žica - imao sam nekoliko ženskih i muških konektorskih kabela i oko 22 pune žice za spajanje

Korak 2: Postavljanje Raspberry Pi

Operacijski sustav

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

Node.js

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

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

sudo apt-get install nodejs

Instaliraj git

sudo apt-get install git

Korak 3: Postavljanje primjera koda

Klonirajte primjer koda

1. Postavite osnovnu mapu za instaliranje

cd /opt

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

2. Klonirajte primjer git spremišta

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

ili

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

3. Instalirajte ovisnosti

cd disco-pi

npm instalirati

To može potrajati 2-3 minute

Korak 4: Izradite samopotpisani SSL certifikat

1. Napravite datoteku privatnog ključa

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

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

2. Izradite CSR (zahtjev za potpisivanje certifikata)

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

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

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

Naziv države ili provincije (puni naziv) [Some-State]: Naziv lokaliteta British Columbia (npr. Grad) : Vancouver Naziv organizacije (npr. Tvrtka) [Internet Widgits Pty Ltd]: Naziv organizacijske jedinice Disco Pi (npr. Odjeljak) : Uobičajeni naziv (npr. FQDN poslužitelja ili VAŠ naziv) : disco-pi Adresa e-pošte : [email protected] Lozinka za izazov : Neobavezni naziv tvrtke :

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. Radi dodatne sigurnosti stvorit ćemo i datoteku s parametrima Diffie Hellman

openssl dhparam -out dh_2048.pem 2048

To 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 traku napaja 12 volti. Raspberry Pi može emitirati samo 3.3v ili 5v i nije sposoban izlaz bilo gdje u blizini pojačala potrebnih za pogon 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. Provjerite radite li s krajem LED trake na kojoj piše Din.

Osigurajte da priključak cijevi nije priključen na izvor napajanja

1. Spojite crvenu žicu s LED trake na + stranu utora za cijev.

Koristio sam bijelu žicu za spajanje promjera 22.

Umetnite žicu u utor + u utičnici cijevi i pričvrstite je.

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

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

Koristio sam crnu žicu za spajanje 22 kalibra.

Umetnite žicu u - utor u utičnici cijevi. U ovom trenutku također umetnite muški kraj jednog od priključnih kabela (smeđa žica na fotografiji) u istu rupu i oboje ih pričvrstite.

Drugi kraj crne žice gurnite u utičnicu LED diode.

Provjerite jeste li povezani crnom žicom.

3. Spojite zelenu žicu s 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.

Malina Pi

1. Uzmite zeleni priključni kabel i spojite ga na Raspberry Pi GPIO.

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

2. Uzmite crni priključni 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 funkcioniralo, LED izvor napajanja i Raspberry Pi moraju imati zajedničko uporište. Također 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 bačvastu utičnicu

Sve LED diode na vašoj LED traci sada bi trebale svijetliti BIJELO

Korak 6: Kôd na strani poslužitelja

Pokretanje koda na strani poslužitelja

cd /opt/com.jonhaydock/disco-pi

sudo npm start

Ovo će pokrenuti web poslužitelj i početi osluškivati 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 kontroliraju u skupinama trojki. To znači da ne mogu kontrolirati svaku LED diodu 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

Kôd glavnog 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.

Za pristup web stranici trebate otvoriti web preglednik na svom glavnom računalu (ovo sam testirao samo u Chromeu) i koristiti IP adresu Raspberry Pi, npr.

10.0.1.2/

Svoju IP adresu možete saznati iz naredbenog retka Raspberry Pi.

ifconfig

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

Ima jednu krajnju točku API -ja - /api /audio. Ova krajnja točka traži sve datoteke pod javnom/audio mapom 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 glazbu kao opciju, kopirajte datoteke u ovu mapu. Osobno koristim Filezilla preko ssh -a. Mapa u koju želite dodati datoteke je /opt/com.jonhaydock/disco-pi/public/audio

Korak 7: Kôd web stranice

Kod web stranice
Kod web stranice

Kad 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 iznimku.

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

Odaberete li opciju Ništa, glazba će se prestati reproducirati.

Tijekom reprodukcije glazbene datoteke web stranica koristi sučelje AudioContext za analizu glazbe, koja se zatim šalje na poslužitelj putem sigurne websocket veze.

Poruka je tipa za koji je socket.io na poslužitelju postavljen za slušanje "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 knjižnicu WS281X Jeremyja Garffa) za promjenu boja LED dioda na LED traci WS2811, na temelju podataka poslanih putem web priključka.

Korak 8: Konačno

Image
Image

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

Nadam se da ćete uživati u ovome. Javite mi što radite s tim!

NAPOMENA: Ako imate bilo kakvih problema

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

Možda ćete morati staviti na 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 sustavima bez glave možda ćete također morati prisiliti zvuk putem HDMI -a

Uredite config.txt i dodajte:

hdmi_force_hotplug = 1

hdmi_force_edid_audio = 1

Da bi ova promjena stupila na snagu potrebno je ponovno pokretanje

Preporučeni: