Përmbajtje:

LED -të e kontrolluara nga Google Home: 8 hapa
LED -të e kontrolluara nga Google Home: 8 hapa

Video: LED -të e kontrolluara nga Google Home: 8 hapa

Video: LED -të e kontrolluara nga Google Home: 8 hapa
Video: Чармиан Гуч: Серые кардиналы мировой коррупции 2024, Nëntor
Anonim
LED -të e kontrolluara nga Google Home
LED -të e kontrolluara nga Google Home
LED -të e kontrolluara nga Google Home
LED -të e kontrolluara nga Google Home

Kohët e fundit, kam pasur shumë kohë të lirë në duart e mia, kështu që kam punuar në një mori projektesh.

Ky projekt do t'ju lejojë të kontrolloni LED -të RGB përmes Google Home duke përdorur një Raspberry Pi. Tani ka 3 pjesë të projektit, ngritja e një Raspberry Pi, konfigurimi i Google Home me një komandë të personalizuar duke përdorur IFTTT, dhe pastaj krijimi i një qarku për dritat. Unë e bëra qarkun vetë, por vë bast që ju mund të merrni diçka nga Adafruit që bën atë që nevojitet.

Materiale për Pjesën e Raspberry Pi

  • Raspberry Pi - çdo gjë do të funksionojë, por unë jam duke përdorur një Zero
  • Dongle Wireless - nëse Pi nuk ka ndërtuar në Wifi
  • Google Home - Opsionale nëse keni Google Assistant në telefonin tuaj

Materialet për Pjesën e Qarkut- Mos lejoni që kjo t'ju pengojë … fairlyshtë mjaft e thjeshtë

  • Protoboard
  • Tela
  • Rrip LED
  • Furnizimi me energji 12V - Çdo gjë mbi 2 Amps duhet të jetë mirë
  • DC Barrel Jack - E njëjta madhësi me furnizimin tuaj me energji elektrike
  • NPN BJT Transistorët e Fuqisë (x3) - Unë jam duke përdorur TIP31C
  • Kokat e meshkujve dhe femrave - Opsionale, por shumë të rekomanduara

Hapi 1: Shkarkimi i Express për Pi

Shkarkimi i Express për Pi
Shkarkimi i Express për Pi

Unë nuk do të hyj në shumë detaje në lidhje me vendosjen e Pi sepse ka kaq shumë mësime atje për vendosjen e tyre.

Çfarë do të duhet të bësh që nuk po e mbuloj…

  • Ndizet Raspberry Pi me Raspbian më të ri
  • Konfiguroni kartën e rrjetit në mënyrë që të keni qasje në internet nga Pi
  • Vendosni një IP statike në Raspberry Pi

Tani këtu fillon argëtimi! Ne duhet të instalojmë nodeJS, npm, express, dhe express-generator.

përditësim sudo apt-get

sudo apt-get install nodejs npm

Pasi të jenë instaluar, ekzekutoni sa vijon

npm instaloni ekspres-gjenerator ekspres

Express ju lejon të bëni një server në internet shumë themelor për Raspberry Pi tuaj që të përdoret. Express-generator vetëm gjeneron automatikisht skedarë për një server ekspres.

Krijoni një drejtori dhe cd në drejtori. Unë emrin tim piWebpage. Tani ekzekutoni sa vijon (shihet edhe në foto)

mkdir piWebpage

cd piWebpage express -shiko = ejs webApp

Kjo do të krijojë një dosje të quajtur webApp me të gjithë skedarët e shprehur në të. Nëse planifikoni të bëni më shumë me këtë faqe në internet më vonë dhe ju pëlqen PUG, zëvendësoni --view = ejs me --view = pug. Ne nuk do të prekim faqen në internet, kështu që për këtë aplikacion, nuk ka rëndësi se çfarë përdorim.

Hapi 2: Konfigurimi i serverit Pi

Kaloni në drejtorinë e re të webApp.

cd webApp

instaloni npm

instalimi npm do të marrë pak kohë sepse po instalon të gjitha varësitë për express.

Ngjiteni setColor.py në dosjen webApp. Ky skedar ka disa paravendosje në të për ngjyrat bazë. Mos ngurroni të shtoni më shumë sipas dëshirës tuaj. Gama është nga 0 në 255 ku 255 është me ngjyrë të plotë. Në një moment, ka të ngjarë të shtoj aftësinë për të zbehur dritat, por tani për tani, ato janë me shkëlqim të plotë.

Kaloni në rrugë

cd rrugët

Tani zëvendësoni index.js me skedarin e bashkangjitur. Kjo do të shtojë disa rreshta për të marrë një komandë POST që është ajo që do të dërgojë Google Home. Nga ajo POST, ne do të zgjedhim ngjyrën dhe do t'i themi Pi që të ekzekutojë skenarin python setColor për të rregulluar dritat.

Një gjë e fundit … Kthehuni te dosja webApp.

cd ~/piWebpage/webApp

Duke përdorur redaktorin tuaj të preferuar, ngjisni dhe ruani kodin më poshtë në webApp.js tuaj. Kudo është mirë për aq kohë sa është para "module.exports = app;"

// Konfiguro drejtuesin e harduerit LED {exec} = kërko ('procesi i fëmijës'); exec ('sudo pigpiod', (err, stdout, stderr) => {if (err) {console.log ('Gabim në ngarkimin e shoferit LED'); kthehu;} else console.log ('Shoferi LED u ngarkua me sukses'); });

Siç thotë komenti, pigpiod është drejtuesi i harduerit për sinjalet PWM që ne do të përdorim për të rregulluar ngjyrat LED. Unë besoj se vjen tashmë e instaluar në Raspbian, por nëse jo…

sudo apt-get install pigpiod

Tani për provën e vërtetë! Fillimi i serverit!

DEBUG = webapp:* fillimi npm

Hapi 3: Konfigurimi IFTTT (Shkaktuesi)

Konfigurimi IFTTT (Shkaktuesi)
Konfigurimi IFTTT (Shkaktuesi)
Konfigurimi IFTTT (Shkaktuesi)
Konfigurimi IFTTT (Shkaktuesi)

IFTTT mund të bëjë shumë, dhe unë do të rekomandoja të shikoni përreth disa prej aplikacioneve.

Së pari, do të duhet të bëni një llogari. Përdorni të njëjtën llogari Google të lidhur me Google Home tuaj, përndryshe ato nuk do të sinkronizohen së bashku. Pasi të keni përfunduar dhe regjistruar, klikoni në të djathtën e sipërme të faqes IFTTT ku tregon emrin dhe avatarin tuaj. Pastaj klikoni Apleti i Ri nga lista zbritëse.

Nëse jeni kurioz, IFTTT qëndron për IF This Then That nëse nuk e keni vënë re nga ekrani që shfaqet. Pra, ajo që duam është Nëse Google Assistant, atëherë Webhook si opsionet tona.

Vazhdoni duke klikuar +këtë e cila do të ngarkojë një shirit kërkimi. Në kërkim, shkruani Google Assistant dhe klikoni ikonën poshtë kërkimit.

Në Zgjidhni një shkas, zgjidhni opsionin e tretë të quajtur Thuaj një frazë me një përbërës teksti. Tani kjo ju lejon të keni 3 komanda që do të bëjnë të njëjtin veprim. Ju shtoni $ në frazën ku do të përmendnit ngjyrën. Për shembull, nëse natyrshëm do të thosha Hey Google, Cakto LEDs Blue (aq e natyrshme sa të bërtasësh në një pajisje), atëherë do të shkruaja në fushën Set LEDs $. Bëni atë për të 3 fushat me versione të ndryshme të komandës.

3 që kam përdorur ishin

LEDs $

Vendosni LED $

Vendosni ngjyrën LED $

Fusha e fundit është ajo që do të donit të përgjigjej Google Home pasi të thoni komandën tuaj. Mund të jetë gjithçka që dëshironi, por kam përdorur Vendosja e ngjyrës në $. $ Do të thotë që ajo do të përsërisë ngjyrën mbrapa.

Klikoni Krijo Shkaktues

Hapi 4: Konfigurimi IFTTT (Veprimi)

Konfigurimi IFTTT (Veprimi)
Konfigurimi IFTTT (Veprimi)
Konfigurimi IFTTT (Veprimi)
Konfigurimi IFTTT (Veprimi)

Pasi të klikoni Krijo shkas, do të ngarkoni përsëri në pamjen nëse kjo atëherë, por kjo është zëvendësuar me logon e Asistentit Google. Vazhdoni duke klikuar +atë

E njëjta gjë si më parë ku ju sjell në shiritin e kërkimit. Shkruani Webhooks dhe klikoni ikonën e webhook poshtë shiritit të kërkimit. Nën Zgjidhni veprimin për lidhëset e uebit, ekziston vetëm një opsion, kështu që klikoni Bëni një kërkesë në internet.

Këtu gjërat bëhen pak të ndërlikuara. Meqenëse Google nuk është një kompjuter tjetër në shtëpinë tuaj, do t'ju duhet adresa juaj e jashtme IP. Kjo do të kërkojë një përcjellje të portit, por ne do ta prekim atë më vonë. Për të marrë adresën tuaj të jashtme IP, shkoni te

Në fushën URL, shkruani https://xxx.xxx.xxx.xxx:3000/{{TextField}} (me x -të që janë adresa juaj e jashtme IP). Në rast se jeni kurioz, TextField do të ketë ngjyrën që keni zgjedhur kur bëni një komandë. Arsyeja që ne përdorim 3000 është sepse ky është porti në të cilin po funksionon serveri Raspberry Pi Express. (Mund ta ndryshoni portën në kod, por ne thjesht po përdorim cilësimet e paracaktuara për Express)

Për Metodën, zgjidhni POST.

Për Llojin e Përmbajtjes, zgjidhni tekstin/fushën.

Për trupin, shkruani në {{TextField}}

Ata prej jush që e dinë se si funksionon një komandë POST, do të mendonit se nëse analizoni vetinë e trupit të kërkesës që do të merrni ngjyrën. Për disa arsye, asgjë nuk futet kurrë në fushën e kërkesës, kështu që unë në të vërtetë po analizoj URL -në për ngjyrën. Shpresoj që të rregullohet së shpejti, pasi kjo do të thjeshtonte kodin tim në rrugën index.js. Por unë devijoj.

Së fundi, klikoni Krijo veprim dhe më pas Mbaro në faqen tjetër. (Unë i fikja njoftimet, por kjo është preferenca)

Hapi 5: Përcjellja e Portit

Përcjellja e Portit
Përcjellja e Portit
Përcjellja e Portit
Përcjellja e Portit

Kjo është ajo ku gjërat bëhen të vështira për t'u shpjeguar sepse të gjithë ruterët janë të ndryshëm …

Tani ne kemi Google që dërgon një komandë në shtëpinë tonë duke përdorur portin 3000, por nuk e di se në cilën pajisje në LAN duhet të shkojë. Për të korrigjuar këtë, ne duhet të përcjellim portin 3000 në adresën IP lokale të Raspberry Pi tuaj.

Hyni në ruterin tuaj duke përdorur ose 10.0.0.1 ose 192.168.1.1 (e kam parë gjithashtu aty ku shifra e fundit është 254) dhe gjeni përcjelljen e portit. Në përcjelljen e porteve, të ngjashme me imazhin, do të emërtoni një pajisje të re (IFTTT) dhe do ta përcillni portën (3000) në adresën IP të Pi (në rastin tim 10.0.0.11).

Ruani cilësimin tuaj të ri, rindizni ruterin tuaj dhe kontrolloni për t'u siguruar që serveri juaj Raspberry Pi është ende në punë. Nëse nuk po funksionon, filloni përsëri.

Kthehuni në atë faqe interneti të dobishme https://canyouseeme.org/. Nën adresën tuaj IP, ajo ka një kontrollues portesh. Duke supozuar se përcjellja e portit tuaj është e saktë, shkruani 3000 dhe shtypni portën e kontrollit. Duhet të kthehet me një Sukses.

Hapi 6: Kontrollimi i punës suaj deri më tani

Duke kontrolluar punën tuaj deri më tani
Duke kontrolluar punën tuaj deri më tani
Duke kontrolluar punën tuaj deri më tani
Duke kontrolluar punën tuaj deri më tani

Tani … momentin që keni pritur… Thuajini Google një komandë të tillë si LEDs blu (nëse ndiqni shembullin tim).

Duke supozuar se gjithçka shkoi si duhet, do të merrni daljen e parë në figurë. Ne nuk kemi ende një qark, kështu që gjithçka që do të shihni është teksti në ekran. Zakonisht ka një vonesë të dytë ose 2 para se të përpunohet nga Google dhe të shfaqet në Pi.

(Kaloni në hapin tjetër nëse kjo doli në mënyrë të ngjashme me figurën)

Tani ka disa gjëra për të parë nëse nuk funksionon…

Në foto, ka një rresht që thotë

POST /ngjyra /blu 200 250.458 ms - 2

200 është pjesa e rëndësishme. Nëse nuk po shihni një 200, atëherë kishte një POST të keq që do të thotë që serveri juaj nuk dinte se çfarë të bënte me të dhënat. Kthehuni te Hapi 2 dhe kontrolloni skedarin tuaj index.js.

Gjithashtu në foto

stdout: blu

stderr:

Ky është dalja nga skedari python që drejton LED -të. Nëse shihni një gabim atje, mund të jetë që nuk e keni drejtuesin të instaluar në Hapin 2.

Së fundmi, nëse asgjë nuk shfaqet fare … IFTTT juaj mund të mos jetë konfiguruar saktë ose të mos ketë arritur të lidhet me serverin. Kthehuni në faqen IFTTT dhe në shiritin e sipërm të navigimit, klikoni Aktiviteti. Aty, mund të shihni çdo herë që aplikacioni juaj ka funksionuar, dhe nëse ka pasur një gabim, mund të shihni se çfarë ishte. Bëra një komandë të Google me serverin Pi të fikur dhe mora gabimin në figurë.

Hapi 7: Ndërtimi i qarkut

Ndërtimi i qarkut
Ndërtimi i qarkut
Ndërtimi i qarkut
Ndërtimi i qarkut
Ndërtimi i qarkut
Ndërtimi i qarkut

Arsyeja pse ne duhet ta bëjmë këtë është sepse Raspberry Pi nuk ka fuqi të mjaftueshme … Pra, zgjidhja është … MORE SHUM FUQI (Tim, njeriu i veglave Taylor gërryen në distancë). AKA një tjetër furnizim me energji elektrike (12V 2A)

Materialet për Pjesën e Qarkut

  • Protoboard
  • Tela
  • Rrip LED RGB
  • Furnizimi me energji 12V - Çdo gjë mbi 2 Amps duhet të jetë mirë
  • DC Barrel Jack - E njëjta madhësi me furnizimin tuaj me energji elektrike
  • NPN BJT Transistorët e Fuqisë (x3) - Unë jam duke përdorur TIP31C
  • Titujt e kunjave për meshkuj dhe femra

Duke përdorur fotografinë e dobishme që kam vjedhur nga ndërthurjet me GPIO të Pi Zero, ju mund të shihni që GPIO17, GPIO18 dhe GPIO 27 janë të vendosur pranë njëri -tjetrit me një GND. Ne do të përdorim atë katror me 4 kunja (Kunjat 11, 12, 13, 14).

Së pari, unë do të rekomandoja bashkimin e titujve meshkuj në shiritin tuaj LED siç shihet në imazh (jo puna ime më e mirë). Kjo lejon një shkëputje të lehtë nëse keni nevojë ndonjëherë. Kam përdorur tituj femra për lidhjen e shiritit LED me protoboardin tim dhe titujt meshkuj nga protoboardi në Raspberry Pi. (Përdorni gjithmonë lidhjet femra për energji/burim sinjali). Ju nuk keni nevojë të lëvizni të gjitha kunjat e Pi -së njëra pranë tjetrës si unë … Unë thjesht doja që ajo të dukej e pastër, por ishte shumë punë.

Shpjegimi i qarkut

Për ata prej jush të panjohur me transistorët, transistorët janë në thelb një ndërprerës dixhital. Kunjat GPIO nga Pi shkaktojnë tre ndërprerës (të kuq, jeshil dhe blu). Duke parë në mënyrë të veçantë DAR në diagramin e qarkut, kur GPIO_17 është i ndezur, çelësi "mbyllet" duke lidhur RED me GND duke shkaktuar ndezjen e dritave të kuqe. Kur GPIO_17 fiket, atëherë çelësi është i hapur dhe kështu dritat janë fikur.

Baza - GPIO

Koleksionist - Ngjyra (E KUQ, E GJELLE, E Kaltër)

Emitter - Ground (i Furnizimit me Energji dhe Pi)

Sigurohuni që të lidhni tokën e Pi me tokën e furnizimit me energji elektrike. Dritat do të punojnë akoma, por ato do të duken shumë të zbehta derisa toka të lidhet.

Unë kam një pajisje të katërt me pamje tranzistori në protoboardin tim. Shtë një L7805CV i cili përdoret për të kthyer 12V në 5V, kështu që unë mund të fuqizoj Pi në të njëjtin qark. Ajo funksionoi, por vazhdoi të ngrohej, kështu që hoqa lidhjet e saj.

Hapi 8: Provojeni

Pasi të keni përfunduar me qarkun, rinisni Pi tuaj para se të bëni ndonjë lidhje. Kjo ndodh sepse kunjat ndoshta janë akoma aktive nga testi i serverit. Përndryshe, ju mund të vrisni serverin dhe shërbimin e derrit.

Lidhni LED -të dhe kërcyesit nga protoboardi në Pi. Kontrolloni dy herë të gjitha lidhjet para se të siguroni energji. Nëse e keni lidhur gabimisht, mund të skuqni Pi tuaj (pa presion).

Listë kontrolli

  • Kontrolloni telat
  • Fuqia Pi
  • Qarku i energjisë
  • Filloni serverin (DEBUG = webapp:* npm filloni ndërsa jeni në drejtorinë ~/piWebpage/webApp)
  • Thuaji Google të bëjë ofertën tënde!

URIME nuk keni hedhur asgjë në erë dhe tani mund t'i kontrolloni LED -et tuaja nga Google Home.

Lini komente nëse keni probleme, dhe unë do të bëj çmos që të kthehem tek ju!

Recommended: