INHOUDSOPGAWE:
- Stap 1: Toerusting
- Stap 2: Die opstel van die Raspberry Pi
- Stap 3: Pi-blaster
- Stap 4: Stel die voorbeeldkode op
- Stap 5: Skep 'n selfondertekende SSL -sertifikaat
- Stap 6: Bekabeling van die kring
- Stap 7: bedienerskantkode
- Stap 8: Webwerf -kode
- Stap 9: Laastens
Video: Kleur-pi: 9 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:27
Hierdie instruksies wys hoe u 'n Raspberry Pi kan gebruik om 'n RGB LED -strook via 'n webwerf te stembeheer, met behulp van die Web Speech API -interfaces vir SpeechRecognition en SpeechSynthesis.
Hierdie voorbeeld wys hoe om
- Skep 'n basiese webwerf met behulp van Node.js via
- Gebruik die Web Speech API -koppelvlakke vir SpeechRecognition en SpeechSynthesis.
- Gebruik die Cylon.js -raamwerk om 'n RGB LED -strook op 'n Raspberry Pi te beheer
- Kommunikeer oor WSS (Secure Web sockets) vanaf die webblad na Cylon.js om die kleur van die LED te beheer
Let op
- U benodig luidsprekers of koptelefoon om die spraaksintetiseerder te hoor
- U moet toegang tot u mikrofoon gee sodat die stemherkenning werk
- Omdat hierdie toegang tot u mikrofoon benodig, moet die webwerf onder HTTPS bestuur word
- Die biblioteek cylon-api-socketio ondersteun tans nie https nie. Ek wag op 'n trekversoek om saam te smelt, maar tot dan moet u die /node_modules/cylon-api-socketio/lib/api.js vervang met die lêer in hierdie bewaarplek
- pi-blaster is nodig om dit te laat werk.
Stap 1: Toerusting
- Raspberry Pi - Ek het 'n Raspberry Pi 2B gebruik wat ek rondgelê het, maar u kan 'n Raspberry Pi 3 Starter Kit vir ongeveer CAD 100 kry
- RGB LED Strip Light - ek speel met Minger LED Strip Light 32.8ft/10M 600leds RGB SMD 5050. Dit het 'n kontroleerder en 'n kragtoevoer vir ongeveer CAD 40
- Barrel Jack Connector - ek het so iets in my plaaslike elektroniese winkel gekoop. Maak net seker of dit by u kragtoevoer pas
- Jumperaansluitings / draad - ek het 'n paar vroulike tot manlike aansluitkabels en 'n 22 -meter soliede haakdraad gelê
- Breadboard Solderless Prototype PCB Board - iets soos hierdie
- 3 x 10kΩ weerstande
- 3 x N -kanaal MOSFET's vir die beheer van die LED's - ek het 'n paar IRL3303's by my plaaslike elektroniese winkel gekoop. Dit is belangrik dat die poort se drempelspanning 'n maksimum is. 3.3V sodat dit deur die RPi -penne aangedryf kan word; gewoonlik aangedui met 'n 'L' (logiese vlak) in die naam.
Stap 2: Die opstel van die Raspberry Pi
Bedryfstelsel
Ek gebruik gewoonlik die nuutste Raspbian -weergawe. Laai die prent af en skryf dit op die SD -kaart. As u 'n Windows -rekenaar gebruik, kan u Win32 Disk Imager gebruik om die prent op die SD -kaart te skryf.
Node.js
Installeer die nuutste weergawe van Node.js. Op die oomblik dat ek dit skryf, gebruik ek 8.9.1
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install nodejs
Installeer Git
sudo apt-get install git
Stap 3: Pi-blaster
pi-blaster maak PWM moontlik op die GPIO-penne wat u van 'n Raspberry Pi versoek. Die gebruikte tegniek is uiters doeltreffend: gebruik nie die SVE nie en gee baie stabiele pulse.
Met hierdie Pulse Width Modulation kan die Raspberry Pi beheer hoe helder elkeen van die rooi, groen en blou kanale vir die LED -strook is.
Kloon eers die bewaarplek
cd /opt /
sudo git kloon https://github.com/sarfata/pi-blaster.git sudo chown -R pi: pi pi-blaster
Bou en installeer dan
cd/opt/pi-blaster./autogen.sh &&./configure && make && sudo make install
Stel laastens op watter penne u wil gebruik
Skep en wysig die lêer onder die wortelrekening, of deur sudo te gebruik
/etc/default/pi-blaster
Voeg die volgende reëls by
DAEMON_OPTS =-gpio 23, 24, 25
Hierdie gpio -penne moet ooreenstem met die penne wat u met u LED -strook verbind.
LET WEL: daar is 'n verskil tussen GPIO en speldnommer. Hierdie voorbeeld gebruik die volgende
LED - blou, GPIO -23, pen - 16
LED - rooi, GPIO -24, pen - 18 LED - groen, GPIO -25, pen - 22
Ekstra aanpassings
Begin met pi-blaster
sudo service pi-blaster begin
Herbegin die pi-blaster
sudo service pi-blaster herbegin
Stop pi-blaster
sudo service pi-blaster stop
Begin outomaties met pi-blaster tydens opstart
sudo systemctl aktiveer pi-blaster
Waarskuwings en ander voorbehoud
Pennetjies wat deur pi-blaster gebruik word, sal as uitsette gekonfigureer word. Moenie iets aan 'n invoer koppel nie, anders kan u dit vernietig! Hierdie demoon gebruik die hardeware PWM -kragopwekker van die framboospi om presiese tydsberekeninge te kry. Dit kan u uitvoer van u klankkaart belemmer.
Stap 4: Stel die voorbeeldkode op
Kloon die voorbeeldkode
1. Stel 'n basismap op om in te installeer
cd /opt
sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock
2. Kloon die voorbeeld git -bewaarplek
git-kloon
of
git kloon [email protected]: haydockjp/color-pi.git
3. Installeer die afhanklikes
cd kleur-pi
npm installeer
Dit kan 2-3 minute neem
4. Hierdie projek moet oor HTTPS en WSS kommunikeer. Op die oomblik ondersteun cylon-api-socketio geen SSL-verbindings nie. Daar is 'n oop trek -versoek om hierdie ondersteuning by te voeg, maar totdat dit saamgevoeg is, is daar 'n pleisterlêer in hierdie bewaarplek. Voer die volgende opdrag uit na npm installasie
git checkout node_modules/cylon-api-socketio/lib/api.js
Stap 5: Skep 'n selfondertekende SSL -sertifikaat
1. Skep 'n private sleutel lêer
cd /opt/com.jonhaydock/colour-pi/certs
openssl genrsa -out color-pi-key.pem 2048
2. Skep 'n MVO (versoek om ondertekening van sertifikate)
openssl req -nuwe -key color-pi-key.pem -out color-pi-csr.pem
Op hierdie stadium sal u gevra word vir inligting oor die sertifikaatversoek. Aangesien dit 'n selfondertekende sertifikaat is, is dit aan u hoe akkuraat u die besonderhede moet invul. Hier is 'n voorbeeld
Landnaam (kode met 2 letters) [AU]: CA
Naam van die staat of provinsie (volle naam) ['n deelstaat]: Naam van die plek in British Columbia (bv. Stad) : Naam van die organisasie van Vancouver (bv. Die onderneming) [Internet Widgits Pty Ltd]: Naam van die organisasie-eenheid van Color Pi (bv.) : Algemene naam (bv. Bediener FQDN of JOU naam) : color-pi e-posadres : [email protected]
'N Uitdagingswagwoord :
'N Opsionele maatskappynaam :
Druk in hierdie voorbeeld net terug om die uitdagingswagwoord leeg te laat
3. Genereer die sertifikaat
openssl x509 -req -dae 1095 -in color-pi-csr.pem -signkey color-pi-key.pem -out color-pi-cert.pem
4. Vir ekstra sekuriteit sal ons ook 'n Diffie Hellman Parameters -lêer skep
openssl dhparam -out dh_2048.pem 2048
Dit kan 15-20 minute neem
Stap 6: Bekabeling van die kring
Skakel die LED -strook aan
Die LED -strook word aangedryf deur 12 volt. Die Raspberry Pi kan slegs 3.3v of 5v lewer en kan nie naby die versterkers kom wat nodig is om soveel LED's aan te dryf nie.
Dit is belangrik om nie die 12 volt -kragtoevoer aan die Raspberry Pi te koppel nie. N-kanaal MOSFET-transistors word gebruik om die 3.3v op die RPi-penne en die 12v van die LED-kragtoevoer te skei.
Die MOSFET het drie penne Gate, Drain en Source. As u nie seker is watter Google is vir die datablad van die transistor wat u gebruik nie, bv. IRL3303
Ons gaan die Raspberry Pi -pen aan die poort koppel, die LED -draad na die drein en 'n gemeenskaplike grond aan die bron. As die pen hoog word, sal die spanning tussen die dreinering en die bron die hek aktiveer en die hek aan die bron koppel.
Ons gaan ook 10kΩ weerstande oor die poort en die bron plaas, sodat wanneer ons die RPi -pen hoog is, ons die pen kan beskerm deur die stroom wat daardeur gaan, te verminder.
Voer die volgende stappe op eie risiko uit. Ek neem geen verantwoordelikheid vir enigiets wat verkeerd kan gaan nie
Daar is 'n opwindende beeld en 'n foto van die werklike stroombaan hierbo.
Ek beveel aan dat u dit doen terwyl die RPi en die LED -strook af is
Stel die transistorkringe op, een per kleurkanaal
- Plaas een van die transistors in die broodbord soos in die diagram getoon
- Plaas een van die 10kΩ weerstande oor die drein en die bronpenne van die transistor. Dit is die eerste en laaste pen
- Koppel die Bronpen (laaste pen) met 'n draad aan die grond op die broodbord
- Herhaal stappe 1 - 3 nog twee keer, sodat u drie stelle het - een per kleur (rooi, groen en blou)
Koppel die RPi -penne aan die bord
- Koppel pen 16 aan die hekpen (eerste pen) van die eerste transistor - Dit is die Blue LED -kanaal
- Koppel pen 18 aan die hekpen (eerste pen) van die eerste transistor - dit is die rooi LED -kanaal
- Koppel pen 20 aan die een van die grondlyne aan die kant van die broodbord
- Koppel pen 22 aan die hekpen (eerste pen) van die eerste transistor - Dit is die groen LED -kanaal
Ek het ooreenstemmende draadkleure met die LED's gebruik: blou, rooi en groen. Ek het swart vir die grond gebruik
Koppel die Barrel Jack
- Koppel 'n wit draad aan die + -kant van die vataansluiting
- Koppel 'n swart draad aan die - einde van die vataansluiting
- Koppel die swart draad aan dieselfde grondlyn op die broodbord waarop die RPi Pin 20 gekoppel was
- Koppel die wit draad aan die + -lyn op die broodbord
Verbind die LED -strook
My LED -strook het 'n aansluiting van 'n goeie grootte sodat dit tydelik in 'n broodbord geplaas kan word. Ek het die aansluiting in die broodbord gedruk en aan die toets van die kring bedraad.
- Die eerste transistor wat aan pen 16. gekoppel is.
-
Die tweede transistor is gekoppel aan pen 18. Ek het 'n rooi draad van die
Dreineer
pen (middelste pen) aan die rooi draad op die LED -strookaansluiting
-
Die derde transistor is gekoppel aan pen 22. Ek het 'n groen draad van die
Dreineer
pen (middelste pen) aan die groen draad op die LED -strookaansluiting
- Uiteindelik het ek 'n wit draad van die + -lyn op die broodbord wat aan die vataansluiting gekoppel was, na die wit draad op die LED -strookaansluiting gelei.
Krag
Nadat u die kring gekyk het, moet u die Raspberry Pi aanskakel en die 12V -aansluiting in die vataansluiting aansluit.
Stap 7: bedienerskantkode
Gebruik die bedienerkantkode
cd /opt/com.jonhaydock/colour-pi
sudo npm begin
Dit begin die webbediener en luister na HTTPS- en WSS -versoeke.
LET WEL: Onthou om eers 'n pi-blaster te laat loop
omgewings veranderlikes
Die standaard webwerfpoort is 443, maar u kan dit ignoreer deur 'n omgewingsveranderlike in te stel voordat u met die kode begin. Byvoorbeeld
voer COLOUR_PI_PORT = 2443 uit
Die standaard web socket -poort is 1443, maar u kan dit ignoreer deur 'n omgewingsveranderlike in te stel voordat u die kode begin. Byvoorbeeld
voer COLOUR_PI_WSS_PORT = 3443 uit
Let wel: Aangesien die webaansluiting deur cylon.js hanteer word en nie die hoofwebwerf nie, moet dit op verskillende hawens wees
Die penne wat gebruik word vir die blou (pen 16), groen (pen 18) en rooi (pen 22) kan ook oorskry word. Byvoorbeeld
voer COLOUR_PI_PIN_BLUE = 36 uit
uitvoer COLOUR_PI_PIN_RED = 38 uitvoer COLOUR_PI_PIN_GREEN = 40
Let wel: dit moet ooreenstem met die fisiese penne wat u gebruik het. As u dit verander, moet u ook die GPIO's wat in die/etc/default/pi-blaster-lêer gedefinieer is, opdateer. Byvoorbeeld
DAEMON_OPTS =-gpio 16, 20, 21
Die hoofbedienerkode kan gevind word in die app.js -lêer. Hierdie lêer begin die HTTPS -webbediener en gebruik ook via die Cylon.js -raamwerk socket.io om na 'n aparte poort na web -aansoekversoeke te luister.
Om toegang tot die webwerf te verkry, moet u 'n webblaaier op u hoofrekenaar oopmaak (ek het dit slegs in Chrome getoets) en die IP -adres van die Raspberry Pi gebruik, bv.
10.0.1.2/
U kan u IP -adres uitvind op die Raspberry Pi -opdragreël.
ifconfig
Die webbediener lewer alle inhoud onder die openbare gids. Dit word standaard die index.html -bladsy vertoon.
Cylon.js skep 'n eindpunt waarmee u Socket.io kan koppel.
10.0.1.2:1443/api/robots/colour-pi
U kan 'n set_colour -boodskap deur die sok stuur om die rooi, groen en blou waardes in te stel
device.emit ('set_colour', r, g, b)
Wat die opdrag set_colour noem, wat die setColour -funksie in app.js. Hierdie funksie stel die helderheidsvlakke vir elk van die R-, G- en B -waardes tussen 0 en 255. Waar 0 af is en 255 heeltemal aan is.
bv.
Rooi r = 255, g = 0, b = 0
Groen r = 0, g = 255, b = 0 Blou r = 0, g = 0, b = 255 Wit r = 255, g = 255, b = 255 Swart / Uit r = 0, g = 0, b = 0
Stap 8: Webwerf -kode
Algemeen
Die webwerf gebruik stemherkenning om kleure uit 'n vooraf gedefinieerde lys te kies. Om 'n kleur by die lys te voeg, wysig die lêer op die bediener: public/data/colours.json
bv.
"rooi": "#FF0000", As 'n kleur gevind word, of in die keuselys gekies word, word die uitvoerbus op die kleur ingestel en 'n boodskap sal via socket.io na die Raspnerry Pi gestuur word, wat die LED's in dieselfde kleur sal stel.
LET WEL: afhangende van hoe goed u LED's is, kan u 'n soortgelyke kleur al dan nie sien. Sommige is makliker om te dupliseer as ander
As u die webwerf vir die eerste keer laai, moet u dit in die blaaier erken, aangesien u 'n selfondertekende SSL-sertifikaat gebruik. U behoort 'n sekuriteitswaarskuwing oor die sertifikaat te sien.
Stemherkenning
Hierdie boks het 'n mikrofoon -ikoon. As u op die ikoon klik as dit groen is, begin dit na kleure luister. Terwyl dit luister, word dit rooi. Dit sal 'n kort rukkie luister en dan stop. As u op die mikrofoonikoon klik as dit rooi is, kan u ook nie luister nie.
Aangesien hierdie webwerf toegang tot u mikrofoon benodig, moet u dit toestemming gee wanneer u gevra word
LET WEL: u benodig 'n mikrofoon vir hierdie deel. Ek gebruik die een op my webkamera.
Tussentydse transkripsie
Hierdie boks volg die raaiskote van die woorde wat u sê, net soos u dit sê.
Finale transkripsie
Hierdie boks bevat die finale raaiskoot wat u gesê het.
Bekende kleure
Dit is 'n lys van al die kleure waarvan die bladsy weet. Dit word geskep uit die colours.json -lêer. As u een van hierdie kleure kies, spreek die bladsy die kleur en stel die uitvoerkleur in.
LET WEL: u benodig luidsprekers of koptelefoon om die toespraak te hoor
Kleure gevind
Hierdie webblad ondersteun tans slegs die pas van die kleur. As die woord of woorde wat u in die mikrofoon gespreek het, ooreenstem met die naam van 'n bekende kleur, of as u 'n kleur uit die lys Bekende kleur kies, word dit hier as 'n logboek bygevoeg.
Uitset
Die kleur wat laas gevind is, sal hier vertoon word. Die kleur Hex -waarde (bv. #7cb9e8) en die RGB -waarde (bv. 124, 185, 232) sal as teks vertoon word en die agtergrond van die blokkie in die middel word op die werklike kleur gestel.
Hierdie kleur word ook na die Raspberry Pi gestuur, en u moet die kleur van die LED -strook sien verander.
LET WEL: as u nie die LED-kleur verander nie, probeer dan om die pi-blaster en/of die node.js-program weer te begin
sudo service pi-blaster herbegin
sudo npm begin
Bekende stemme
Hierdie boks vertoon 'n lys met 'bekende stemme' uit die ondersteunde speechSynthesis. Deur een van hierdie stemme te kies, verander die stem en die taal wat u sal hoor, en dit sal die naam van die stem spreek.
Dit sal ook die taal van die spraakherkenning verander na dieselfde as die wat in die lys gekies is.
Stap 9: Laastens
Hier is 'n voorbeeld van wat u moet sien.
Laat weet my asseblief as u probleme ondervind, en ek kan dit indien nodig bywerk.
Aanbeveel:
Hoe om 'n fotosel te gebruik om die kleur van RGB LED te verander: 3 stappe
Hoe om 'n fotosel te gebruik om die kleur van RGB LED te verander: Vir my Arduino -projek deel 01 was my oorspronklike idee om 'n temperatuursensor te gebruik om 'n LED aan en uit te skakel, maar helaas, my temperatuursensor het nog nie gekom nie, wat my laat gekies uit die sensors wat in die Elegoo -beginkit beskikbaar is, en wonder of
M5StickC ESP32 en NeoPixels LED -ring ewekansige kleur: 7 stappe
M5StickC ESP32 & NeoPixels LED Ring Random Color: In hierdie projek leer ons hoe om 'n ewekansige kleur op die NeoPixels LED Ring te vertoon met 'n M5StickC ESP32 -bord. Kyk na die video
DIY veranderlike LED -paneel (dubbele kleur): 16 stappe (met foto's)
DIY veranderlike LED -paneel (dubbele kleur): Verbeter u beligting deur 'n bekostigbare DIY herlaaibare LED -paneel te maak! Hierdie projek is toegerus met 'n dubbele kleur helderheidsaanpassing en bied u die buigsaamheid om die witbalans van u ligbron aan te pas by die omringende lig van u omgewing
O !! Kleur: 7 stappe
O !! Kleur: O !! Kleur is 'n eenvoudige spel om die kleur te raai. Die spel gee u die basiese drie primêre kleure. As u twee kleure moet kombineer, druk net op beide knoppies. Nadat die knoppie gedruk is, sal die spel Die oordeel is korrek. Laastens, pleit
Maklike LED -kleur wat 'kers' verander: 5 stappe (met foto's)
Maklike LED -kleurveranderende "kers": dit is 'n eenvoudige kleurveranderende lig wat ideaal is vir kinders en volwassenes. Lyk pragtig in 'n dowwe kamer, ideaal vir die vakansie, en maak 'n redelik koel naglig