Innholdsfortegnelse:
- Trinn 1: Utstyr
- Trinn 2: Konfigurere Raspberry Pi
- Trinn 3: Pi-blaster
- Trinn 4: Konfigurere eksempelkoden
- Trinn 5: Lag et selvsignert SSL -sertifikat
- Trinn 6: Koble opp kretsen
- Trinn 7: Kode på serversiden
- Trinn 8: Nettstedskode
- Trinn 9: Til slutt
Video: Color-pi: 9 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:25
Denne instruksen viser hvordan du bruker en Raspberry Pi til å styre en RGB LED -stripe via et nettsted ved hjelp av Web Speech API -grensesnittene for SpeechRecognition og SpeechSynthesis.
Dette eksemplet viser hvordan
- Lag et grunnleggende nettsted ved hjelp av Node.js over
- Bruk Web Speech API -grensesnittene for SpeechRecognition og SpeechSynthesis.
- Bruk rammeverket Cylon.js for å kontrollere en RGB LED -stripe på en Raspberry Pi
- Kommuniser over WSS (Secure Web sockets) fra websiden til Cylon.js for å kontrollere fargen på LED -en
Merk
- Du trenger høyttalere eller hodetelefoner for å høre talesyntesen
- Du må gi tilgang til mikrofonen din for at stemmegjenkjenningen skal fungere
- Fordi denne tilgangen til mikrofonen din må nettstedet kjøres under
- Biblioteket cylon-api-socketio støtter ikke https for øyeblikket. Jeg har en pull-forespørsel som venter på å bli slått sammen, men til da må du erstatte /node_modules/cylon-api-socketio/lib/api.js med filen i dette depotet
- pi-blaster er nødvendig for å få dette til å fungere.
Trinn 1: Utstyr
- Raspberry Pi - Jeg brukte en Raspberry Pi 2B som jeg hadde liggende, men du kan få et Raspberry Pi 3 Starter Kit for rundt CAD 100
- RGB LED Strip Light - Jeg lekte med Minger LED Strip Light 32.8ft/10M 600leds RGB SMD 5050. Dette kommer med en kontroller og en strømforsyning for ca CAD 40
- Barrel Jack Connector - Jeg kjøpte en fra min lokale elektronikkbutikk, noe sånt som dette. Bare vær sikker på om den passer til strømforsyningen din
- Stikkontakter / ledning - Jeg hadde noen hun -til -mann -tilkoblingskabler og noen 22 gauge Solid hook up wire liggende
- Breadboard Solderless Prototype PCB Board - noe sånt som dette
- 3 x 10kΩ motstander
- 3 x N -kanal MOSFET -er for styring av lysdiodene - jeg kjøpte noen IRL3303 -er fra min lokale elektroniske butikk. Det er viktig at portens terskelspenning er maks. 3.3V slik at den kan drives av RPi -pinnene; vanligvis betegnet med et 'L' (logisk nivå) i navnet.
Trinn 2: Konfigurere Raspberry Pi
Operativsystem
Jeg bruker normalt den nyeste Raspbian -bygningen. Last ned bildet og skriv det til SD -kortet. Hvis du bruker en Windows -datamaskin, kan du bruke Win32 Disk Imager til å skrive bildet til SD -kortet.
Node.js
Installer den nyeste versjonen av Node.js. I skrivende stund bruker 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
Trinn 3: Pi-blaster
pi-blaster muliggjør PWM på GPIO-pinnene du ber om av en Raspberry Pi. Teknikken som brukes er ekstremt effektiv: bruker ikke CPU og gir veldig stabile pulser.
Denne pulsbreddemoduleringen lar Raspberry Pi kontrollere hvor lyst hver av de røde, grønne og blå kanalene er for LED -stripen.
Klon først depotet
cd /opt /
sudo git klon https://github.com/sarfata/pi-blaster.git sudo chown -R pi: pi pi-blaster
Deretter bygger og installerer du
cd/opt/pi-blaster./autogen.sh &&./configure && make && sudo make install
Til slutt, konfigurer hvilke pinner du vil bruke
Opprett og rediger filen under rotkontoen, eller ved hjelp av sudo
/etc/default/pi-blaster
Legg til følgende linjer
DAEMON_OPTS =-gpio 23, 24, 25
Disse gpio -pinnene må matche pinnene du kobler til LED -stripen.
MERK: Det er en forskjell mellom GPIO og pin -nummer. Dette eksemplet bruker følgende
LED - Blå, GPIO -23, Pin - 16
LED - Rød, GPIO -24, Pin - 18 LED - Grønn, GPIO -25, Pin - 22
Ekstra tilpasninger
Start pi-blaster
sudo service pi-blaster start
Start pi-blaster på nytt
sudo service pi-blaster omstart
Stopp pi-blaster
sudo service pi-blaster stopp
Start pi-blaster automatisk ved oppstart
sudo systemctl aktiver pi-blaster
Advarsler og andre forbehold
Pins som brukes av pi-blaster vil bli konfigurert som utganger. Ikke koble noe til en inngang, eller du kan ødelegge den! Denne demonen bruker maskinvare -PWM -generatoren til bringebærpi for å få presise tidspunkter. Dette kan forstyrre lydkortutgangen.
Trinn 4: Konfigurere eksempelkoden
Klon eksempelkoden
1. Sett opp en basismappe å installere i
cd /opt
sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock
2. Klon eksempelgit -depotet
git-klon
eller
git klon [email protected]: haydockjp/color-pi.git
3. Installer avhengighetene
cd farge-pi
npm installere
Dette kan ta 2-3 minutter
4. Dette prosjektet må kommunisere over HTTPS og WSS. For øyeblikket støtter cylon-api-socketio ikke SSL-tilkoblinger. Det er en åpen pull -forespørsel om å legge til denne støtten, men til det er slått sammen, er det en oppdateringsfil i dette depotet. Kjør følgende kommando etter npm installasjon
git checkout node_modules/cylon-api-socketio/lib/api.js
Trinn 5: Lag et selvsignert SSL -sertifikat
1. Opprett en privat nøkkelfil
cd /opt/com.jonhaydock/colour-pi/certs
openssl genrsa -out color-pi-key.pem 2048
2. Lag en CSR (forespørsel om sertifikatsignering)
openssl req -ny -key color-pi-key.pem -out color-pi-csr.pem
På dette tidspunktet vil du bli bedt om informasjon om sertifikatforespørselen. Siden dette er et selvsignert sertifikat, er det opp til deg hvor nøyaktig du fyller ut detaljene. Her er et eksempel
Landnavn (kode på 2 bokstaver) [AU]: CA
Stat eller provinsnavn (fullt navn) [Noen-delstat]: Lokalitetsnavn i British Columbia (f.eks. By) : Vancouver organisasjonsnavn (f.eks. Selskap) [Internet Widgits Pty Ltd]: Color Pi organisasjonsenhetsnavn (f.eks. Seksjon) : Vanlig navn (f.eks. Server FQDN eller DITT navn) : color-pi E-postadresse : [email protected]
Et utfordringspassord :
Et valgfritt firmanavn :
I dette eksemplet trykker du bare på retur for å la utfordringspassordet stå tomt
3. Generer sertifikatet
openssl x509 -req -dager 1095 -i color-pi-csr.pem -signkey color-pi-key.pem -out color-pi-cert.pem
4. For ekstra sikkerhet vil vi også opprette en Diffie Hellman Parameters -fil
openssl dhparam -out dh_2048.pem 2048
Dette kan ta 15-20 minutter
Trinn 6: Koble opp kretsen
Forsyner LED -stripen
LED -stripen drives av 12 volt. Raspberry Pi kan bare levere 3.3v eller 5v og er ikke i stand til å sende noen steder i nærheten av forsterkere som trengs for å drive så mange lysdioder.
Det er viktig å ikke koble 12 volt strømforsyningen til Raspberry Pi. N-kanal MOSFET-transistorer brukes til å skille 3.3v på RPi-pinnene og 12v på LED-strømforsyningen.
MOSFET har tre pinner Gate, Drain og Source. Hvis du ikke er sikker på hvilken som er hvilken google for databladet til transistoren du bruker, f.eks. IRL3303
Vi skal koble Raspberry Pi -pinnen til porten, LED -ledningen til avløpet og et felles grunnlag til kilden. Når pinnen går høyt, vil spenningen mellom avløpet og kilden aktivere porten og koble porten til kilden.
Vi skal også sette 10kΩ motstander over porten og kilden, slik at når vi RPi -pinnen er høy, kan vi beskytte pinnen ved å redusere strømmen som går gjennom den.
Utfør de neste trinnene på egen risiko. Jeg tar ikke ansvar for noe som kan gå galt
Det er et fritzing -bilde og et bilde av den faktiske kretsen ovenfor.
Jeg vil anbefale å gjøre dette mens strømmen er slått av for RPi og LED -stripen
Sett opp transistorkretsene, en per fargekanal
- Sett inn en av transistorene i brødbrettet som vist på diagrammet
- Sett inn en av 10kΩ -motstandene over avløpet og kildestiftene på transistoren. Dette er den første og siste pinnen
- Bruk en ledning for å koble kildepinnen (siste pinnen) til bakken på brødbrettet
- Gjenta trinn 1 - 3 to ganger til, slik at du har tre sett - ett per farge (rødt, grønt og blått)
Koble RPi -pinnene til brettet
- Koble Pin 16 til Gate Pin (første pin) på den første transistoren - Dette vil være den blå LED -kanalen
- Koble Pin 18 til Gate Pin (første pin) på den første transistoren - Dette vil være den røde LED -kanalen
- Koble pin 20 til en av bakkelinjene på siden av brødbrettet
- Koble Pin 22 til Gate Pin (første pin) på den første transistoren - Dette vil være den grønne LED -kanalen
Jeg har brukt matchende trådfarger til lysdiodene: Blå, rød og grønn. Jeg har brukt svart til bakken
Koble tønnekontakten
- Koble en hvit ledning til + enden av fatkontakten
- Koble en svart ledning til - enden av fatkontakten
- Koble den svarte ledningen til den samme jordlinjen på brødbrettet som RPi Pin 20 var koblet til
- Koble den hvite ledningen til + -linjen på brødbrettet
Koble til LED -stripen
LED -stripen min kom med en kontakt som var av en god nok størrelse til at den midlertidig kunne plugges inn i brødbrett. Jeg presset kontakten i brødbrettet og koblet den til testen av kretsen.
- Den første transistoren koblet til pin 16. Jeg kjørte en blå ledning fra dreneringsstiftet (midtre pin) til den blå ledningen på LED -stripekontakten
- Den andre transistoren koblet til Pin 18. Jeg kjørte en rød ledning fra
Avløp
pin (midtre pin) til den røde ledningen på LED -stripekontakten
- Den tredje transistoren koblet til Pin 22. Jeg kjørte en grønn ledning fra
Avløp
pin (midtre pin) til den grønne ledningen på LED -stripekontakten
- Til slutt kjørte jeg en hvit ledning fra + -linjen på brødbrettet som var koblet til fatkontakten, til den hvite ledningen på LED -stripekontakten.
Makt
Etter å ha sjekket kretsen, bør du være flink til å slå på Raspberry Pi og koble 12V -forsyningen til fatkontakten.
Trinn 7: Kode på serversiden
Kjører koden på serversiden
cd /opt/com.jonhaydock/colour-pi
sudo npm start
Dette vil starte webserveren og begynne å lytte etter HTTPS- og WSS -forespørsler.
MERK: Husk å ha pi-blaster i gang først
Miljøvariabler
Standard nettstedport er 443, men du kan overstyre dette ved å angi en miljøvariabel før du starter koden. For eksempel
eksporter COLOUR_PI_PORT = 2443
Standard nettstikkport er 1443, men du kan overstyre dette ved å angi en miljøvariabel før du starter koden. For eksempel
eksporter COLOUR_PI_WSS_PORT = 3443
Merk: Siden nettkontakten håndteres av cylon.js og ikke hovednettstedet, må disse være på forskjellige porter
Pinnene som brukes til Blue (pin 16), Green (pin 18) og Red (pin 22) kan også overstyres. For eksempel
eksporter COLOUR_PI_PIN_BLUE = 36
eksport COLOUR_PI_PIN_RED = 38 eksport COLOUR_PI_PIN_GREEN = 40
Merk: Disse må samsvare med de fysiske pinnene du brukte. Hvis du endrer disse, må du også oppdatere GPIO-ene som er definert i filen/etc/default/pi-blaster. For eksempel
DAEMON_OPTS =-gpio 16, 20, 21
Hovedserverkoden finnes i app.js -filen. Denne filen starter HTTPS -webserveren, og bruker også socket.io for å lytte etter forespørsler om nettstikk via en separat port gjennom Cylon.js -rammeverket.
For å få tilgang til nettstedet, bør du åpne en nettleser på hoveddatamaskinen din (jeg har bare testet dette i Chrome) og bruke IP -adressen til Raspberry Pi, f.eks.
10.0.1.2/
Du kan finne ut IP -adressen din fra kommandolinjen Raspberry Pi.
ifconfig
Webserveren vil vise alt innhold under den offentlige mappen. Som standard vises index.html -siden.
Cylon.js oppretter et sluttpunkt som du kan koble til Socket.io.
10.0.1.2:1443/api/robots/colour-pi
Du kan sende en set_colour -melding til gjennom kontakten for å angi de røde, grønne og blå verdiene
device.emit ('sett_farge', r, g, b)
Som kaller kommandoen set_colour, som kaller setColour -funksjonen i app.js. Denne funksjonen angir lysstyrkenivåene for hver av R-, G- og B -verdiene mellom 0 og 255. Hvor 0 er av og 255 er fullt på.
f.eks.
Rød r = 255, g = 0, b = 0
Grønn r = 0, g = 255, b = 0 Blå r = 0, g = 0, b = 255 Hvit r = 255, g = 255, b = 255 Svart / Av r = 0, g = 0, b = 0
Trinn 8: Nettstedskode
Generell
Nettstedet bruker stemmegjenkjenning for å velge farger fra en forhåndsdefinert liste. For å legge til en farge på listen, rediger filen på serveren: public/data/colours.json
f.eks.
"rød": "#FF0000", Når en farge er funnet, eller valgt fra rullegardinmenyen, settes Output -boksen til den fargen, og en melding vil bli sendt gjennom socket.io til Raspnerry Pi, som vil sette lysdiodene til samme farge.
MERK: Avhengig av hvor gode lysdiodene dine er, kan det hende du ser en lignende farge eller ikke. Noen er lettere å kopiere enn andre
Når du laster nettstedet for første gang, ettersom du bruker et selvsignert SSL-sertifikat, må du bekrefte dette i nettleseren. Du bør se et sikkerhetsvarsel om sertifikatet.
Stemme gjenkjenning
Denne boksen har et mikrofonikon. Hvis du klikker på ikonet når det er grønt, begynner det å lytte etter farger. Mens den lytter, blir den rød. Den vil lytte en kort stund og deretter stoppe. Hvis du klikker på mikrofonikonet når det er rødt, stoppes det også fra å lytte.
Siden dette nettstedet trenger tilgang til mikrofonen din, må du gi den tillatelse når du blir bedt om det
MERK: Du trenger en mikrofon for denne delen. Jeg bruker den på webkameraet mitt.
Midlertidig utskrift
Denne boksen sporer gjetningene til ordene du sier, slik du sier dem.
Endelig utskrift
Denne boksen sporer det siste gjetningen er det du sa.
Kjente farger
Dette er en liste over alle fargene siden vet om. Den er opprettet fra filen colours.json. Hvis du velger en av disse fargene, vil siden snakke fargen og angi utdatafargen.
MERK: Du trenger høyttalere eller hodetelefoner for å høre talen
Fant farger
Denne nettsiden støtter for øyeblikket bare matchende farge. Hvis ordet eller ordene du snakket inn i mikrofonen samsvarer med navnet på en kjent farge, eller du velger en farge fra listen over kjente farger, vil den bli lagt til her som en logg.
Produksjon
Den siste funnet fargen vises her. Color Hex -verdien (f.eks. #7cb9e8) og RGB -verdien (f.eks. 124, 185, 232) vises som tekst, og bakgrunnen til boksen i midten vil bli satt til den faktiske fargen.
Denne fargen sendes også til Raspberry Pi, og du bør se fargen på LED -stripen endres.
MERK: hvis du ikke ser endringen i LED-fargen, kan du prøve å starte pi-blaster og/eller node.js-appen på nytt
sudo service pi-blaster omstart
sudo npm start
Kjente stemmer
Denne boksen viser en liste over "kjente stemmer" fra speechSynthesis som støttes. Hvis du velger en av disse stemmene, endres stemmen og språket du vil høre, og det vil snakke navnet på stemmen.
Det vil også endre språket i SpeechRecognition til å være det samme som det som ble valgt i listen.
Trinn 9: Til slutt
Her er et eksempel på hva du bør se.
Gi meg beskjed hvis du har problemer, og jeg kan oppdatere etter behov.
Anbefalt:
Hvordan bruke Detect Color TCS3200 med SkiiiD: 9 trinn
Hvordan bruke Detect Color TCS3200 med SkiiiD: En opplæring for å utvikle Detect Color TCS3200 med skiiiD
DIY Arduino LED Color Organ 2.0: 5 trinn
DIY Arduino LED Color Organ 2.0: I dette prosjektet vil jeg vise deg hvordan du bygger et Arduino LED Color Organ som reagerer på forskjellige frekvensbånd i musikken din med lysshow. I mitt tilfelle representerer det røde lyset bassen, grønt lys midtfrekvenser og blått er den høye tonen
Macintosh Classic II Color Hackintosh: 7 trinn (med bilder)
Macintosh Classic II Color Hackintosh: Mac Classic II (M4150 bygget i 1992), Historien om en Classic II Hackintosh. Jeg kom i besittelse av en vintage Mac Classic II fra 1992 og trodde det ville gjøre en flott konvertering. Etter lang tid med å lete etter LCD -panelet i riktig størrelse for å repla
Trafikklys / Feu Tri-Color!: 11 trinn
Traffic Light / Feu Tri-Color!: Aujourd'hui nous allons konstruere un Feu de sirkulasjonsprogrammerer i Arduino! Pour ce faire nous aurons besoin de: -Plaques de bois de 3 mm d'épaisseur-Papiers Calques épais-Colle-Perceuse- Arduino-Fiche Male -Câble électrique-Kit soudure-Un ordina
Arduino Brick Color Sorter Project: 5 trinn
Arduino Brick Color Sorter Project: I denne Arduino -opplæringen vil vi lære å oppdage farger på min leketøystein ved å bruke Arduino og TCS3200 fargesensor. Du kan lese den skrevne opplæringen nedenfor for flere detaljer.Materialer: Arduino Leonardo x 1TCS3200 x 1Masse papp180 Servo