Sadržaj:
- Korak 1: Oprema
- Korak 2: Postavljanje Raspberry Pi
- Korak 3: Pi-blaster
- Korak 4: Postavljanje primjera koda
- Korak 5: Kreirajte samopotpisani SSL certifikat
- Korak 6: Ožičenje kruga
- Korak 7: Kôd na strani servera
- Korak 8: Kôd web lokacije
- Korak 9: Konačno
Video: Color-pi: 9 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
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
- Kreirajte osnovnu web lokaciju koristeći Node.js preko HTTPS -a
- Koristite API Web Interface API za SpeechRecognition i SpeechSynthesis.
- Koristite Cylon.js okvir za kontrolu RGB LED trake na Raspberry Pi
- Komunicirajte putem WSS -a (sigurnih web utičnica) sa web stranice na Cylon.js radi kontrole boje LED diode
Bilješka
- Da biste čuli sintetizator 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
- Biblioteka 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 s datotekom u ovom spremištu
- pi-blaster je potreban da bi ovo funkcioniralo.
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
- 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 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
- Breadboard Solderless Prototype PCB Board - otprilike ovako
- 3 x 10 kΩ otpornici
- 3 x N -kanalna MOSFET -a za kontrolu LED -a - neke IRL3303 -e sam kupio u svojoj lokalnoj elektroničkoj trgovini. Važno je da napon praga na vratima bude max. 3.3V tako da se može pokretati pomoću RPi pinova; obično se označava sa 'L' (logički nivo) u imenu.
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: Pi-blaster
pi-blaster omogućava PWM na GPIO pinovima koje zatražite od Raspberry Pi. Tehnika koja se koristi je izuzetno efikasna: ne koristi CPU i daje vrlo stabilne impulse.
Ova modulacija širine impulsa omogućava Raspberry Pi -u da kontrolira koliko su svijetli svaki od crvenih, zelenih i plavih kanala za LED traku.
Prvo klonirajte spremište
cd /opt /
sudo git clone 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 redove
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
Dodatna podešavanja
Pokrenite pi-blaster
sudo servis pi-blaster start
Ponovo pokrenite pi-blaster
sudo servis pi-blaster ponovno pokretanje
Zaustavite pi-blaster
sudo servis pi-blaster stop
Automatski pokrenite pi-blaster u vrijeme pokretanja
sudo systemctl enable pi-blaster
Upozorenja i druga upozorenja
Igle koje koristi pi-blaster bit će konfigurirane kao izlazi. Nemojte priključivati nešto na ulaz ili 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 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
ili
git klon [email protected]: haydockjp/color-pi.git
3. Instalirajte ovisnosti
cd color-pi
npm install
To može potrajati 2-3 minute
4. Ovaj projekt treba komunicirati putem HTTPS -a i WSS -a. U ovom trenutku 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: Kreirajte samopotpisani SSL certifikat
1. Kreirajte datoteku privatnog ključa
cd /opt/com.jonhaydock/colour-pi/certs
openssl genrsa -out color-pi-key.pem 2048
2. Kreirajte CSR (zahtjev za potpisivanje certifikata)
openssl req -novi -ključ boja-pi-ključ.pem -izlaz boja-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 provincije (pun naziv) [Some-State]: Naziv lokaliteta Britanska Kolumbija (npr. Grad) : Vancouver Naziv organizacije (npr. Kompanija) [Internet Widgits Pty Ltd]: Naziv organizacione jedinice u boji Pi (npr. Odjeljak) : Uobičajeno ime (npr. FQDN s imenom servera ili VAŠE ime) : color-pi Adresa e-pošte : [email protected]
Lozinka za izazov :
Neobavezni naziv kompanije :
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. 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 6: Ožičenje kruga
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. N-kanalni MOSFET tranzistori koriste se za odvajanje 3.3v na RPi pinovima i 12v LED napajanja.
MOSFET ima tri igle, kapiju, odvod i izvor. Ako niste sigurni koji Google koristite za listu podataka tranzistora koju koristite, npr. IRL3303
Spojit ćemo Raspberry Pi pin na kapiju, 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 ih s izvorom.
Također ćemo postaviti 10kΩ otpornike preko kapije i izvora, tako da kada 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 kola.
Preporučujem 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 matičnu ploču kao što je prikazano na dijagramu
- Umetnite jedan od 10 kΩ otpornika preko drenažnih i izvornih pinova tranzistora. Ovo je prvi i posljednji pin
- Upotrijebite žicu za povezivanje izvornog pina (posljednjeg pina) sa masom na matičnoj 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 pin vrata (prvi pin) prvog tranzistora - ovo će biti plavi LED kanal
- Spojite Pin 18 na Gate Pin (prvi pin) prvog tranzistora - ovo će biti crveni LED kanal
- Spojite iglu 20 na jednu od uzemljenih linija na bočnoj ploči
- Spojite Pin 22 na Gate Pin (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
Priključite priključak za cijev
- Spojite bijelu žicu na + kraj utičnice cijevi
- Spojite crnu žicu na - kraj utičnice cijevi
- Crnu žicu spojite na istu liniju uzemljenja na matičnoj ploči na koju je bio spojen RPi Pin 20
- Spojite bijelu žicu na + liniju na ploči
Priključivanje 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 matičnu ploču i spojio ga na ispitivanje kruga.
- Prvi tranzistor spojen na pin 16. Prošao sam plavu žicu od odvoda za plin (srednji pin) do plave žice na konektoru LED trake
-
Drugi tranzistor spojen na pin 18. Prošao sam crvenom žicom od
Drain
pin (srednji pin) na crvenu žicu na konektoru LED trake
-
Treći tranzistor spojen na pin 22. Prošao sam zelenom žicom od
Drain
pin (srednji pin) na zelenu žicu na konektoru LED trake
- Konačno, vodio sam bijelu žicu od + linije na matičnoj ploči koja je bila spojena na utičnicu cijevi, do bijele žice na konektoru LED trake.
Snaga
Nakon provjere strujnog kruga, trebali biste uključiti Raspberry Pi i uključiti napajanje od 12V u utičnicu cijevi.
Korak 7: Kôd na strani servera
Pokretanje koda na strani servera
cd /opt/com.jonhaydock/colour-pi
sudo npm start
Ovo će pokrenuti web server i početi slušati HTTPS i WSS zahtjeve.
NAPOMENA: Ne zaboravite da prvo morate pokrenuti pi-blaster
Varijable okruženja
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 portovima
Igle koje se koriste za plavu (pin 16), zelenu (pin 18) i crvenu (pin 22) takođe 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 moraju odgovarati fizičkim pinovima koje ste koristili. Ako ih promijenite, morat ćete ažurirati i GPIO-ove definirane u/etc/default/pi-blaster datoteci. Na primjer
DAEMON_OPTS =-gpio 16, 20, 21
Glavni kod poslužitelja može se pronaći u datoteci app.js. Ova datoteka pokreće HTTPS web poslužitelj, a također preko okvira Cylon.js koristi socket.io za osluškivanje zahtjeva web utičnica na zasebnom 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 server će posluživati bilo koji sadržaj u javnoj mapi. Prema zadanim postavkama prikazuje stranicu index.html.
Cylon.js stvara krajnju točku na koju možete povezati Socket.io.
10.0.1.2:1443/api/robots/colour-pi
Možete poslati poruku set_colour preko utičnice za postavljanje 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.
Crvena r = 255, g = 0, b = 0
Zelena r = 0, g = 255, b = 0 Plava r = 0, g = 0, b = 255 Bijela r = 255, g = 255, b = 255 Crna / Isključena r = 0, g = 0, b = 0
Korak 8: Kôd web lokacije
Općenito
Web stranica koristi prepoznavanje glasa za odabir boja s unaprijed definirane liste. Da biste listi dodali boju, uredite datoteku na serveru: public/data/colours.json
npr.
"red": "#FF0000", Kada se boja pronađe ili odabere s padajućeg izbornika, okvir Output bit će postavljen na tu boju, a poruka će biti poslana preko 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, jer koristite samopotpisani SSL certifikat, morate to potvrditi u pregledniku. Trebali biste vidjeti sigurnosno upozorenje o certifikatu.
Prepoznavanje glasa
Ovo polje ima ikonu mikrofona. Ako kliknete na ikonu kada 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.
Kako 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 transkript
Ovo polje prati pogađanje riječi koje izgovarate, dok ih izgovarate.
Konačni transkript
Ovaj okvir prati konačnu pretpostavku onoga što ste rekli.
Poznate boje
Ovo je popis svih boja za koje stranica zna. Kreira se iz datoteke colours.json. Ako odaberete jednu od ovih boja, stranica će izgovarati boju i postaviti izlaznu boju.
NAPOMENA: Da biste čuli govor, 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 sa liste poznatih boja, bit će dodana ovdje kao dnevnik.
Output
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 boja se takođe šalje na Raspberry Pi i trebali biste vidjeti promjenu boje LED trake.
NAPOMENA: ako ne vidite promjenu boje LED diode, pokušajte ponovo pokrenuti pi-blaster i/ili aplikaciju node.js
sudo servis pi-blaster ponovno pokretanje
sudo npm start
Poznati glasovi
Ovo polje prikazuje listu "poznatih glasova" iz podržane govorne sinteze. 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 listi.
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čuje se:
Dizajn igre brzim pokretom u 5 koraka: 5 koraka
Dizajn igre u Flick -u u 5 koraka: Flick je zaista jednostavan način da napravite igru, posebno nešto poput zagonetke, vizuelnog romana ili avanturističke igre
Prepoznavanje lica na Raspberry Pi 4B u 3 koraka: 3 koraka
Prepoznavanje lica na Raspberry Pi 4B u 3 koraka: U ovom uputstvu ćemo izvršiti otkrivanje lica na Raspberry Pi 4 sa Shunya O/S koristeći biblioteku Shunyaface. Shunyaface je biblioteka za prepoznavanje/otkrivanje lica. Cilj projekta je postići najbržu brzinu otkrivanja i prepoznavanja sa
Kako se koristi Detect Color TCS3200 sa SkiiiD: 9 koraka
Kako koristiti Detect Color TCS3200 sa SkiiiD -om: Vodič za razvoj Detect Color TCS3200 sa skiiiD -om
IR-Remote Color Guessing Game: 3 koraka
IR-Remote Color Guessing Game: U ovom uputstvu ću vam pokazati kako kontrolirati RGB LED pomoću daljinskog upravljača i od toga napraviti zabavnu igru
Broj koraka / koraka: 3 koraka
পেনড্রাইভ / মেমোরি কার্ডে ভাইরাসের ভাইরাসের হারিয়ে সমাধান সমাধান সমাধান সমাধান সমাধান পেনড্রাইভ পেনড্রাইভ পেনড্রাইভ পেনড্রাইভ মেমোরি মেমোরি মেমোরি মেমোরি মেমোরি মেমোরি মেমোরি এখন এখন এখন।।।।।। Zaštita podataka, pristup prečicama / virusima