Taula de continguts:

Color-pi: 9 passos
Color-pi: 9 passos

Vídeo: Color-pi: 9 passos

Vídeo: Color-pi: 9 passos
Vídeo: 10 AMAZING Acrylic Pour Paintings - Pretty with Pink / Satisfying Art video 2024, Octubre
Anonim
Color-pi
Color-pi

Aquest instructiu mostra com utilitzar un Raspberry Pi per controlar per veu una tira LED RGB, a través d’un lloc web, mitjançant les interfícies API Web Speech per a SpeechRecognition i SpeechSynthesis.

Aquest exemple mostra com fer-ho

  • Creeu un lloc web bàsic mitjançant Node.js mitjançant
  • Utilitzeu les interfícies de l'API Web Speech per al reconeixement de veu i la síntesi de veu.
  • Utilitzeu el marc Cylon.js per controlar una tira LED RGB en un Raspberry Pi
  • Comunicar-se a través de WSS (connexions web segures) des de la pàgina web a Cylon.js per controlar el color del LED

Nota

  • Necessitareu altaveus o auriculars per escoltar el sintetitzador de veu
  • Haureu de donar accés al vostre micròfon perquè el reconeixement de veu funcioni
  • Com que per accedir al vostre micròfon, el lloc ha de funcionar sota
  • La biblioteca cylon-api-socketio no admet https en aquest moment. Tinc una sol·licitud d'extracció que s'espera que es fusioni, però fins aleshores haureu de substituir /node_modules/cylon-api-socketio/lib/api.js pel fitxer d'aquest dipòsit.
  • es necessita pi-blaster per fer que això funcioni.

Pas 1: equipament

  1. Raspberry Pi: he utilitzat un Raspberry Pi 2B que tenia al voltant, però podeu obtenir un kit d’inici Raspberry Pi 3 per aproximadament 100 CAD
  2. Llum de tira LED RGB: jugava amb llum de tira LED Minger 32,8 peus / 10 M 600 leds RGB SMD 5050. Inclou un controlador i una font d'alimentació per aproximadament 40 CAD
  3. Connector Jack Barrel: en vaig comprar un a la meva botiga d’electrònica local, una cosa així. Assegureu-vos si s’adapta a la vostra font d’alimentació
  4. Connectors de pont / filferro: tenia alguns cables de connectors de femella a mascle i uns cables de connexió sòlids de calibre 22 que estaven al voltant
  5. Tauler de pa de prototip de placa sense soldar: una cosa així
  6. 3 x 10kΩ resistències
  7. 3 MOSFET de canal N per controlar els LED: he comprat alguns IRL3303 a la meva botiga electrònica local. És important que el voltatge del llindar de les portes sigui màxim. 3,3 V perquè es pugui accionar mitjançant els pins RPi; generalment es denota amb una 'L' (nivell lògic) al nom.

Pas 2: Configuració del Raspberry Pi

Sistema operatiu

Normalment faig servir la versió més recent de Raspbian. Descarregueu la imatge i escriviu-la a la targeta SD. Si utilitzeu un ordinador Windows, podeu utilitzar Win32 Disk Imager per escriure la imatge a la targeta SD.

Node.js

Instal·leu la versió més recent de Node.js. En el moment d’escriure, estic fent servir 8.9.1

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

sudo apt-get install nodejs

Instal·leu Git

sudo apt-get install git

Pas 3: Pi-blaster

Pi-blaster
Pi-blaster

pi-blaster habilita PWM als pins GPIO que sol·liciteu d'un Raspberry Pi. La tècnica utilitzada és extremadament eficient: no utilitza la CPU i dóna impulsos molt estables.

Aquesta modulació d’amplada de pols permet al Raspberry Pi controlar la brillantor de cadascun dels canals vermell, verd i blau per a la tira LED.

En primer lloc, cloneu el dipòsit

cd / opt /

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

A continuació, creeu i instal·leu

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

Finalment, configureu quins pins voleu utilitzar

Sota el compte root o amb sudo, creeu i editeu el fitxer

/ etc / default / pi-blaster

Afegiu les línies següents

DAEMON_OPTS = - gpio 23, 24, 25

Aquests pins gpio han de coincidir amb els pins que esteu connectant a la vostra tira LED.

NOTA: Hi ha una diferència entre GPIO i el número de pin. Aquest exemple utilitza el següent

LED - Blau, GPIO-23, Pin - 16

LED - vermell, GPIO-24, pin - 18 LED - verd, GPIO-25, pin - 22

Retocs addicionals

Inicia el pi-blaster

servei sudo pi-blaster start

Reinicieu pi-blaster

reinici del servei sudo pi-blaster

Atura el pi-blaster

servei sudo pi-blaster stop

Inicieu el pi-blaster automàticament en arrencar

sudo systemctl habilita pi-blaster

Advertiments i altres advertències

Els pins utilitzats per pi-blaster es configuraran com a sortides. No connecteu alguna cosa a una entrada o potser la destruireu! Aquest dimoni utilitza el generador de maquinari PWM del raspberry pi per obtenir temps precisos. Això pot interferir amb la sortida de la targeta de so.

Pas 4: Configuració del codi d'exemple

Cloneu el codi d'exemple

1. Configureu una carpeta base per instal·lar-la

cd / opt

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

2. Cloneu el repositori d'exemple git

git clone

o bé

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

3. Instal·leu les dependències

cd color-pi

Instal·lació de npm

Això pot trigar 2-3 minuts

4. Aquest projecte ha de comunicar-se mitjançant HTTPS i WSS. En aquest moment cylon-api-socketio no admet connexions SSL. Hi ha una sol·licitud de tracció oberta per afegir aquest suport, però fins que no es fusioni, hi ha un fitxer de pedaç en aquest dipòsit. Executeu l'ordre següent després de la instal·lació de npm

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

Pas 5: creeu un certificat SSL autofirmat

1. Creeu un fitxer de clau privada

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

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

2. Creeu una CSR (Sol·licitud de signatura de certificats)

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

En aquest moment se us demanarà informació sobre la sol·licitud de certificat. Com que es tracta d’un certificat autofirmat, depèn de la precisió que empleneu les dades. Aquí en teniu un exemple

Nom del país (codi de 2 lletres) [AU]: CA

Nom de l'estat o província (nom complet) [Alguns estats]: British Columbia Nom de la localitat (per exemple, ciutat) : Nom de l'organització de Vancouver (per exemple, empresa) [Internet Widgits Pty Ltd]: Color Pi Nom de la unitat organitzativa (per exemple, secció) : Nom comú (per exemple, nom de domini general del servidor o el vostre nom) : color-pi Adreça de correu electrònic : [email protected]

Una contrasenya de desafiament :

Nom de l'empresa opcional :

En aquest exemple, només cal prémer Retorn per deixar en blanc la contrasenya de desafiament

3. Generar el certificat

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

4. Per a més seguretat, també crearem un fitxer de Paràmetres Diffie Hellman

openssl dhparam -out dh_2048.pem 2048

Això pot trigar entre 15 i 20 minuts

Pas 6: Connexió del circuit

Cablatge del circuit
Cablatge del circuit
Cablatge del circuit
Cablatge del circuit
Cablatge del circuit
Cablatge del circuit
Cablatge del circuit
Cablatge del circuit

Alimentació de la tira LED

La tira LED funciona amb 12 volts. El Raspberry Pi només és capaç de generar 3,3v o 5v i no és capaç de sortir a prop dels amplificadors necessaris per conduir tants LED.

És important no connectar la font d'alimentació de 12 volts al Raspberry Pi. Els transistors MOSFET de canal N s’utilitzen per separar els 3,3 v dels pins RPi i els 12 v de la font d’alimentació LED.

El MOSFET té tres passadors Gate, Drain i Source. Si no esteu segur de quin és el google del full de dades del transistor que utilitzeu, p. IRL3303

Connectarem el pin Raspberry Pi a la porta, el cable LED al drenatge i un punt comú a la font. Quan el pin augmenta, el voltatge entre el drenatge i la font activarà la porta i connectarà la porta a la font.

També posarem resistències de 10 kΩ a través de la porta i la font, de manera que, quan el pin RPi sigui alt, puguem protegir el pin reduint el corrent que el travessa.

Realitzeu els passos següents sota el vostre propi risc. No assumeixo cap responsabilitat per qualsevol cosa que pugui sortir malament

Hi ha una imatge divertida i una foto del circuit real a sobre.

Recomanaria fer-ho mentre la RPi i la tira LED estiguin apagades

Configureu els circuits de transistors, un per canal de color

  1. Introduïu un dels transistors a la placa de configuració tal com es mostra al diagrama
  2. Inseriu un dels resistors de 10 kΩ a través dels drenatges i els pins Font del transistor. Aquest és el primer i últim pin
  3. Utilitzeu un cable per connectar el pin Source (darrer pin) a la terra de la placa
  4. Repetiu els passos 1 - 3 dos cops més, de manera que tingueu tres conjunts: un per color (vermell, verd i blau)

Connecteu els pins RPi al tauler

  1. Connecteu el pin 16 al pin de porta (primer pin) del primer transistor: aquest serà el canal LED blau
  2. Connecteu el pin 18 al pin de porta (primer pin) del primer transistor: aquest serà el canal LED vermell
  3. Connecteu el pin 20 a la de les línies de terra al lateral de la taula de treball
  4. Connecteu el pin 22 al pin de porta (primer pin) del primer transistor: aquest serà el canal LED verd

He utilitzat colors de filferro coincidents amb els LED: blau, vermell i verd. He utilitzat el negre per a terra

Connecteu el barril Jack

  1. Connecteu un cable blanc a l’extrem + de la presa de canó
  2. Connecteu un cable negre a l'extrem de la presa del canó
  3. Connecteu el cable negre a la mateixa línia de terra de la placa de connexió a la qual es connectava el pin RPi 20
  4. Connecteu el cable blanc a la línia + de la taula de treball

Connexió de la tira LED

La meva tira LED venia amb un connector prou bo que es podia connectar temporalment a la placa de suport. Vaig prémer el connector a la placa de connexió i el vaig connectar a la prova del circuit.

  1. El primer transistor es va connectar al pin 16. Vaig passar un cable blau des del pin de drenatge (pin central) fins al fil blau del connector de tira LED
  2. El segon transistor es va connectar al pin 18. Vaig passar un cable vermell des del

    Escórrer

    pin (pin central) al fil vermell del connector de la tira LED

  3. El tercer transistor es va connectar al pin 22. Vaig passar un cable verd des del

    Escórrer

    pin (pin central) al fil verd del connector de la tira LED

  4. Finalment, vaig passar un cable blanc des de la línia + de la placa de connexió que estava connectada a la presa del barril, fins al cable blanc del connector de la tira LED.

Potència

Després de comprovar el circuit, hauríeu de ser bo per encendre el Raspberry Pi i connectar el subministrament de 12 V a la presa de barril.

Pas 7: Codi lateral del servidor

Codi del servidor
Codi del servidor

Execució del codi del servidor

cd /opt/com.jonhaydock/colour-pi

sudo npm start

Això iniciarà el servidor web i començarà a escoltar les sol·licituds HTTPS i WSS.

NOTA: Recordeu que primer heu de funcionar amb pi-blaster

Variables del mediambient

El port del lloc web per defecte és 443, però podeu substituir-lo establint una variable d'entorn abans d'iniciar el codi. Per exemple

exportació COLOUR_PI_PORT = 2443

El port de sòcol web per defecte és 1443, però podeu substituir-lo establint una variable d'entorn abans d'iniciar el codi. Per exemple

exportació COLOUR_PI_WSS_PORT = 3443

Nota: com que el socket web el gestiona cylon.js i no el lloc web principal, cal que es trobin en diferents ports.

També es poden anul·lar els passadors que s’utilitzen per als colors Blau (pin 16), Green (pin 18) i Red (pin 22). Per exemple

exportació COLOUR_PI_PIN_BLUE = 36

exporta COLOUR_PI_PIN_RED = 38 exporta COLOUR_PI_PIN_GREEN = 40

Nota: cal que coincideixin amb els pins físics que heu utilitzat. Si els canvieu, també necessitareu actualitzar els GPIO definits al fitxer / etc / default / pi-blaster. Per exemple

DAEMON_OPTS = - gpio 16, 20, 21

El codi del servidor principal es troba al fitxer app.js. Aquest fitxer inicia el servidor web HTTPS i també, mitjançant el marc Cylon.js, utilitza socket.io per escoltar les sol·licituds de sòcol web en un port independent.

Per accedir al lloc web, heu d’obrir un navegador web a l’ordinador principal (només ho he provat a Chrome) i utilitzar l’adreça IP del Raspberry Pi, per exemple.

10.0.1.2/

Podeu trobar la vostra adreça IP a la línia d’ordres de Raspberry Pi.

ifconfig

El servidor web publicarà qualsevol contingut a la carpeta pública. Per defecte es mostra la pàgina index.html.

Cylon.js crea un punt final que podeu connectar a Socket.io.

10.0.1.2:1443/api/robots/colour-pi

Podeu enviar un missatge set_colour a través del sòcol per establir els valors vermell, verd i blau

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

Que crida l'ordre set_colour, que crida a la funció setColour a app.js. Aquesta funció estableix els nivells de brillantor, per a cadascun dels valors R, G i B, entre 0 i 255. Quan 0 estigui apagat i 255 estigui totalment activat.

per exemple.

Vermell r = 255, g = 0, b = 0

Verd r = 0, g = 255, b = 0 Blau r = 0, g = 0, b = 255 Blanc r = 255, g = 255, b = 255 Negre / Apagat r = 0, g = 0, b = 0

Pas 8: Codi del lloc web

Codi del lloc web
Codi del lloc web

General

El lloc web utilitza el reconeixement de veu per seleccionar els colors d’una llista predefinida. Per afegir un color a la llista, editeu el fitxer al servidor: public / data / colours.json

per exemple.

"red": "# FF0000", Quan es troba un color o es selecciona al menú desplegable, el quadre de sortida es configurarà en aquest color i s’enviarà un missatge a través de socket.io al Raspnerry Pi, que establirà els LEDs al mateix color.

NOTA: en funció de la qualitat dels vostres LEDs, podreu veure o no un color similar. Alguns són més fàcils de duplicar que d'altres

La primera vegada que carregueu el lloc web, ja que utilitzeu un certificat SSL autosignat, haureu de reconèixer-ho al navegador. Hauríeu de veure una alerta de seguretat sobre el certificat.

Reconeixement de veu

Aquesta caixa té una icona de micròfon. Si feu clic a la icona quan és verda, començarà a escoltar els colors. Mentre escolta, es tornarà vermell. Escoltarà una breu quantitat de temps i després s’aturarà. Si feu clic a la icona del micròfon quan és vermella, també s’aturarà l’escolta.

Com que aquest lloc necessita accedir al vostre micròfon, haureu de donar-li permís quan se us sol·liciti

NOTA: Necessiteu un micròfon per a aquesta part. Jo faig servir la de la meva càmera web.

Transcripció provisional

Aquest quadre fa un seguiment de les conjectures de les paraules que dieu, tal com les dieu.

Transcripció final

Aquesta caixa fa un seguiment de les suposicions finals del que heu dit.

Colors coneguts

Aquesta és una llista de tots els colors que coneix la pàgina. Es crea a partir del fitxer colours.json. Si seleccioneu un d'aquests colors, la pàgina pronunciarà el color i definirà el color de sortida.

NOTA: Necessiteu altaveus o auriculars per escoltar el discurs

Colors trobats

Actualment, aquesta pàgina web només admet la coincidència del color. Si la paraula o les paraules que heu parlat al micròfon coincideix amb el nom d'un color conegut o si seleccioneu un color de la llista de colors coneguts, s'afegiran aquí com a registre.

Sortida

Aquí es mostrarà el darrer color trobat. El valor hexadecimal del color (p. Ex., # 7cb9e8) i el valor RGB (p. Ex., 124, 185, 232) es mostraran com a text i el fons del quadre al mig es definirà al color real.

Aquest color també s’envia al Raspberry Pi i hauríeu de veure canviar el color de la tira LED.

NOTA: si no veieu el canvi de color del LED, proveu de reiniciar pi-blaster i / o l'aplicació node.js

reinici del servei sudo pi-blaster

sudo npm start

Veus conegudes

Aquest quadre mostra una llista de "Veus conegudes" de la síntesi de veu compatible. Si seleccioneu una d'aquestes veus, es canviarà la veu i l'idioma que escoltarà i es pronunciarà el nom de la veu.

També canviarà l'idioma del reconeixement de veu per ser el mateix que el triat a la llista.

Pas 9: Finalment

Image
Image

Aquí teniu un exemple del que heu de veure.

Feu-me saber si teniu algun problema i puc actualitzar-lo segons sigui necessari.

Recomanat: