Sadržaj:

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

Video: Color-pi: 9 koraka

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

  1. 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
  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 svojoj lokalnoj trgovini elektronike, otprilike ovako. Samo provjerite odgovara li vašem napajanju
  4. Kratkospojni konektori / žica - imao sam nekoliko ženskih i muških konektorskih kabela i oko 22 pune žice za spajanje
  5. Breadboard Solderless Prototype PCB Board - nešto poput ovoga
  6. 3 x 10 kΩ otpornici
  7. 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
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

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

  1. Umetnite jedan od tranzistora u ploču kao što je prikazano na dijagramu
  2. Umetnite jedan od 10 kΩ otpornika preko odvoda i pinova izvora tranzistora. Ovo je prvi i zadnji pin
  3. Upotrijebite žicu za priključivanje izvornog pina (posljednjeg pina) na uzemljenje na 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 Gate Pin (prvi pin) prvog tranzistora - ovo će biti plavi LED kanal
  2. Spojite pin 18 na pin vrata (prvi pin) prvog tranzistora - to će biti crveni LED kanal
  3. Spojite iglu 20 na jednu od uzemljenih linija na bočnoj ploči
  4. 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

  1. Spojite bijelu žicu na + kraj utičnice cijevi
  2. Spojite crnu žicu na - kraj priključnice cijevi
  3. Spojite crnu žicu na istu liniju uzemljenja na ploči s kojom je spojen RPi Pin 20
  4. 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.

  1. Prvi tranzistor spojen na pin 16. Plavu sam žicu vodio od odvodnog pina (srednjeg pina) do plave žice na konektoru LED trake
  2. Drugi tranzistor spojen na pin 18. Prošao sam crvenom žicom od

    Ocijedite

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

  3. Treći tranzistor spojen na pin 22. Vodio sam zelenu žicu od

    Ocijedite

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

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

Kôd na strani poslužitelja
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

Kod web stranice
Kod 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

Image
Image

Evo primjera onoga što biste trebali vidjeti.

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

Preporučeni: