INHOUDSOPGAWE:

Kleur-pi: 9 stappe
Kleur-pi: 9 stappe

Video: Kleur-pi: 9 stappe

Video: Kleur-pi: 9 stappe
Video: ПОДГОТОВКА СТЕН перед укладкой плитки СВОИМИ РУКАМИ! | Возможные ОШИБКИ 2024, November
Anonim
Kleur-pi
Kleur-pi

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

  1. 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
  2. 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
  3. Barrel Jack Connector - ek het so iets in my plaaslike elektroniese winkel gekoop. Maak net seker of dit by u kragtoevoer pas
  4. Jumperaansluitings / draad - ek het 'n paar vroulike tot manlike aansluitkabels en 'n 22 -meter soliede haakdraad gelê
  5. Breadboard Solderless Prototype PCB Board - iets soos hierdie
  6. 3 x 10kΩ weerstande
  7. 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
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

Die bedrading van die kring
Die bedrading van die kring
Die bedrading van die kring
Die bedrading van die kring
Die bedrading van die kring
Die bedrading van die kring
Die bedrading van die kring
Die bedrading 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

  1. Plaas een van die transistors in die broodbord soos in die diagram getoon
  2. Plaas een van die 10kΩ weerstande oor die drein en die bronpenne van die transistor. Dit is die eerste en laaste pen
  3. Koppel die Bronpen (laaste pen) met 'n draad aan die grond op die broodbord
  4. 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

  1. Koppel pen 16 aan die hekpen (eerste pen) van die eerste transistor - Dit is die Blue LED -kanaal
  2. Koppel pen 18 aan die hekpen (eerste pen) van die eerste transistor - dit is die rooi LED -kanaal
  3. Koppel pen 20 aan die een van die grondlyne aan die kant van die broodbord
  4. 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

  1. Koppel 'n wit draad aan die + -kant van die vataansluiting
  2. Koppel 'n swart draad aan die - einde van die vataansluiting
  3. Koppel die swart draad aan dieselfde grondlyn op die broodbord waarop die RPi Pin 20 gekoppel was
  4. 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.

  1. Die eerste transistor wat aan pen 16. gekoppel is.
  2. 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

  3. 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

  4. 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

Bedienerskantkode
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

Webwerf kode
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

Image
Image

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: