Taula de continguts:
- Pas 1: equipament
- Pas 2: Configuració del Raspberry Pi
- Pas 3: Pi-blaster
- Pas 4: Configuració del codi d'exemple
- Pas 5: creeu un certificat SSL autofirmat
- Pas 6: Connexió del circuit
- Pas 7: Codi lateral del servidor
- Pas 8: Codi del lloc web
- Pas 9: Finalment
Vídeo: Color-pi: 9 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:16
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
- 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
- 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
- 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ó
- 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
- Tauler de pa de prototip de placa sense soldar: una cosa així
- 3 x 10kΩ resistències
- 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 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
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
- Introduïu un dels transistors a la placa de configuració tal com es mostra al diagrama
- 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
- Utilitzeu un cable per connectar el pin Source (darrer pin) a la terra de la placa
- 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
- Connecteu el pin 16 al pin de porta (primer pin) del primer transistor: aquest serà el canal LED blau
- Connecteu el pin 18 al pin de porta (primer pin) del primer transistor: aquest serà el canal LED vermell
- Connecteu el pin 20 a la de les línies de terra al lateral de la taula de treball
- 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
- Connecteu un cable blanc a l’extrem + de la presa de canó
- Connecteu un cable negre a l'extrem de la presa del canó
- 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
- 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.
- 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
-
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
-
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
- 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
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
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
Aquí teniu un exemple del que heu de veure.
Feu-me saber si teniu algun problema i puc actualitzar-lo segons sigui necessari.
Recomanat:
Seient calent: construeix un coixí escalfador que canvia de color: 7 passos (amb imatges)
Seient calent: construeix un coixí calefactiu que canvia el color: vols mantenir-te torrat els dies freds d’hivern? Hot Seat és un projecte que utilitza dues de les possibilitats de tèxtil electrònic més emocionants: el canvi de color i la calor. Construirem un coixí de seient que s’escalfi i, quan estigui llest, revelarà t
Núvol de color controlat per aplicació: 7 passos (amb imatges)
Núvol de color controlat per aplicació: Hola, en aquest instructiu us mostro com construir una il·luminació de l'habitació a partir d'una xarxa de camins de grava. Tot es pot controlar a través de WLAN amb una app.https: //youtu.be/NQPSnQKSuoUT Hi va haver alguns problemes amb el projecte. Però al final ho podeu fer amb enginy
Com utilitzar una fotocèl·lula per canviar el color del LED RGB: 3 passos
Com utilitzar una fotocèl·lula per canviar el color del LED RGB: per a la part 01 del meu projecte Arduino, la meva idea original era utilitzar un sensor de temperatura per encendre i apagar un LED, però, per desgràcia, el meu sensor de temperatura encara no havia vingut, cosa que em va deixar va triar entre els sensors disponibles al kit d’inici Elegoo i em vaig preguntar si
LED de canvi de color: 13 passos
LED de canvi de color: em van encarregar de crear un prototip amb algun tipus de sensor per generar una sortida. Vaig decidir utilitzar una fotocèl·lula, que mesura la quantitat de llum d'un entorn, i un LED RGB com a sortida. Sabia que volia incorporar la capacitat del LED
Làmpada sense fils per canviar el color basada en la inclinació fàcil de Rubik's Cube: 10 passos (amb imatges)
Canvi de color sense cables basat en la inclinació fàcil: làmpada de Rubik’s Cube: avui construirem aquesta impressionant làmpada de Rubik’s Cube que canvia de color segons el costat que estigui cap amunt. El cub funciona amb una petita bateria LiPo, carregada per un cable micro-usb estàndard i, en les meves proves, té una durada de la bateria de diversos dies. Això