Indholdsfortegnelse:
- Trin 1: Udstyr
- Trin 2: Opsætning af Raspberry Pi
- Trin 3: Pi-blaster
- Trin 4: Opsætning af eksempelkoden
- Trin 5: Opret et selvsigneret SSL -certifikat
- Trin 6: Tilslutning af kredsløbet
- Trin 7: Serverside kode
- Trin 8: Webstedskode
- Trin 9: Endelig
Video: Color-pi: 9 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:29
Denne instruktør viser, hvordan du bruger en Raspberry Pi til stemmestyring af en RGB LED -strip, via et websted, ved hjælp af Web Speech API -grænseflader til SpeechRecognition og SpeechSynthesis.
Dette eksempel viser, hvordan
- Opret et grundlæggende websted ved hjælp af Node.js over
- Brug Web Speech API -grænsefladerne til SpeechRecognition og SpeechSynthesis.
- Brug Cylon.js -rammen til at styre en RGB LED -strip på en Raspberry Pi
- Kommuniker over WSS (Secure Web sockets) fra websiden til Cylon.js for at styre farven på LED'en
Bemærk
- Du skal bruge højttalere eller hovedtelefoner for at høre talesynteseren
- Du skal give adgang til din mikrofon for at stemmegenkendelse kan fungere
- Fordi denne adgang til din mikrofon skal webstedet køres under
- Biblioteket cylon-api-socketio understøtter ikke https på nuværende tidspunkt. Jeg har en pull-anmodning, der venter på at blive flettet, men indtil da skal du udskifte /node_modules/cylon-api-socketio/lib/api.js med filen i dette lager
- pi-blaster er nødvendig for at få dette til at fungere.
Trin 1: Udstyr
- Raspberry Pi - Jeg brugte en Raspberry Pi 2B, som jeg havde liggende, men du kan få et Raspberry Pi 3 Starter Kit til omkring CAD 100
- RGB LED Strip Light - Jeg spillede med Minger LED Strip Light 32.8ft/10M 600leds RGB SMD 5050. Dette leveres med en controller og en strømforsyning til omkring CAD 40
- Barrel Jack Connector - Jeg købte en fra min lokale elektronikbutik, sådan noget. Bare sørg for, om den passer til din strømforsyning
- Jumper -stik / ledninger - jeg havde nogle hun -til -mand -stik kabler og nogle 22 gauge Solid hook up wire liggende
- Breadboard Loddefri Prototype PCB Board - sådan noget
- 3 x 10kΩ modstande
- 3 x N -kanal MOSFET'er til styring af lysdioderne - jeg købte nogle IRL3303'er fra min lokale elektroniske butik. Det er vigtigt, at portens tærskelspænding er maks. 3.3V, så den kan drives af RPi -benene; normalt betegnet med et 'L' (logisk niveau) i navnet.
Trin 2: Opsætning af Raspberry Pi
Operativ system
Jeg bruger normalt den nyeste Raspbian -build. Download billedet og skriv det til SD -kortet. Hvis du bruger en Windows -computer, kan du bruge Win32 Disk Imager til at skrive billedet til SD -kortet.
Node.js
Installer den nyeste version af Node.js. I skrivende stund bruger jeg 8.9.1
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install nodejs
Installer Git
sudo apt-get install git
Trin 3: Pi-blaster
pi-blaster muliggør PWM på de GPIO-ben, du anmoder om af en Raspberry Pi. Den anvendte teknik er ekstremt effektiv: bruger ikke CPU'en og giver meget stabile impulser.
Denne Pulse Width Modulation gør det muligt for Raspberry Pi at styre, hvor lyse hver af de røde, grønne og blå kanaler er for LED -strimlen.
Klon først depotet
cd /opt /
sudo git klon https://github.com/sarfata/pi-blaster.git sudo chown -R pi: pi pi-blaster
Byg og installer derefter
cd/opt/pi-blaster./autogen.sh &&./configure && make && sudo make install
Endelig skal du konfigurere, hvilke pins du vil bruge
Under rodkontoen eller ved hjælp af sudo skal du oprette og redigere filen
/etc/default/pi-blaster
Tilføj følgende linjer
DAEMON_OPTS =-gpio 23, 24, 25
Disse gpio -pins skal matche de ben, du tilslutter til din LED -strip.
BEMÆRK: Der er en forskel mellem GPIO og pinkode. Dette eksempel bruger følgende
LED - Blå, GPIO -23, Pin - 16
LED - Rød, GPIO -24, Pin - 18 LED - Grøn, GPIO -25, Pin - 22
Ekstra tweaks
Start pi-blaster
sudo service pi-blaster start
Genstart pi-blaster
sudo service pi-blaster genstart
Stop pi-blaster
sudo service pi-blaster stop
Start pi-blaster automatisk ved opstart
sudo systemctl aktiver pi-blaster
Advarsler og andre forbehold
Stifter, der bruges af pi-blaster, konfigureres som output. Slut ikke noget til en input, eller du ødelægger det! Denne dæmon bruger hardware PWM -generatoren til hindbærpi til at få præcise timinger. Dette kan forstyrre lydkortets output.
Trin 4: Opsætning af eksempelkoden
Klon eksempelkoden
1. Opret en basismappe at installere i
cd /opt
sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock
2. Klon eksemplet git repository
git-klon
eller
git klon [email protected]: haydockjp/color-pi.git
3. Installer afhængighederne
cd farve-pi
npm installation
Dette kan tage 2-3 minutter
4. Dette projekt skal kommunikere via HTTPS og WSS. På nuværende tidspunkt understøtter cylon-api-socketio ikke SSL-forbindelser. Der er en åben pull -anmodning om at tilføje denne support, men indtil det er flettet, er der en patch -fil i dette lager. Kør følgende kommando efter npm -installation
git checkout node_modules/cylon-api-socketio/lib/api.js
Trin 5: Opret et selvsigneret SSL -certifikat
1. Opret en privat nøglefil
cd /opt/com.jonhaydock/colour-pi/certs
openssl genrsa -out color-pi-key.pem 2048
2. Opret en CSR (anmodning om certifikatsignering)
openssl req -ny -key color-pi-key.pem -out color-pi-csr.pem
På dette tidspunkt bliver du bedt om nogle oplysninger til certifikatanmodningen. Da dette er et selvsigneret certifikat, er det op til dig, hvor præcist du udfylder detaljerne. Her er et eksempel
Landnavn (kode på 2 bogstaver) [AU]: CA
Stat eller provinsnavn (fuldt navn) [Nogle-delstat]: British Columbia-lokalitetsnavn (f.eks. By) : Vancouver-organisationsnavn (f.eks. Virksomhed) [Internet Widgits Pty Ltd]: Color Pi-organisationsenhedsnavn (f.eks. Sektion) : Almindeligt navn (f.eks. Server FQDN eller DIT navn) : color-pi E-mailadresse : [email protected]
En udfordringskodeord :
Et valgfrit firmanavn :
I dette eksempel skal du bare trykke på retur for at lade udfordringsadgangskoden være tom
3. Generer certifikatet
openssl x509 -req -days 1095 -i color-pi-csr.pem -signkey color-pi-key.pem -out color-pi-cert.pem
4. For ekstra sikkerhed opretter vi også en Diffie Hellman Parameters -fil
openssl dhparam -out dh_2048.pem 2048
Dette kan tage 15-20 minutter
Trin 6: Tilslutning af kredsløbet
Tænder LED -strimlen
LED -båndet drives af 12 volt. Raspberry Pi kan kun levere 3.3v eller 5v og er ikke i stand til at udsende nogen steder i nærheden af de forstærkere, der er nødvendige for at drive så mange lysdioder.
Det er vigtigt ikke at tilslutte 12 volt strømforsyningen til Raspberry Pi. N-kanal MOSFET-transistorer bruges til at adskille 3,3v på RPi-benene og 12v på LED-strømforsyningen.
MOSFET har tre ben Gate, Drain og Source. Hvis du ikke er sikker på, hvilken er hvilken google til databladet for transistoren, du bruger, f.eks. IRL3303
Vi kommer til at forbinde Raspberry Pi Pin til porten, LED -ledningen til afløbet og en fælles jord til kilden. Når stiften går højt, aktiverer spændingen mellem afløbet og kilden porten og forbinder porten med kilden.
Vi kommer også til at sætte 10kΩ modstande på tværs af porten og kilden, så når vi RPi -stiften er høj, kan vi beskytte stiften ved at reducere strømmen, der går igennem den.
Udfør de næste trin på egen risiko. Jeg tager intet ansvar for noget, der kan gå galt
Der er et spændende billede og et foto af det faktiske kredsløb ovenfor.
Jeg vil anbefale at gøre dette, mens der er slukket for RPi'en og LED -strimlen
Opsæt transistorkredsløbene, en pr. Farvekanal
- Indsæt en af transistorerne i brødbrættet som vist på diagrammet
- Indsæt en af de 10kΩ modstande på tværs af afløbet og kildestifterne på transistoren. Dette er den første og sidste pin
- Brug en eller anden ledning til at forbinde kildestiften (sidste stift) til jorden på brødbrættet
- Gentag trin 1 - 3 to gange mere, så du har tre sæt - et pr. Farve (rød, grøn og blå)
Tilslut RPi -benene til kortet
- Tilslut Pin 16 til Gate Pin (første pin) på den første transistor - Dette vil være den blå LED -kanal
- Tilslut Pin 18 til Gate Pin (første pin) på den første transistor - Dette vil være den røde LED -kanal
- Tilslut pin 20 til den ene af jordlinjerne på siden af brødbrættet
- Tilslut Pin 22 til Gate Pin (første pin) på den første transistor - Dette vil være den grønne LED -kanal
Jeg har brugt matchende trådfarver til lysdioderne: Blå, rød og grøn. Jeg har brugt sort til jorden
Tilslut Barrel Jack
- Tilslut en hvid ledning til + enden af tøndejackstikket
- Tilslut en sort ledning til - enden af tøndejackstikket
- Tilslut den sorte ledning til den samme jordlinje på brødbrættet, som RPi Pin 20 var forbundet til
- Tilslut den hvide ledning til + -linjen på brødbrættet
Tilslutning af LED -båndet
Min LED -strip kom med et stik, der var af en god nok størrelse, så det midlertidigt kunne sættes i brødbræt. Jeg skubbede stikket i brødbrættet og tilsluttede det til test af kredsløbet.
- Den første transistor tilsluttet Pin 16. Jeg løb en blå ledning fra afløbstappen (midterste pin) til den blå ledning på LED -båndstikket
- Den anden transistor tilsluttet Pin 18. Jeg løb en rød ledning fra
Dræne
pin (midterste pin) til den røde ledning på LED -båndstikket
- Den tredje transistor tilsluttet Pin 22. Jeg løb en grøn ledning fra
Dræne
pin (midterste pin) til den grønne ledning på LED -båndstikket
- Til sidst løb jeg en hvid ledning fra + -linjen på brødbrættet, der var forbundet til tønde -stikket, til den hvide ledning på LED -båndstikket.
Strøm
Efter at have kontrolleret kredsløbet, skal du være god til at tænde Raspberry Pi og tilslutte 12V -forsyningen til tøndejackstikket.
Trin 7: Serverside kode
Kører serversiden kode
cd /opt/com.jonhaydock/colour-pi
sudo npm start
Dette starter webserveren og begynder at lytte efter HTTPS- og WSS -anmodninger.
BEMÆRK: Husk først at have pi-blaster kørende
miljøvariabler
Standardwebstedets port er 443, men du kan tilsidesætte dette ved at indstille en miljøvariabel, før du starter koden. For eksempel
eksport COLOUR_PI_PORT = 2443
Standardwebstikporten er 1443, men du kan tilsidesætte dette ved at indstille en miljøvariabel, før du starter koden. For eksempel
eksporter COLOUR_PI_WSS_PORT = 3443
Bemærk: Da webstikket håndteres af cylon.js og ikke hovedwebstedet, skal disse være på forskellige porte
Stifterne, der bruges til blå (pin 16), grøn (pin 18) og rød (pin 22) kan også tilsidesættes. For eksempel
eksporter COLOUR_PI_PIN_BLUE = 36
eksport COLOUR_PI_PIN_RED = 38 eksport COLOUR_PI_PIN_GREEN = 40
Bemærk: Disse skal matche de fysiske stifter, du brugte. Hvis du ændrer disse, skal du også opdatere GPIO'erne, der er defineret i filen/etc/default/pi-blaster. For eksempel
DAEMON_OPTS =-gpio 16, 20, 21
Hovedserverkoden findes i filen app.js. Denne fil starter HTTPS -webserveren og bruger også via Cylon.js -rammen socket.io til at lytte efter webstikforespørgsler på en separat port.
For at få adgang til webstedet skal du åbne en webbrowser på din hovedcomputer (jeg har kun testet dette i Chrome) og bruge IP -adressen på Raspberry Pi, f.eks.
10.0.1.2/
Du kan finde ud af din IP -adresse fra kommandolinjen Raspberry Pi.
ifconfig
Webserveren serverer alt indhold under den offentlige mappe. Det er som standard at vise index.html -siden.
Cylon.js opretter et slutpunkt, som du kan forbinde Socket.io med.
10.0.1.2:1443/api/robots/colour-pi
Du kan sende en set_colour -meddelelse til via stikket for at indstille værdierne Rød, Grøn og Blå
device.emit ('set_colour', r, g, b)
Som kalder kommandoen set_colour, som kalder funktionen setColour i app.js. Denne funktion indstiller lysstyrkeniveauerne for hver af R-, G- og B -værdierne mellem 0 og 255. Hvor 0 er slukket og 255 er fuldt tændt.
f.eks.
Rød r = 255, g = 0, b = 0
Grøn r = 0, g = 255, b = 0 Blå r = 0, g = 0, b = 255 Hvid r = 255, g = 255, b = 255 Sort / Fra r = 0, g = 0, b = 0
Trin 8: Webstedskode
Generel
Websitet bruger stemmegenkendelse til at vælge farver fra en foruddefineret liste. Hvis du vil tilføje en farve til listen, skal du redigere filen på serveren: public/data/colours.json
f.eks.
"rød": "#FF0000", Når en farve er fundet eller valgt fra rullemenuen, vil Output -boksen blive indstillet til den farve, og en besked vil blive sendt via socket.io til Raspnerry Pi, som vil indstille LED'erne til den samme farve.
BEMÆRK: afhængigt af hvor gode dine lysdioder er, kan du måske eller måske ikke se en lignende farve. Nogle er lettere at kopiere end andre
Når du først indlæser webstedet, skal du bekræfte dette i browseren, da du bruger et selvsigneret SSL-certifikat. Du bør se en sikkerhedsadvarsel om certifikatet.
Stemmegenkendelse
Denne boks har et mikrofonikon. Hvis du klikker på ikonet, når det er grønt, begynder det at lytte efter farver. Mens den lytter, bliver den rød. Det vil lytte i kort tid og derefter stoppe. Hvis du klikker på mikrofonikonet, når det er rødt, stoppes det også fra at lytte.
Da dette websted skal have adgang til din mikrofon, skal du give det tilladelse, når du bliver bedt om det
BEMÆRK: Du skal bruge en mikrofon til denne del. Jeg bruger den på mit webkamera.
Midlertidig udskrift
Denne boks sporer gætterne på de ord, du siger, som du siger dem.
Endelig udskrift
Denne boks sporer det sidste gæt er, hvad du sagde.
Kendte farver
Dette er en liste over alle de farver, siden kender til. Den er oprettet ud fra filen colours.json. Hvis du vælger en af disse farver, taler siden farven og indstiller outputfarven.
BEMÆRK: Du skal bruge højttalere eller hovedtelefoner for at høre talen
Fundet farver
Denne webside understøtter i øjeblikket kun matchning af farven. Hvis det eller de ord, du talte i mikrofonen, matcher navnet på en kendt farve, eller du vælger en farve fra listen Kendte farver, tilføjes den her som en log.
Produktion
Den sidst fundne farve vises her. Color Hex -værdien (f.eks. #7cb9e8) og RGB -værdien (f.eks. 124, 185, 232) vises som tekst, og baggrunden for feltet i midten indstilles til den faktiske farve.
Denne farve sendes også til Raspberry Pi, og du skal se farven på LED -strimlen ændre sig.
BEMÆRK: hvis du ikke kan se LED-farveændringen, kan du prøve at genstarte pi-blaster og/eller node.js-appen
sudo service pi-blaster genstart
sudo npm start
Kendte stemmer
Denne boks viser en liste over "Kendte stemmer" fra den understøttede speechSynthesis. Hvis du vælger en af disse stemmer, ændres stemmen og det sprog, du vil høre, og den taler navnet på stemmen.
Det vil også ændre sproget i SpeechRecognition til at være det samme som det, der er valgt på listen.
Trin 9: Endelig
Her er et eksempel på, hvad du bør se.
Lad mig vide, hvis du har problemer, og jeg kan opdatere efter behov.
Anbefalede:
Sådan bruges Detect Color TCS3200 med SkiiiD: 9 trin
Sådan bruges Detect Color TCS3200 med SkiiiD: En tutorial til at udvikle Detect Color TCS3200 med skiiiD
Multi Color Dot Printer: 6 trin
Multi Color Dot Printer: Hej alle sammen. Denne instruktion handler om design og fremstilling af en flerfarvet prikprinter. Det var hovedsageligt baseret på et lignende arbejde, der allerede blev offentliggjort her i instruerbart. Det arbejde, jeg refererer til, er “Dotter: Huge Arduino Based Dot Matrix Pr
DIY Arduino LED Color Organ 2.0: 5 trin
DIY Arduino LED Color Organ 2.0: I dette projekt vil jeg vise dig, hvordan du bygger et Arduino LED Color Organ, der reagerer på forskellige frekvensbånd i din musik med lysshows. I mit tilfælde repræsenterer det røde lys bas, grønne lys mellemfrekvenser og blå er den høje tone
Macintosh Classic II Color Hackintosh: 7 trin (med billeder)
Macintosh Classic II Color Hackintosh: Mac Classic II (M4150 bygget i 1992), Historien om en Classic II Hackintosh. Jeg kom i besiddelse af en vintage Mac Classic II fra 1992 og troede, at det ville gøre en stor konvertering. Efter lang tids søgen efter LCD -panelet i den korrekte størrelse til at udskifte
Arduino Brick Color Sorter Project: 5 trin
Arduino Brick Color Sorter Project: I denne Arduino Tutorial vil vi lære at opdage farver på min legetøjssten ved hjælp af Arduino og TCS3200 farvesensor. Du kan læse den skrevne tutorial herunder for flere detaljer.Materialer: Arduino Leonardo x 1TCS3200 x 1Masser af pap180 Servo