Cuprins:

Color-pi: 9 pași
Color-pi: 9 pași

Video: Color-pi: 9 pași

Video: Color-pi: 9 pași
Video: Baby motion related complete information || #babymotion color in detailed || baby care tips 2024, Noiembrie
Anonim
Culoare-pi
Culoare-pi

Această instrucțiune arată cum să utilizați un Raspberry Pi pentru a controla vocal o bandă LED RGB, printr-un site web, utilizând interfețele API Web Speech pentru SpeechRecognition și SpeechSynthesis.

Acest exemplu arată cum să

  • Creați un site de bază folosind Node.js prin
  • Utilizați interfețele API Web Speech pentru SpeechRecognition și SpeechSynthesis.
  • Utilizați cadrul Cylon.js pentru a controla o bandă LED RGB pe un Raspberry Pi
  • Comunicați prin WSS (Secure Web sockets) de pe pagina web către Cylon.js pentru a controla culoarea LED-ului

Notă

  • Veți avea nevoie de difuzoare sau căști pentru a auzi sintetizatorul de vorbire
  • Va trebui să acordați acces la microfonul dvs. pentru ca recunoașterea vocală să funcționeze
  • Deoarece acest lucru vă accesează microfonul, site-ul trebuie să fie rulat sub
  • Biblioteca cylon-api-socketio nu acceptă https în acest moment. Am o cerere de pull care așteaptă să fie combinată, dar până atunci trebuie să înlocuiți /node_modules/cylon-api-socketio/lib/api.js cu fișierul din acest depozit
  • pi-blaster este necesar pentru a face acest lucru să funcționeze.

Pasul 1: Echipament

  1. Raspberry Pi - Am folosit un Raspberry Pi 2B pe care l-am pus, dar puteți obține un Raspberry Pi 3 Starter Kit pentru aproximativ 100 CAD
  2. RGB LED Strip Light - Mă jucam cu Minger LED Strip Light 32,8ft / 10M 600leds RGB SMD 5050. Aceasta vine cu un controler și o sursă de alimentare pentru aproximativ 40 CAD
  3. Barrel Jack Connector - Am cumpărat unul de la magazinul meu local de electronice, ceva de genul acesta. Asigurați-vă că se potrivește cu sursa de alimentare
  4. Conectori jumper / sârmă - am avut niște cabluri de conectare de la mamă la tată și unele sârme de 22 gauge solid conectate în jur
  5. Placă de prăjit fără sudură Placă PCB cu prototip - ceva de genul acesta
  6. 3 rezistențe de 10kΩ
  7. 3 x MOSFET-uri cu canal N pentru controlul LED-urilor - Am cumpărat câteva IRL3303 de la magazinul meu electronic local. Este important ca tensiunea pragului porților să fie maximă. 3,3V astfel încât să poată fi acționat de pinii RPi; de obicei notat cu un „L” (nivel logic) în nume.

Pasul 2: Configurarea Raspberry Pi

Sistem de operare

În mod normal, folosesc cea mai recentă versiune Raspbian. Descărcați imaginea și scrieți-o pe cardul SD. Dacă utilizați un computer Windows, puteți utiliza Win32 Disk Imager pentru a scrie imaginea pe cardul SD.

Node.js

Instalați cea mai recentă versiune a Node.js. La momentul scrierii, folosesc 8.9.1

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

sudo apt-get install nodejs

Instalați Git

sudo apt-get install git

Pasul 3: Pi-blaster

Pi-blaster
Pi-blaster

pi-blaster activează PWM pe pinii GPIO pe care îi solicitați unui Raspberry Pi. Tehnica utilizată este extrem de eficientă: nu folosește CPU și oferă impulsuri foarte stabile.

Această modulare a lățimii pulsului permite Raspberry Pi să controleze cât de strălucitoare sunt fiecare dintre canalele roșu, verde și albastru pentru banda LED.

Mai întâi, clonați depozitul

cd / opt /

sudo git clone https://github.com/sarfata/pi-blaster.git sudo chown -R pi: pi pi-blaster

Apoi, construiți și instalați

cd / opt / pi-blaster./autogen.sh &&./configure && make && sudo make install

În cele din urmă, configurați ce pini doriți să utilizați

Sub contul root sau utilizând sudo, creați și editați fișierul

/ etc / default / pi-blaster

Adăugați următoarele rânduri

DAEMON_OPTS = - gpio 23, 24, 25

Acești pini gpio trebuie să se potrivească cu pinii pe care îi conectați la banda LED.

NOTĂ: Există o diferență între GPIO și numărul pinului. Acest exemplu folosește următoarele

LED - Albastru, GPIO-23, Pin - 16

LED - Roșu, GPIO-24, Pin - 18 LED - Verde, GPIO-25, Pin - 22

Modificări suplimentare

Porniți pi-blaster

sudo service pi-blaster start

Reporniți pi-blaster

sudo service pi-blaster restart

Oprește pi-blasterul

sudo service pi-blaster stop

Porniți pi-blaster automat la momentul pornirii

sudo systemctl activează pi-blaster

Avertismente și alte avertismente

Pinii utilizați de pi-blaster vor fi configurați ca ieșiri. Nu conectați ceva la o intrare sau s-ar putea să o distrugeți! Acest daemon folosește generatorul hardware PWM al raspberry pi pentru a obține temporizări precise. Acest lucru ar putea interfera cu ieșirea plăcii dvs. de sunet.

Pasul 4: Configurarea exemplului de cod

Clonați exemplul de cod

1. Configurați un folder de bază în care să instalați

cd / opt

sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock

2. Clonați exemplul de depozit git

git clone

sau

git clone [email protected]: haydockjp / color-pi.git

3. Instalați dependențele

cd color-pi

instalare npm

Acest lucru ar putea dura 2-3 minute

4. Acest proiect trebuie să comunice prin HTTPS și WSS. În acest moment cylon-api-socketio nu acceptă conexiuni SSL. Există o cerere de extragere deschisă pentru a adăuga acest suport, dar până când acesta nu va fi îmbinat, există un fișier patch în acest depozit. Rulați următoarea comandă după instalarea npm

git checkout node_modules / cylon-api-socketio / lib / api.js

Pasul 5: Creați un certificat SSL auto-semnat

1. Creați un fișier cu cheie privată

cd /opt/com.jonhaydock/colour-pi/certs

openssl genrsa -out color-pi-key.pem 2048

2. Creați un CSR (Cerere de semnare a certificatului)

openssl req -new -key color-pi-key.pem -out color-pi-csr.pem

În acest moment vi se va solicita câteva informații pentru solicitarea certificatului. Deoarece acesta este un certificat autosemnat, depinde de dvs. cât de precis completați detaliile. Iată un exemplu

Nume țară (cod cu 2 litere) [AU]: CA

Numele statului sau al provinciei (numele complet) [Unul stat]: Columbia Britanică Numele localității (de exemplu, oraș) : Denumirea organizației din Vancouver (de exemplu, companie) [Internet Widgits Pty Ltd]: Denumirea unității organizaționale Color Pi (de exemplu, secțiunea) : Nume comun (de exemplu, FQDN server sau numele TĂU) : color-pi Adresa de e-mail : [email protected]

O parolă de provocare :

Un nume de companie opțional :

În acest exemplu, trebuie doar să apăsați pe return pentru a lăsa necompletată parola de provocare

3. Generați certificatul

openssl x509 -req -days 1095 -in color-pi-csr.pem -signkey color-pi-key.pem -out color-pi-cert.pem

4. Pentru o securitate suplimentară, vom crea și un fișier Diffie Hellman Parameters

openssl dhparam -out dh_2048.pem 2048

Acest lucru ar putea dura 15-20 de minute

Pasul 6: Cablarea circuitului

Cablarea circuitului
Cablarea circuitului
Cablarea circuitului
Cablarea circuitului
Cablarea circuitului
Cablarea circuitului
Cablarea circuitului
Cablarea circuitului

Alimentarea benzii LED

Banda LED este alimentată de 12 volți. Raspberry Pi este capabil să producă doar 3.3v sau 5v și nu este capabil să scoată nicăieri lângă amplificatorii necesari pentru a conduce atât de multe LED-uri.

Este important să nu conectați sursa de alimentare de 12 volți la Raspberry Pi. Tranzistoarele MOSFET cu canal N sunt utilizate pentru a separa 3.3v de pe pinii RPi și 12v de la sursa de alimentare cu LED.

MOSFET are trei pini Gate, Drain și Source. Dacă nu sunteți sigur cu privire la care este Google pentru foaia de date a tranzistorului pe care îl utilizați, de ex. IRL3303

Vom conecta pinul Raspberry Pi la poartă, firul LED la canalul de scurgere și o masă comună la sursă. Când pinul crește, tensiunea dintre canalul de scurgere și sursă va activa poarta și va conecta poarta la sursă.

De asemenea, vom pune rezistențe de 10kΩ pe poartă și sursă, astfel încât atunci când pinul RPi este ridicat, putem proteja pinul prin reducerea curentului care trece prin el.

Efectuați pașii următori pe propriul risc. Nu îmi asum responsabilitatea pentru nimic care ar putea merge prost

Există o imagine încântătoare și o fotografie a circuitului real de mai sus.

Aș recomanda să faceți acest lucru în timp ce alimentarea este oprită pentru RPi și banda LED

Configurați circuitele tranzistorului, câte unul pe fiecare canal de culoare

  1. Introduceți unul dintre tranzistoare în panoul de verificare așa cum se arată în diagramă
  2. Introduceți unul dintre rezistențele de 10 kΩ pe canalele de scurgere și sursa tranzistorului. Acesta este primul și ultimul pin
  3. Utilizați câteva fire pentru a conecta pinul sursă (ultimul pin) la solul de pe panou
  4. Repetați pașii 1 - 3 încă două ori, astfel încât să aveți trei seturi - unul pe culoare (roșu, verde și albastru)

Conectați pinii RPi la placă

  1. Conectați pinul 16 la pinul de poartă (primul pin) al primului tranzistor - Acesta va fi canalul LED albastru
  2. Conectați pinul 18 la pinul de poartă (primul pin) al primului tranzistor - Acesta va fi canalul cu LED roșu
  3. Conectați pinul 20 la cel al liniilor de masă de pe partea laterală a panoului de control
  4. Conectați pinul 22 la pinul de poartă (primul pin) al primului tranzistor - Acesta va fi canalul LED verde

Am folosit culori potrivite ale firelor cu LED-urile: albastru, roșu și verde. Am folosit negru pentru sol

Conectați Barrel Jack

  1. Conectați un fir alb la capătul + al cricului butoiului
  2. Conectați un fir negru la - capătul cricului butoiului
  3. Conectați firul negru la aceeași linie de masă de pe panou la care a fost conectat pinul RPi 20
  4. Conectați firul alb la linia + de pe panou

Conectarea benzii LED

Banda mea cu LED-uri a venit cu un conector care avea o dimensiune suficient de bună încât să poată fi conectat temporar la panoul de control. Am împins conectorul în panou și l-am conectat la testul circuitului.

  1. Primul tranzistor conectat la pinul 16. Am rulat un fir albastru de la pinul de scurgere (pinul de mijloc) la firul albastru de pe conectorul benzii LED
  2. Al doilea tranzistor conectat la pinul 18. Am rulat un fir roșu de la

    Scurgere

    pin (pinul central) la firul roșu de pe conectorul benzii LED

  3. Al treilea tranzistor conectat la pinul 22. Am rulat un fir verde de la

    Scurgere

    pin (pinul central) la firul verde de pe conectorul benzii LED

  4. În cele din urmă, am rulat un fir alb de pe linia + de pe panoul care era conectat la mufa butoiului, la firul alb de pe conectorul benzii LED.

Putere

După verificarea circuitului, ar trebui să fiți bine să porniți Raspberry Pi și să conectați sursa de 12V la mufa baril.

Pasul 7: Cod lateral server

Cod lateral server
Cod lateral server

Rularea codului lateral server

cd /opt/com.jonhaydock/colour-pi

sudo npm start

Aceasta va porni serverul web și va începe să asculte cererile HTTPS și WSS.

NOTĂ: Nu uitați să rulați mai întâi pi-blaster

variabile de mediu

Portul implicit al site-ului web este 443, dar îl puteți suprascrie setând o variabilă de mediu înainte de a porni codul. De exemplu

export COLOUR_PI_PORT = 2443

Portul de socket web implicit este 1443, dar puteți suprascrie setând o variabilă de mediu înainte de a porni codul. De exemplu

export COLOUR_PI_WSS_PORT = 3443

Notă: întrucât socketul web este gestionat de cylon.js și nu de site-ul principal, acestea trebuie să fie pe diferite porturi

Știfturile care sunt utilizate pentru albastru (pinul 16), verde (pinul 18) și roșu (pinul 22) pot fi, de asemenea, suprascrise. De exemplu

export COLOUR_PI_PIN_BLUE = 36

export COLOUR_PI_PIN_RED = 38 export COLOUR_PI_PIN_GREEN = 40

Notă: acestea trebuie să se potrivească cu pinii fizici pe care i-ați folosit. Dacă le schimbați, va trebui, de asemenea, să actualizați GPIO-urile definite în fișierul / etc / default / pi-blaster. De exemplu

DAEMON_OPTS = - gpio 16, 20, 21

Codul principal al serverului poate fi găsit în fișierul app.js. Acest fișier pornește serverul web HTTPS și, de asemenea, prin cadrul Cylon.js, folosește socket.io pentru a asculta cererile de socket web pe un port separat.

Pentru a accesa site-ul web, ar trebui să deschideți un browser web pe computerul dvs. principal (am testat acest lucru numai în Chrome) și să utilizați adresa IP a Raspberry Pi, de ex.

10.0.1.2/

Puteți afla adresa dvs. IP din linia de comandă Raspberry Pi.

ifconfig

Serverul web va difuza orice conținut din folderul public. Implicit este afișarea paginii index.html.

Cylon.js creează un punct final pe care îl puteți conecta Socket.io.

10.0.1.2:1443/api/robots/colour-pi

Puteți trimite un mesaj set_colour prin soclu pentru a seta valorile roșu, verde și albastru

device.emit ('set_colour', r, g, b)

Care apelează comanda set_colour, care apelează funcția setColour din app.js. Această funcție setează nivelurile de luminozitate, pentru fiecare dintre valorile R, G și B, între 0 și 255. Unde 0 este dezactivat și 255 este complet activat.

de exemplu.

Roșu r = 255, g = 0, b = 0

Verde r = 0, g = 255, b = 0 Albastru r = 0, g = 0, b = 255 Alb r = 255, g = 255, b = 255 Negru / Off r = 0, g = 0, b = 0

Pasul 8: Codul site-ului web

Codul site-ului web
Codul site-ului web

General

Site-ul web utilizează recunoașterea vocală pentru a selecta culorile dintr-o listă predefinită. Pentru a adăuga o culoare la listă, editați fișierul de pe server: public / data / colours.json

de exemplu.

"roșu": "# FF0000", Când se găsește o culoare sau este selectată din meniul derulant, caseta de ieșire va fi setată la acea culoare și un mesaj va fi trimis prin socket.io către Raspnerry Pi, care va seta LED-urile la aceeași culoare.

NOTĂ: în funcție de cât de bune sunt LED-urile dvs., puteți vedea sau nu o culoare similară. Unele sunt mai ușor de duplicat decât altele

Când încărcați site-ul web pentru prima dată, deoarece utilizați un certificat SSL auto-semnat, va trebui să confirmați acest lucru în browser. Ar trebui să vedeți o alertă de securitate despre certificat.

Recunoaștere vocală

Această casetă are o pictogramă de microfon. Dacă faceți clic pe pictogramă când este verde, aceasta va începe să asculte culorile. În timp ce ascultă, va deveni roșu. Va asculta pentru o perioadă scurtă de timp și apoi se va opri. Dacă faceți clic pe pictograma microfonului când este roșu, acesta îl va opri și din ascultare.

Deoarece acest site trebuie să vă acceseze microfonul, va trebui să îi acordați permisiunea atunci când vi se solicită

NOTĂ: Aveți nevoie de un microfon pentru această parte. Eu o folosesc pe cea de pe camera web.

Transcriere intermediară

Această casetă urmărește presupunerile cuvintelor pe care le spuneți, așa cum le spuneți.

Transcriere finală

Această casetă urmărește presupunerea finală a ceea ce ai spus.

Culori cunoscute

Aceasta este o listă cu toate culorile despre care știe pagina. Este creat din fișierul colours.json. Dacă selectați una dintre aceste culori, pagina va rosti culoarea și va seta culoarea de ieșire.

NOTĂ: Aveți nevoie de difuzoare sau căști pentru a auzi discursul

Culori găsite

În prezent, această pagină web acceptă doar potrivirea culorii. Dacă cuvântul sau cuvintele pe care le-ați rostit în microfon se potrivește cu numele unei culori cunoscute sau selectați o culoare din lista Culoare cunoscută, aceasta va fi adăugată aici ca jurnal.

Ieșire

Ultima culoare găsită va fi afișată aici. Valoarea Color Hex (de ex. # 7cb9e8) și valoarea RGB (de ex. 124, 185, 232) vor fi afișate ca text, iar fundalul casetei din mijloc va fi setat la culoarea reală.

Această culoare este, de asemenea, trimisă la Raspberry Pi și ar trebui să vedeți culoarea benzii LED schimbată.

NOTĂ: dacă nu vedeți schimbarea culorii LED-ului, încercați să reporniți pi-blaster și / sau aplicația node.js

sudo service pi-blaster restart

sudo npm start

Voci cunoscute

Această casetă afișează o listă de „voci cunoscute” din speechSynthesis acceptat. Selectarea uneia dintre aceste voci va schimba vocea și limba pe care o veți auzi și va rosti numele vocii.

De asemenea, va schimba limba SpeechRecognition pentru a fi aceeași cu cea aleasă în listă.

Pasul 9: În cele din urmă

Image
Image

Iată un exemplu de ceea ce ar trebui să vedeți.

Vă rog să-mi spuneți dacă aveți vreo problemă și vă pot actualiza după cum este necesar.

Recomandat: