Sadržaj:

Color-pi: 9 koraka
Color-pi: 9 koraka

Video: Color-pi: 9 koraka

Video: Color-pi: 9 koraka
Video: ЦВЕТ ВОЛОС для КРАСНОЙ КОЖИ! Как подобрать цвет волос! Ева Лорман 2024, Novembar
Anonim
Color-pi
Color-pi

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

  1. 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
  2. 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
  3. Barrel Jack Connector - Kupio sam jedan u lokalnoj trgovini elektronike, otprilike ovako. Samo provjerite odgovara li vašem napajanju
  4. Konektori / žice za kratkospojnike - imao sam nekoliko ženskih na muških konektorskih kablova i oko 22 pune žice za spajanje
  5. Breadboard Solderless Prototype PCB Board - otprilike ovako
  6. 3 x 10 kΩ otpornici
  7. 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
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

Ožičenje kruga
Ožičenje kruga
Ožičenje kruga
Ožičenje kruga
Ožičenje kruga
Ožičenje kruga
Ožičenje kruga
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

  1. Umetnite jedan od tranzistora u matičnu ploču kao što je prikazano na dijagramu
  2. Umetnite jedan od 10 kΩ otpornika preko drenažnih i izvornih pinova tranzistora. Ovo je prvi i posljednji pin
  3. Upotrijebite žicu za povezivanje izvornog pina (posljednjeg pina) sa masom na matičnoj ploči
  4. 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

  1. Spojite pin 16 na pin vrata (prvi pin) prvog tranzistora - ovo će biti plavi LED kanal
  2. Spojite Pin 18 na Gate Pin (prvi pin) prvog tranzistora - ovo će biti crveni LED kanal
  3. Spojite iglu 20 na jednu od uzemljenih linija na bočnoj ploči
  4. 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

  1. Spojite bijelu žicu na + kraj utičnice cijevi
  2. Spojite crnu žicu na - kraj utičnice cijevi
  3. Crnu žicu spojite na istu liniju uzemljenja na matičnoj ploči na koju je bio spojen RPi Pin 20
  4. 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.

  1. Prvi tranzistor spojen na pin 16. Prošao sam plavu žicu od odvoda za plin (srednji pin) do plave žice na konektoru LED trake
  2. Drugi tranzistor spojen na pin 18. Prošao sam crvenom žicom od

    Drain

    pin (srednji pin) na crvenu žicu na konektoru LED trake

  3. Treći tranzistor spojen na pin 22. Prošao sam zelenom žicom od

    Drain

    pin (srednji pin) na zelenu žicu na konektoru LED trake

  4. 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

Kod na strani servera
Kod 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

Kod web stranice
Kod web stranice

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

Image
Image

Evo primjera onoga što biste trebali vidjeti.

Javite mi ako imate bilo kakvih problema i mogu ih ažurirati prema potrebi.

Preporučuje se: