Përmbajtje:

Ngjyra-pi: 9 hapa
Ngjyra-pi: 9 hapa

Video: Ngjyra-pi: 9 hapa

Video: Ngjyra-pi: 9 hapa
Video: HAPA DOLLAPA - Kukulla per femije, by Studio "Çamarroket" 2024, Nëntor
Anonim
Ngjyra-pi
Ngjyra-pi

Ky udhëzues tregon se si të përdorni një Raspberry Pi për të kontrolluar me zë një shirit LED RGB, përmes një faqe në internet, duke përdorur ndërfaqet e Web Speech API për SpeechRecognition dhe SpeechSynthesis.

Ky shembull tregon se si

  • Krijoni një uebfaqe bazë duke përdorur Node.js mbi
  • Përdorni Ndërfaqet Web Web Speech API për SpeechRecognition dhe SpeechSynthesis.
  • Përdorni kuadrin Cylon.js për të kontrolluar një shirit LED RGB në një Raspberry Pi
  • Komunikoni përmes WSS (bazat e sigurta të uebit) nga uebfaqja te Cylon.js për të kontrolluar ngjyrën për LED

shënim

  • Ju do të keni nevojë për altoparlantë ose kufje për të dëgjuar sintetizuesin e të folurit
  • Ju do të duhet të jepni qasje në mikrofonin tuaj që njohja e zërit të funksionojë
  • Për shkak se kjo qasje në mikrofonin tuaj, faqja duhet të ekzekutohet nën
  • Cylon-api-socketio e bibliotekës nuk mbështet https në këtë kohë. Kam një kërkesë tërheqëse që pret të bashkohet, por deri atëherë ju duhet të zëvendësoni /node_modules/cylon-api-socketio/lib/api.js me skedarin në këtë depo
  • pi-blaster është i nevojshëm për ta bërë këtë punë.

Hapi 1: Pajisjet

  1. Raspberry Pi - Kam përdorur një Raspberry Pi 2B që e kisha vendosur, por ju mund të merrni një Kit Raspberry Pi 3 Starter për rreth 100 CAD
  2. RGB LED Strip Light - Po luaja me Minger LED Strip Light 32.8ft/10M 600leds RGB SMD 5050. Kjo vjen me një kontrollues dhe një furnizim me energji elektrike për rreth 40 CAD
  3. Barrel Jack Connector - Bleva një nga dyqani im elektronik lokal, diçka si kjo. Vetëm sigurohuni nëse i përshtatet furnizimit tuaj me energji elektrike
  4. Lidhës Jumper / Wire - Unë kisha disa kabllo lidhës Femër në Mashkull dhe disa tela të lidhur 22 matës të fortë të shtrirë përreth
  5. Breadboard Solderless Prototype PCB Board - diçka si kjo
  6. 3 rezistente 10 xΩ
  7. 3 MOSFET me kanal N për kontrollin e LED -ve - Bleva disa IRL3303 nga dyqani im elektronik lokal. Importantshtë e rëndësishme që tensioni i pragut të portave të jetë maksimal. 3.3V kështu që mund të drejtohet nga kunjat RPi; zakonisht shënohet me një 'L' (Niveli Logjik) në emër.

Hapi 2: Vendosja e Raspberry Pi

Sistemi Operativ

Unë zakonisht përdor ndërtimin më të fundit Raspbian. Shkarkoni imazhin dhe shkruani atë në kartën SD. Nëse jeni duke përdorur një kompjuter Windows, mund të përdorni Win32 Disk Imager për të shkruar imazhin në Kartën SD.

Nyja.js

Instaloni versionin më të fundit të Node.js. Në kohën e shkrimit unë jam duke përdorur 8.9.1

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

sudo apt-get instaloni nodejs

Instaloni Git

sudo apt-get install git

Hapi 3: Pi-blaster

Pi-blaster
Pi-blaster

pi-blaster mundëson PWM në kunjat GPIO që ju kërkoni nga një Raspberry Pi. Teknika e përdorur është jashtëzakonisht efikase: nuk përdor CPU dhe jep impulse shumë të qëndrueshme.

Ky modulim i gjerësisë së pulsit lejon që Raspberry Pi të kontrollojë se sa të ndritshëm janë secili nga kanalet e Kuq, të Gjelbër dhe Blu për shiritin LED.

Së pari, klononi depon

cd /opt /

sudo git klon https://github.com/sarfata/pi-blaster.git sudo chown -R pi: pi pi-blaster

Pastaj, ndërtoni dhe instaloni

cd/opt/pi-blaster./autogen.sh &&./konfiguro && bëj && sudo make install

Së fundi, konfiguroni cilat kunja doni të përdorni

Nën llogarinë rrënjësore, ose duke përdorur sudo, krijoni dhe modifikoni skedarin

/etc/default/pi-blaster

Shtoni rreshtat e mëposhtëm

DAEMON_OPTS =-gpio 23, 24, 25

Këto kunja gpio duhet të përputhen me kunjat që po lidhni me shiritin tuaj LED.

SH NOTNIM: Ekziston një ndryshim midis GPIO dhe numrit të pin. Ky shembull përdor sa vijon

LED - Blu, GPIO -23, Pin - 16

LED - E kuqe, GPIO -24, Pin - 18 LED - E gjelbër, GPIO -25, Pin - 22

Ndryshime shtesë

Filloni pi-blaster

shërbimi sudo fillimi i pi-blaster

Rinisni pi-blaster

rifillimi i shërbimit sudo pi-blaster

Ndaloni pi-blaster

shërbimi sudo pi-blaster stop

Filloni pi-blaster automatikisht në kohën e nisjes

sudo systemctl aktivizoni pi-blaster

Paralajmërime dhe vërejtje të tjera

Kunjat që përdoren nga pi-blaster do të konfigurohen si dalje. Mos e lidhni diçka me një hyrje ose mund ta shkatërroni! Ky demon përdor gjeneratorin hardware PWM të mjedrës pi për të marrë kohë të sakta. Kjo mund të ndërhyjë në daljen e kartës tuaj të zërit.

Hapi 4: Vendosja e Kodit Shembull

Klononi kodin shembull

1. Krijoni një dosje bazë për tu instaluar

cd /opt

sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock

2. Klononi depon e shembullit git

git klon

ose

git klon [email protected]: haydockjp/color-pi.git

3. Instaloni varësitë

cd ngjyra-pi

instaloni npm

Kjo mund të zgjasë 2-3 minuta

4. Ky projekt duhet të komunikojë përmes HTTPS dhe WSS. Në këtë kohë cylon-api-socketio nuk mbështet lidhjet SSL. Ekziston një kërkesë e hapur tërheqëse për të shtuar këtë mbështetje, por derisa të bashkohet, ekziston një skedar patch në këtë depo. Drejtoni komandën e mëposhtme pas instalimit npm

git checkout node_modules/cylon-api-socketio/lib/api.js

Hapi 5: Krijoni një Certifikatë SSL të Vetë -Nënshkruar

1. Krijoni një skedar privat të çelësit

cd /opt/com.jonhaydock/colour-pi/certe

openssl genrsa-jashtë ngjyrës-pi-kyç.pem 2048

2. Krijoni një CSR (Kërkesë për nënshkrimin e certifikatës)

openssl req -i ri -fjala-ngjyra-pi-kyç.pem-jashtë ngjyrës-pi-csr.pem

Në këtë pikë do t'ju kërkohet disa informacione për kërkesën e certifikatës. Meqenëse kjo është një certifikatë e vetë -nënshkruar, varet nga ju se sa saktësisht i plotësoni detajet. Këtu është një shembull

Emri i Shtetit (kodi me 2 shkronja) [AU]: CA

Emri i Shtetit ose Provincës (emri i plotë) [Disa Shtete]: Emri i Lokalitetit të British Columbia (p.sh., qyteti) : Emri i Organizatës Vancouver (p.sh., kompania) [Internet Widgits Pty Ltd]: Emri i Njësisë Organizative Color Pi (p.sh., seksioni) : Emri i zakonshëm (p.sh. serveri FQDN ose emri YT) : adresa e postës elektronike color-pi : [email protected]

Një fjalëkalim sfidues :

Emri i një kompanie opsionale :

Në këtë shembull, thjesht shtypni kthimin për ta lënë fjalëkalimin e sfidës bosh

3. Gjeneroni certifikatën

openssl x509 -req -ditë 1095 -në ngjyrë-pi-csr.pem -sinkey ngjyra-pi-kyç.pem-jashtë ngjyrës-pi-cert.pem

4. Për siguri shtesë ne gjithashtu do të krijojmë një skedar Diffie Hellman Parameters

openssl dhparam -jashtë dh_2048.pem 2048

Kjo mund të zgjasë 15-20 minuta

Hapi 6: Instalimi i qarkut

Instalimi i qarkut
Instalimi i qarkut
Instalimi i qarkut
Instalimi i qarkut
Instalimi i qarkut
Instalimi i qarkut
Instalimi i qarkut
Instalimi i qarkut

Fuqizimi i shiritit LED

Shiriti LED mundësohet nga 12 volt. Raspberry Pi është vetëm me kapacitet 3.3v ose 5v dhe nuk është i aftë të dalë diku pranë amperit të nevojshëm për të drejtuar kaq shumë LED.

Isshtë e rëndësishme të mos lidhni furnizimin me energji 12 volt me Raspberry Pi. Transistorët MOSFET me kanale N përdoren për të ndarë 3.3v në kunjat RPi dhe 12v të furnizimit me energji LED.

MOSFET ka tre kunja Gate, Drain dhe Source. Nëse nuk jeni të sigurt se cila është Google për fletën e të dhënave të tranzistorit që po përdorni, p.sh. IRL3303

Ne do të lidhim Pin Raspberry Pi me Portën, tela LED me Drain dhe një bazë të përbashkët me Burimin. Kur Kunja shkon lartë, tensioni midis Kullimit dhe Burimit do të aktivizojë Portën dhe do të lidhë portën me Burimin.

Ne gjithashtu do të vendosim Rezistorë 10kΩ përtej Portës dhe Burimit, në mënyrë që kur pini RPi është i lartë, ne mund të mbrojmë pinin duke zvogëluar rrymën që kalon nëpër të.

Kryeni hapat e ardhshëm në rrezikun tuaj. Unë nuk mbaj përgjegjësi për asgjë që mund të shkojë keq

Ekziston një imazh tërheqës dhe një fotografi e qarkut aktual më lart.

Unë do të rekomandoja ta bëni këtë ndërsa energjia është e fikur për RPi dhe shiritin LED

Vendosni qarqet e tranzistorit, një për kanalin e ngjyrave

  1. Futni një nga transistorët në tabelën e bukës siç tregohet në diagram
  2. Vendosni një nga Rezistencat 10kΩ në të gjithë Kullimin dhe kunjat e Burimit të tranzistorit. Kjo është kunja e parë dhe e fundit
  3. Përdorni një tel për të lidhur kunjin Burimi (kunja e fundit) me tokën në dërrasën e bukës
  4. Përsëritni hapat 1 - 3 edhe dy herë të tjera, në mënyrë që të keni tre grupe - një për ngjyrë (E kuqe, jeshile dhe blu)

Lidhni kunjat RPi me tabelën

  1. Lidhni Pin 16 me Pin Gate (kunja e parë) e tranzistorit të parë - Ky do të jetë kanali Blue LED
  2. Lidhni Pin 18 me Gate Pin (kunja e parë) e tranzistorit të parë - Ky do të jetë kanali LED i Kuq
  3. Lidhni Pin 20 me njërën nga linjat Ground në anën e dërrasës së bukës
  4. Lidhni Pin 22 me Pin Gate (kunja e parë) e tranzistorit të parë - Ky do të jetë kanali LED Green

Unë kam përdorur ngjyrat e telave që përputhen me LED -të: Blu, e Kuqe dhe E Gjelbër. Unë kam përdorur të zezën për tokën

Lidhni kapakun e fuçisë

  1. Lidhni një tel të bardhë në fundin e prizës së fuçisë
  2. Lidhni një tel të zi në fund të prizës së fuçisë
  3. Lidhni tela të zezë me të njëjtën linjë terreni në dërrasën e bukës me të cilën ishte lidhur RPi Pin 20
  4. Lidhni tela të bardhë me vijën + në tabelën e bukës

Lidhja e shiritit LED

