Sadržaj:
- Korak 1: Oprema
- Korak 2: Postavljanje Raspberry Pi
- Korak 3: Pi-blaster
- Korak 4: Postavljanje primjera koda
- Korak 5: Izradite samopotpisani SSL certifikat
- Korak 6: Ožičenje kruga
- Korak 7: Kôd na strani poslužitelja
- Korak 8: Kôd web stranice
- Korak 9: Konačno
Video: Color-pi: 9 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:37
Ovo uputstvo pokazuje kako se koristi Raspberry Pi za glasovno upravljanje RGB LED trakom, putem web stranice, koristeći Web Speech API sučelja za SpeechRecognition i SpeechSynthesis.
Ovaj primjer pokazuje kako se
- Izradite osnovnu web stranicu koristeći Node.js preko HTTPS -a
- Koristite API sučelja Web Speech API za SpeechRecognition i SpeechSynthesis.
- Koristite Cylon.js okvir za kontrolu RGB LED trake na Raspberry Pi
- Komunicirajte putem WSS (sigurnih web utičnica) s web stranice na Cylon.js radi kontrole boje LED diode
Bilješka
- Za slušanje sintetizatora govora trebat će vam zvučnici ili slušalice
- Morat ćete omogućiti pristup svom mikrofonu da bi prepoznavanje glasa radilo
- Zbog ovog pristupa vašem mikrofonu web mjesto mora biti pokrenuto pod HTTPS -om
- Knjižnica cylon-api-socketio trenutno ne podržava https. Imam zahtjev za povlačenje koji čeka na spajanje, ali do tada morate zamijeniti /node_modules/cylon-api-socketio/lib/api.js datotekom u ovom spremištu
- Za ovaj rad potreban je pi-blaster.
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
- RGB LED trakasto svjetlo - Igrao sam se sa Minger LED svjetlosnim trakama 32.8ft/10M 600leds RGB SMD 5050. Dolazi s kontrolerom i napajanjem za oko 40 CAD
- 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
- Breadboard Solderless Prototype PCB Board - nešto poput ovoga
- 3 x 10 kΩ otpornici
- 3 x N -kanalni MOSFET -ovi za kontrolu LED -a - neke IRL3303 -e sam kupio u svojoj lokalnoj elektroničkoj trgovini. Važno je da napon praga vrata bude max. 3.3V tako da se može pokretati pomoću RPi pinova; obično se u nazivu označava s 'L' (logička razina).
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
Instalirajte Git
sudo apt-get install git
Korak 3: Pi-blaster
pi-blaster omogućuje PWM na GPIO pinovima koje zatražite od Raspberry Pi. Korištena tehnika izuzetno je učinkovita: ne koristi CPU i daje vrlo stabilne impulse.
Ova modulacija širine impulsa omogućuje Raspberry Pi -u da kontrolira koliko su svijetli svaki od crvenih, zelenih i plavih kanala za LED traku.
Prvo klonirajte spremište
cd /opt /
klon sudo git https://github.com/sarfata/pi-blaster.git sudo chown -R pi: pi pi-blaster
Zatim izgradite i instalirajte
cd/opt/pi-blaster./autogen.sh &&./konfiguracija && make && sudo make install
Na kraju, konfigurirajte pinove koje želite koristiti
Pod root računom ili koristeći sudo stvorite i uredite datoteku
/etc/default/pi-blaster
Dodajte sljedeće retke
DAEMON_OPTS =-gpio 23, 24, 25
Ovi gpio pinovi moraju odgovarati pinovima koje spajate na LED traku.
NAPOMENA: Postoji razlika između GPIO -a i pin broja. Ovaj primjer koristi sljedeće
LED - plava, GPIO -23, pin - 16
LED - crvena, GPIO -24, pin - 18 LED - zelena, GPIO -25, pin - 22
Dodatne dorade
Pokrenite pi-blaster
sudo usluga pi-blaster start
Ponovno pokrenite pi-blaster
sudo usluga pi-blaster ponovno pokretanje
Zaustavite pi-blaster
sudo servis pi-blaster stop
Automatski pokrenite pi-blaster u vrijeme pokretanja
sudo systemctl omogućiti pi-blaster
Upozorenja i druga upozorenja
Igle koje koristi pi-blaster bit će konfigurirane kao izlazi. Nemojte priključivati nešto na ulaz jer biste ga mogli uništiti! Ovaj demon koristi hardverski PWM generator maline pi kako bi dobio precizna vremena. To može ometati izlaz zvučne kartice.
Korak 4: 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
ili
git klon [email protected]: haydockjp/color-pi.git
3. Instalirajte ovisnosti
cd boja-pi
npm instalirati
To može potrajati 2-3 minute
4. Ovaj projekt treba komunicirati putem HTTPS -a i WSS -a. Trenutno cylon-api-socketio ne podržava SSL veze. Postoji otvoreni zahtjev za povlačenje za dodavanje ove podrške, ali dok se to ne spoji, postoji datoteka zakrpe u ovom spremištu. Pokrenite sljedeću naredbu nakon npm install
git checkout node_modules/cylon-api-socketio/lib/api.js
Korak 5: Izradite samopotpisani SSL certifikat
1. Napravite datoteku privatnog ključa
cd /opt/com.jonhaydock/colour-pi/certs
openssl genrsa -out color-pi-key.pem 2048
2. Izradite CSR (zahtjev za potpisivanje certifikata)
openssl req -novi -ključ u boji-pi-key.pem -izlaz u boji-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 (potpuni naziv) [Some-State]: Naziv lokaliteta Britanske Kolumbije (npr. Grad) : Vancouver Naziv organizacije (npr. Tvrtka) [Internet Widgits Pty Ltd]: Naziv organizacijske jedinice u boji Pi (npr. Odjeljak) : Uobičajeno ime (npr. FQDN s poslužiteljem ili VAŠE ime) : color-pi Adresa e-pošte : [email protected]
Lozinka za izazov :
Izborni naziv tvrtke :
U ovom primjeru samo pritisnite Return da ostavite izazovnu lozinku praznom
3. Generirajte certifikat
openssl x509 -req -days 1095 -in color-pi-csr.pem -signkey color-pi-key.pem -out color-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 6: Ožičenje kruga
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. N-kanalni MOSFET tranzistori koriste se za odvajanje 3.3v na RPi pinovima i 12v LED napajanja.
MOSFET ima tri igle Vrata, odvod i izvor. Ako niste sigurni koji google za podatkovnu tablicu tranzistora koristite, npr. IRL3303
Spojit ćemo Raspberry Pi Pin na vrata, LED žicu na odvod i zajedničko uzemljenje na izvor. Kad pin postane visok, napon između odvoda i izvora aktivirat će vrata i spojit će vrata s izvorom.
Također ćemo postaviti 10kΩ otpornike preko vrata i izvora, tako da kad smo RPi pin visoki, možemo zaštititi pin smanjenjem struje koja prolazi kroz njega.
Naredite sljedeće korake na vlastitu odgovornost. Ne preuzimam odgovornost za sve što bi moglo poći po zlu
Gore se nalazi uvrnuta slika i fotografija stvarnog kruga.
Preporučio bih da to učinite dok je napajanje isključeno za RPi i LED traku
Postavite tranzistorska kola, jedan po kanalu u boji
- Umetnite jedan od tranzistora u ploču kao što je prikazano na dijagramu
- Umetnite jedan od 10 kΩ otpornika preko odvoda i pinova izvora tranzistora. Ovo je prvi i zadnji pin
- Upotrijebite žicu za priključivanje izvornog pina (posljednjeg pina) na uzemljenje na ploči
- Ponovite korake 1 - 3 još dva puta, tako da imate tri seta - jedan po boji (crvena, zelena i plava)
Priključite iglice RPi na ploču
- Spojite Pin 16 na Gate Pin (prvi pin) prvog tranzistora - ovo će biti plavi LED kanal
- Spojite pin 18 na pin vrata (prvi pin) prvog tranzistora - to će biti crveni LED kanal
- Spojite iglu 20 na jednu od uzemljenih linija na bočnoj ploči
- Spojite pin 22 na pin vrata (prvi pin) prvog tranzistora - ovo će biti zeleni LED kanal
Koristio sam odgovarajuće boje žica za LED diode: plavu, crvenu i zelenu. Koristio sam crnu boju za tlo
Spojite bačvastu utičnicu
- Spojite bijelu žicu na + kraj utičnice cijevi
- Spojite crnu žicu na - kraj priključnice cijevi
- Spojite crnu žicu na istu liniju uzemljenja na ploči s kojom je spojen RPi Pin 20
- Spojite bijelu žicu na + liniju na ploči
Spajanje LED trake
Moja LED traka dolazi s konektorom dovoljno dobre veličine da se može privremeno uključiti u matičnu ploču. Gurnuo sam konektor u ploču i spojio ga na ispitivanje kruga.
- Prvi tranzistor spojen na pin 16. Plavu sam žicu vodio od odvodnog pina (srednjeg pina) do plave žice na konektoru LED trake
-
Drugi tranzistor spojen na pin 18. Prošao sam crvenom žicom od
Ocijedite
pin (srednji pin) na crvenu žicu na konektoru LED trake
-
Treći tranzistor spojen na pin 22. Vodio sam zelenu žicu od
Ocijedite
pin (srednji pin) na zelenu žicu na konektoru LED trake
- Konačno, vodio sam bijelu žicu od + linije na ploči koja je bila spojena na utičnicu cijevi, do bijele žice na konektoru LED trake.
Vlast
Nakon provjere kruga, trebali biste uključiti Raspberry Pi i uključiti napajanje od 12V u utičnicu cijevi.
Korak 7: Kôd na strani poslužitelja
Pokretanje koda na strani poslužitelja
cd /opt/com.jonhaydock/colour-pi
sudo npm start
Ovo će pokrenuti web poslužitelj i početi osluškivati HTTPS i WSS zahtjeve.
NAPOMENA: Ne zaboravite da je prvo potrebno pokrenuti pi-blaster
Varijable okoliša
Zadani port web stranice je 443, ali to možete nadjačati postavljanjem varijable okruženja prije pokretanja koda. Na primjer
izvoz COLOUR_PI_PORT = 2443
Zadani port web utičnice je 1443, ali to možete nadjačati postavljanjem varijable okruženja prije pokretanja koda. Na primjer
izvoz COLOUR_PI_WSS_PORT = 3443
Napomena: Budući da web utičnicom upravlja cylon.js, a ne glavna web stranica, oni moraju biti na različitim priključcima
Igle koje se koriste za plavu (pin 16), zelenu (pin 18) i crvenu (pin 22) također se mogu nadjačati. Na primjer
izvoz COLOUR_PI_PIN_BLUE = 36
izvoz COLOUR_PI_PIN_RED = 38 izvoz COLOUR_PI_PIN_GREEN = 40
Napomena: Oni se moraju podudarati s fizičkim pinovima koje ste koristili. Ako ih promijenite, također ćete morati ažurirati GPIO-ove definirane u/etc/default/pi-blaster datoteci. Na primjer
DAEMON_OPTS =-gpio 16, 20, 21
Kôd glavnog poslužitelja može se pronaći u datoteci app.js. Ova datoteka pokreće HTTPS web poslužitelj, a također putem okvira Cylon.js koristi socket.io za osluškivanje zahtjeva web utičnica na zasebnom priključku.
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 posluživat će bilo koji sadržaj u javnoj mapi. Prema zadanim postavkama prikazuje se stranica index.html.
Cylon.js stvara krajnju točku na koju možete spojiti Socket.io.
10.0.1.2:1443/api/robots/colour-pi
Možete poslati poruku set_colour kroz utičnicu kako biste postavili vrijednosti Crvena, Zelena i Plava
device.emit ('set_colour', r, g, b)
Poziva naredbu set_colour koja poziva funkciju setColour u app.js. Ova funkcija postavlja razine svjetline za svaku od vrijednosti R, G i B između 0 i 255. Gdje je 0 isključeno, a 255 potpuno uključeno.
npr.
Crveno r = 255, g = 0, b = 0
Zeleno r = 0, g = 255, b = 0 Plavo r = 0, g = 0, b = 255 Bijelo r = 255, g = 255, b = 255 Crno / Isključeno r = 0, g = 0, b = 0
Korak 8: Kôd web stranice
Općenito
Web stranica koristi prepoznavanje glasa za odabir boja s unaprijed definiranog popisa. Da biste popisu dodali boju, uredite datoteku na poslužitelju: public/data/colours.json
npr.
"red": "#FF0000", Kad se boja pronađe ili odabere s padajućeg izbornika, okvir Output bit će postavljen na tu boju, a poruka će biti poslana putem socket.io na Raspnerry Pi, koji će LED diode postaviti na istu boju.
NAPOMENA: ovisno o tome koliko su dobre vaše LED diode, možete vidjeti ili ne vidjeti sličnu boju. Neke je lakše duplicirati od drugih
Prilikom prvog učitavanja web stranice, budući da koristite samopotpisani SSL certifikat, morate to potvrditi u pregledniku. Trebali biste vidjeti sigurnosno upozorenje o certifikatu.
Prepoznavanje glasa
Ovaj okvir ima ikonu mikrofona. Ako kliknete na ikonu dok je zelena, počet će osluškivati boje. Dok sluša, postat će crveno. Slušat će kratko vrijeme, a zatim prestati. Klikom na ikonu mikrofona dok je crven također ćete prestati slušati.
Budući da ova web stranica treba pristupiti vašem mikrofonu, morat ćete mu dati dopuštenje kada se to od vas zatraži
NAPOMENA: Za ovaj dio vam je potreban mikrofon. Koristim onu na svojoj web kameri.
Privremeni prijepis
Ovaj okvir prati pogađanja riječi koje izgovarate, dok ih izgovarate.
Konačni prijepis
Ovaj okvir prati konačnu pretpostavku onoga što ste rekli.
Poznate boje
Ovo je popis svih boja za koje stranica zna. Stvorena je iz datoteke colours.json. Ako odaberete jednu od ovih boja, stranica će izgovarati boju i postaviti izlaznu boju.
NAPOMENA: Za slušanje govora potrebni su vam zvučnici ili slušalice
Pronađene boje
Ova web stranica trenutno podržava samo usklađivanje boje. Ako riječ ili riječi koje ste izgovorili u mikrofon odgovaraju imenu poznate boje ili odaberete boju s popisa poznatih boja, ona će se ovdje dodati kao zapisnik.
Izlaz
Ovdje će se prikazati posljednja pronađena boja. Vrijednost Hex boje (npr. #7cb9e8) i RGB vrijednost (npr. 124, 185, 232) bit će prikazane kao tekst, a pozadina okvira u sredini bit će postavljena na stvarnu boju.
Ova se boja također šalje na Raspberry Pi i trebali biste vidjeti promjenu boje LED trake.
NAPOMENA: ako ne vidite promjenu boje LED diode, pokušajte ponovno pokrenuti pi-blaster i/ili aplikaciju node.js
sudo usluga pi-blaster ponovno pokretanje
sudo npm start
Poznati glasovi
Ovaj okvir prikazuje popis "poznatih glasova" iz podržane sinteze govora. Odabirom jednog od ovih glasova promijenit će se glas i jezik koji ćete čuti, a izgovarat će i ime glasa.
Također će se promijeniti jezik SpeechRecognition -a na isti kao onaj na popisu.
Korak 9: Konačno
Evo primjera onoga što biste trebali vidjeti.
Javite mi ako imate bilo kakvih problema i mogu ih ažurirati prema potrebi.
Preporučeni:
Dizajn igre brzim pokretom u 5 koraka: 5 koraka
Dizajn igre u Flick -u u 5 koraka: Flick je zaista jednostavan način stvaranja igre, osobito nečega poput zagonetke, vizualnog romana ili avanturističke igre
Broj koraka: 17 koraka
الكشف عن عن أنواع المحاليل: محمدآل سعودالكشف عن المحاليل رابط الفديو
Prepoznavanje lica na Raspberry Pi 4B u 3 koraka: 3 koraka
Prepoznavanje lica na Raspberry Pi 4B u 3 koraka: U ovom Instructableu ćemo izvršiti detekciju lica na Raspberry Pi 4 sa Shunya O/S pomoću knjižnice Shunyaface. Shunyaface je biblioteka za prepoznavanje/otkrivanje lica. Cilj projekta je postići najbržu brzinu otkrivanja i prepoznavanja s
Kako koristiti Detect Color TCS3200 sa SkiiiD: 9 koraka
Kako koristiti Detect Color TCS3200 sa SkiiiD: Vodič za razvoj Detect Color TCS3200 sa skiiiD
IR-Remote Color Guessing Game: 3 koraka
IR-Remote Color Guessing Game: U ovom uputstvu pokazat ću vam kako kontrolirati RGB LED pomoću daljinskog upravljača i od toga napraviti zabavnu igru