Cuprins:
- Pasul 1: Echipament
- Pasul 2: Configurarea Raspberry Pi
- Pasul 3: Pi-blaster
- Pasul 4: Configurarea exemplului de cod
- Pasul 5: Creați un certificat SSL auto-semnat
- Pasul 6: Cablarea circuitului
- Pasul 7: Cod lateral server
- Pasul 8: Codul site-ului web
- Pasul 9: În cele din urmă
Video: Color-pi: 9 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:46
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
- 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
- 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
- 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
- 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
- Placă de prăjit fără sudură Placă PCB cu prototip - ceva de genul acesta
- 3 rezistențe de 10kΩ
- 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 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
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
- Introduceți unul dintre tranzistoare în panoul de verificare așa cum se arată în diagramă
- Introduceți unul dintre rezistențele de 10 kΩ pe canalele de scurgere și sursa tranzistorului. Acesta este primul și ultimul pin
- Utilizați câteva fire pentru a conecta pinul sursă (ultimul pin) la solul de pe panou
- 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ă
- Conectați pinul 16 la pinul de poartă (primul pin) al primului tranzistor - Acesta va fi canalul LED albastru
- Conectați pinul 18 la pinul de poartă (primul pin) al primului tranzistor - Acesta va fi canalul cu LED roșu
- Conectați pinul 20 la cel al liniilor de masă de pe partea laterală a panoului de control
- 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
- Conectați un fir alb la capătul + al cricului butoiului
- Conectați un fir negru la - capătul cricului butoiului
- Conectați firul negru la aceeași linie de masă de pe panou la care a fost conectat pinul RPi 20
- 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.
- 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
- 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
- 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
- Î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
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
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ă
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:
Cloud color controlat de aplicație: 7 pași (cu imagini)
Cloud color controlat de aplicație: Bună, în acest instructiv vă arăt cum să construiți o iluminare a camerei dintr-o rețea de cărare cu pietriș. Întregul lucru poate fi controlat prin WLAN cu o aplicație. Http://youtu.be/NQPSnQKSuoUT Au existat unele probleme cu proiectul. Dar până la urmă poți să-l faci
Cum se folosește Detect Color TCS3200 cu SkiiiD: 9 pași
Cum se folosește Detect Color TCS3200 cu SkiiiD: Un tutorial pentru dezvoltarea Detect Color TCS3200 cu skiiiD
DIY Arduino LED Color Organ 2.0: 5 pași
DIY Arduino LED Color Organ 2.0: În acest proiect vă voi arăta cum să construiți un Arduino LED Color Organ care reacționează la diferite benzi de frecvență din muzica dvs. cu spectacole de lumini. În cazul meu, lumina roșie reprezintă basul, lumina verde frecvențele medii, iar albastrul este nota înaltă
Tutorial: Cum se utilizează senzorul RGB Color Detector TCS230 cu Arduino UNO: 3 pași
Tutorial: Cum se utilizează senzorul RGB Color Detector TCS230 cu Arduino UNO: Descriere: Acest tutorial vă arată câțiva pași simpli despre cum să utilizați senzorul RGB Color Detector folosind Arduino Uno. La sfârșitul acestui tutorial, veți obține o serie de rezultate de comparație între câteva culori
DIY Control RGB LED Color via Bluetooth: 5 pași
DIY Control RGB LED Culoare prin Bluetooth: Becurile inteligente au crescut în popularitate în ultima perioadă și devin în mod constant o parte cheie a setului de instrumente pentru casă inteligentă. Becurile inteligente permit utilizatorului să-și controleze lumina printr-o aplicație specială de pe telefonul inteligent al utilizatorului; becul poate fi aprins