Shiriti im LED erdhi me një lidhës që ishte me një madhësi mjaft të mirë saqë mund të lidhej përkohësisht në dërrasën e bukës. Unë e shtyva lidhësin në tabelën e bukës dhe e lidha atë në provën e qarkut.

  1. Transistori i parë i lidhur me Pin 16. Unë kalova një tel blu nga kunja e kullimit (kunja e mesme) në tela blu në lidhësin e shiritit LED
  2. Transistori i dytë i lidhur me Pin 18. Unë kalova një tel të kuq nga

    Kulloni

    kunja (kunja e mesme) në telin e kuq në lidhësin e shiritit LED

  3. Transistori i tretë i lidhur me Pin 22. Unë vrapova një tel të gjelbër nga

    Kulloni

    kunja (kunja e mesme) në tela të gjelbër në lidhësin e shiritit LED

  4. Më në fund, unë drejtova një tel të bardhë nga vija + në dërrasën e bukës që ishte e lidhur me prizën e fuçisë, me tela të bardhë në lidhësin e shiritit LED.

Fuqia

Pas kontrollimit të qarkut, duhet të jeni të mirë për të ndezur Raspberry Pi dhe futni furnizimin 12v në prizën e fuçisë.

Hapi 7: Kodi i serverit

Kodi i Serverit
Kodi i Serverit

Ekzekutimi i kodit nga ana e serverit

cd /opt/com.jonhaydock/colour-pi

sudo npm fillimi

Kjo do të fillojë serverin në internet dhe do të fillojë të dëgjojë kërkesat HTTPS dhe WSS.

SHENIM: Mos harroni që së pari të përdorni pi-blaster

Variablat e Mjedisit

Porta e parazgjedhur e faqes në internet është 443, por ju mund ta anashkaloni këtë duke vendosur një ndryshore të mjedisit para fillimit të kodit. Për shembull

eksport COLOUR_PI_PORT = 2443

Porta e paracaktuar e prizës në internet është 1443, por ju mund ta anashkaloni këtë duke vendosur një ndryshore të mjedisit para se të filloni kodin. Për shembull

eksport COLOUR_PI_WSS_PORT = 3443

Shënim: Meqenëse priza në internet trajtohet nga cylon.js dhe jo nga uebfaqja kryesore, këto duhet të jenë në porte të ndryshme

Kunjat që përdoren për blu (kunja 16), jeshile (kunja 18) dhe e kuqe (kunja 22) gjithashtu mund të anashkalohen. Për shembull

eksport COLOUR_PI_PIN_BLUE = 36

eksport COLOUR_PI_PIN_RED = 38 eksport COLOUR_PI_PIN_GREEN = 40

Shënim: Këto duhet të përputhen me kunjat fizike që keni përdorur. Nëse i ndryshoni këto, do t'ju duhet gjithashtu azhurnimi i GPIO-ve të përcaktuara në skedarin/etc/default/pi-blaster. Për shembull

DAEMON_OPTS =-gpio 16, 20, 21

Kodi kryesor i serverit mund të gjendet në skedarin app.js. Ky skedar fillon serverin e uebit HTTPS dhe gjithashtu, përmes kornizës Cylon.js, përdor socket.io për të dëgjuar kërkesat e prizave në internet në një port të veçantë.

Për të hyrë në faqen e internetit, duhet të hapni një shfletues uebi në kompjuterin tuaj kryesor (këtë e kam testuar vetëm në Chrome) dhe të përdorni adresën IP të Raspberry Pi, p.sh.

10.0.1.2/

Ju mund të zbuloni adresën tuaj IP nga rreshti i komandës Raspberry Pi.

ifconfig

Serveri në internet do të shërbejë çdo përmbajtje nën dosjen publike. Deshtë e paracaktuar të shfaqet faqja index.html.

Cylon.js krijon një pikë përfundimtare që mund ta lidhni Socket.io.

10.0.1.2:1443/api/robots/colour-pi

Mund të dërgoni një mesazh set_colour përmes prizës për të vendosur vlerat e Kuqe, të Gjelbër dhe Blu

pajisje.emit ('set_colour', r, g, b)

E cila thërret komandën set_colour, e cila thërret funksionin setColour në app.js. Ky funksion përcakton nivelet e ndriçimit, për secilën prej vlerave R, G dhe B, midis 0 dhe 255. Ku 0 është i fikur dhe 255 është plotësisht i ndezur.

p.sh.

E kuqe r = 255, g = 0, b = 0

E gjelbër r = 0, g = 255, b = 0 Blu r = 0, g = 0, b = 255 E bardhë r = 255, g = 255, b = 255 E zezë / Off r = 0, g = 0, b = 0

Hapi 8: Kodi i faqes në internet

Kodi i faqes në internet
Kodi i faqes në internet

Të përgjithshme

Faqja e internetit përdor njohjen e zërit për të zgjedhur ngjyrat nga një listë e paracaktuar. Për të shtuar një ngjyrë në listë, modifikoni skedarin në server: public/data/colours.json

p.sh.

"e kuqe": "#FF0000",

Kur të gjendet një ngjyrë, ose të zgjidhet nga zbritja, kutia Output do të vendoset në atë ngjyrë dhe një mesazh do të dërgohet përmes socket.io në Raspnerry Pi, i cili do të vendosë LED -të në të njëjtën ngjyrë.

SHENIM: në varësi të asaj se sa të mira janë LED -et tuaja mund të shihni ose jo një ngjyrë të ngjashme. Disa janë më të lehta për tu kopjuar se të tjerat

Kur ngarkoni për herë të parë faqen e internetit, pasi jeni duke përdorur një certifikatë SSL të vetë-nënshkruar, do t'ju duhet ta pranoni këtë në shfletuesin. Ju duhet të shihni një paralajmërim të sigurisë në lidhje me certifikatën.

Njohja e zërit

Kjo kuti ka një ikonë të mikrofonit. Nëse klikoni ikonën kur është e gjelbër, ajo do të fillojë të dëgjojë ngjyrat. Ndërsa dëgjon, do të bëhet e kuqe. Do të dëgjojë për një kohë të shkurtër dhe më pas do të ndalet. Klikimi i ikonës së mikrofonit kur është i kuq gjithashtu do ta ndalojë atë të dëgjojë.

Meqenëse kjo faqe duhet të ketë qasje në mikrofonin tuaj, do t'ju duhet t'i jepni leje kur t'ju kërkohet

SH NOTNIM: Ju keni nevojë për një mikrofon për këtë pjesë. Unë përdor atë në kamerën time në internet.

Transkript i përkohshëm

Kjo kuti po ndjek supozimet e fjalëve që po thoni, siç po i thoni.

Transkripti përfundimtar

Kjo kuti gjurmon supozimin përfundimtar se çfarë keni thënë.

Ngjyrat e njohura

Kjo është një listë e të gjitha ngjyrave për të cilat flet faqja. Isshtë krijuar nga skedari colours.json. Nëse zgjidhni një nga këto ngjyra, faqja do të flasë për ngjyrën dhe do të vendosë ngjyrën e daljes.

SH NOTNIM: Ju keni nevojë për altoparlantë ose kufje për të dëgjuar fjalimin

Ngjyrat e gjetura

Kjo faqe në internet aktualisht mbështet vetëm përputhjen e ngjyrës. Nëse fjala ose fjalët që folët në mikrofon përputhen me emrin e një ngjyre të njohur, ose zgjidhni një ngjyrë nga lista e Ngjyrave të Njohura, ajo do të shtohet këtu si regjistër.

Dalje

Ngjyra e fundit e gjetur do të shfaqet këtu. Vlera Color Hex (p.sh. #7cb9e8) dhe vlera RGB (p.sh. 124, 185, 232) do të shfaqen si tekst dhe sfondi i kutisë në mes do të vendoset në ngjyrën aktuale.

Kjo ngjyrë i dërgohet edhe Raspberry Pi dhe duhet të shihni që ngjyra e shiritit LED ndryshon.

SH NOTNIM: nëse nuk shihni ndryshimin e ngjyrës LED, provoni të rinisni pi-blaster dhe/ose aplikacionin node.js

rifillimi i shërbimit sudo pi-blaster

sudo npm fillimi

Zërat e njohur

Kjo kuti shfaq një listë të "Zërave të njohur" nga Sinteza e të folurit të mbështetur. Zgjedhja e njërit prej këtyre zërave do të ndryshojë zërin dhe gjuhën që do të dëgjoni, dhe do të flasë emrin e zërit.

Gjithashtu do të ndryshojë gjuhën e njohjes së të folurit për të qenë e njëjtë me atë të zgjedhur në listë.

Hapi 9: Së fundi

Image
Image

Këtu është një shembull i asaj që duhet të shihni.

Ju lutem më tregoni nëse keni ndonjë problem dhe unë mund të azhurnoj sipas nevojës.

Recommended: