Sadržaj:
- Korak 1: Oprema
- Korak 2: Postavljanje Raspberry Pi
- Korak 3: Postavljanje primjera koda
- Korak 4: Izradite samopotpisani SSL certifikat
- Korak 5: Povezivanje hardvera
- Korak 6: Kôd na strani poslužitelja
- Korak 7: Kôd web stranice
- Korak 8: Konačno
Video: Disco-pi: 8 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:37
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
- 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
- WS2811 LED traka - Igrao sam se sa ALITOVE 16,4ft 150 piksela WS2811. Dolazi s kontrolerom i napajanjem za CAD 45-50
- Barrel Jack Connector - Kupio sam jedan u svojoj lokalnoj trgovini elektronike, otprilike ovako. Samo provjerite odgovara li vašem napajanju
- 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
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
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
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:
Prijenosni Disco V2 -zvučne LED diode: 11 koraka (sa slikama)
Prijenosni Disco V2 -LED -i sa zvučnom kontrolom: Došao sam dug put sa svojim putovanjem s elektronikom otkad sam napravio svoju prvu prijenosnu diskoteku. U originalnoj verziji hakirao sam sklop na prototipnoj ploči i uspio izgraditi uredan, mali džepni disko. Ovaj put sam dizajnirao vlastitu PCB
Kako: Instaliranje Raspberry PI 4 bez glave (VNC) s 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 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 čitatelji, ovaj projekt je profesionalna prijava na natječaj Growing Beyond Earth Maker Contest. Ovaj projekt je dokaz koncepta za potencijalni dizajn sadilice koji bi se mogao koristiti za uzgoj plana u mikrogravitaciji. Na temelju Pravila natjecanja koja sam naveo
Disco Desktop Organizator: 8 koraka (sa slikama)
Disco Desktop Organizator: Materijali: triplex, debljina: 3mmKoliko drvenih ploča ovisi o veličini vašeg laserskog rezača … namjestite datoteku na drvenu ploču najveće 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 za 7 boja) ava
Kako rastaviti računalo jednostavnim koracima i slikama: 13 koraka (sa slikama)
Kako rastaviti računalo jednostavnim koracima i slikama: Ovo uputstvo o tome kako rastaviti računalo. 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 spriječite gubitak dijelova, a također i prilikom ponovnog sastavljanja