Sadržaj:
- Korak 1: Oprema
- Korak 2: Postavljanje Raspberry Pi
- Korak 3: Postavljanje primjera koda
- Korak 4: Kreirajte samopotpisani SSL certifikat
- Korak 5: Povezivanje hardvera
- Korak 6: Kôd na strani servera
- Korak 7: Kôd web lokacije
- Korak 8: Konačno
Video: Disco-pi: 8 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
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
- 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
- WS2811 LED traka - Igrao sam se sa ALITOVE 16.4ft 150 piksela WS2811. Dolazi sa kontrolerom i napajanjem za CAD 45-50
- Barrel Jack Connector - Kupio sam jedan u lokalnoj trgovini elektronike, otprilike ovako. Samo provjerite odgovara li vašem napajanju
- 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
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
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
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:
Prijenosni Disco V2 -LED zvukovi s kontrolom zvuka: 11 koraka (sa slikama)
Prijenosni Disco V2 -LED -i sa zvučnom kontrolom: Prešao sam dug put sa svojim putovanjem u elektronici otkad sam napravio svoju prvu prijenosnu diskoteku. U originalnoj verziji hakirao sam kolo na prototipnoj ploči i uspio izgraditi urednu, malu džepnu diskoteku. Ovaj put sam dizajnirao vlastitu PCB
Kako: Instaliranje Raspberry PI 4 bez glave (VNC) sa Rpi-imagerom i slikama: 7 koraka (sa slikama)
Kako: Instaliranje Raspberry PI 4 Headless (VNC) s Rpi-imagerom i slikama: Planiram koristiti ovaj Rapsberry PI u hrpi zabavnih projekata na svom blogu. Slobodno provjerite. Htio sam se vratiti korištenju svog Raspberry PI -a, ali nisam imao tipkovnicu ili miš na novoj lokaciji. Prošlo je dosta vremena od postavljanja maline
Uzgajivač biljaka za mikrogravitaciju "Disco Ball": 13 koraka
Uzgajivač biljaka za mikrogravitaciju "Disco Ball": Pozdrav čitaoci, ovaj projekt je profesionalna prijava na takmičenje Growing Beyond Earth Maker. Ovaj projekt je dokaz koncepta za potencijalni dizajn sadilice koji bi se mogao koristiti za uzgoj plana u mikrogravitaciji. Na osnovu pravila takmičenja koja sam naveo
Disco Desktop Organizator: 8 koraka (sa slikama)
Disco Desktop Organizator: Materijali: triplex, debljina: 3mm Koliko drvenih ploča ovisi o veličini vaše laserske rezačice … namjestite datoteku na drvenu ploču maksimalne veličine … možda vam treba više od 1 ploče (imajte to na umu). 6 x LED dioda za bljeskalicu (koristio sam bljeskalice sa 7 boja) ava
Kako rastaviti računar jednostavnim koracima i slikama: 13 koraka (sa slikama)
Kako rastaviti računar jednostavnim koracima i slikama: Ovo uputstvo o tome kako rastaviti računar. Većina osnovnih komponenti je modularna i lako se uklanja. Međutim, važno je da se oko toga organizirate. To će vam pomoći da izbjegnete gubitak dijelova, a također i prilikom ponovnog sastavljanja