Turinys:

„Google Home“valdomi šviesos diodai: 8 žingsniai
„Google Home“valdomi šviesos diodai: 8 žingsniai

Video: „Google Home“valdomi šviesos diodai: 8 žingsniai

Video: „Google Home“valdomi šviesos diodai: 8 žingsniai
Video: Casiiot RF MESH RGBWW Lights 2024, Liepa
Anonim
„Google Home“valdomi šviesos diodai
„Google Home“valdomi šviesos diodai
„Google Home“valdomi šviesos diodai
„Google Home“valdomi šviesos diodai

Pastaruoju metu turėjau daug laisvo laiko, todėl dirbau su daugybe projektų.

Šis projektas leis jums valdyti RGB šviesos diodus per „Google Home“naudojant „Raspberry Pi“. Dabar yra trys projekto dalys: „Raspberry Pi“nustatymas, „Google Home“nustatymas naudojant pasirinktinę komandą naudojant IFTTT ir sukuriama žibintų grandinė. Aš pats sukūriau trasą, bet lažinuosi, kad iš „Adafruit“galite gauti ką nors, kas reikalinga.

Medžiagos Raspberry Pi daliai

  • Raspberry Pi - bet koks veiks, bet aš naudoju nulį
  • Belaidis raktas - jei „Pi“neturi įmontuoto „Wifi“
  • „Google“pagrindinis puslapis - pasirenkama, jei telefone turite „Google“padėjėją

Medžiagos grandinėms- Neleiskite, kad tai jus atgrasytų … Tai gana paprasta

  • Protoboard
  • Viela
  • LED juostelė
  • 12 V maitinimo šaltinis - viskas, kas viršija 2 amperus, turėtų būti gerai
  • „DC Barrel Jack“- tokio paties dydžio kaip ir jūsų maitinimo šaltinis
  • NPN BJT galios tranzistoriai (x3) - naudoju TIP31C
  • Vyrų ir moterų kaiščių antraštės - neprivaloma, bet labai rekomenduojama

1 veiksmas: atsisiųskite „Express“, skirtą „Pi“

Atsisiųskite „Express“, skirtą „Pi“
Atsisiųskite „Express“, skirtą „Pi“

Aš nesiruošiu per daug išsamiai aprašyti „Pi“nustatymo, nes yra daug pamokų, kaip juos nustatyti.

Ką jums reikės padaryti, apie ką aš nekalbu …

  • Mirksi „Raspberry Pi“su naujausiu „Raspbian“
  • Nustatykite tinklo plokštę, kad galėtumėte pasiekti internetą iš „Pi“
  • „Raspberry Pi“nustatykite statinį IP

Dabar čia prasideda linksmybės! Turime įdiegti nodeJS, npm, express ir express-generator.

sudo apt-get atnaujinimas

sudo apt-get install nodejs npm

Kai jie bus įdiegti, paleiskite šiuos veiksmus

npm įdiegti „express express-generator“

„Express“leidžia jums sukurti labai paprastą žiniatinklio serverį, kad galėtumėte naudoti „Raspberry Pi“. „Express-generator“tiesiog automatiškai generuoja failus greitojo serveriui.

Sukurkite katalogą ir įrašykite diską į katalogą. Aš pavadinau savo piWebpage. Dabar vykdykite šiuos veiksmus (taip pat matoma paveikslėlyje)

mkdir piWebpage

cd piWebpage express --view = ejs webApp

Tai sugeneruos aplanką pavadinimu webApp su visais jame esančiais ekspreso failais. Jei vėliau planuojate nuveikti daugiau su šiuo tinklalapiu ir jums patinka PUG, pakeiskite --view = ejs į --view = pug. Mes neliesime tinklalapio, todėl šiai programai nesvarbu, ką naudojame.

2 žingsnis: „Pi“serverio sąranka

Pereikite į naują „WebApp“katalogą.

cd webApp

npm įdiegti

„npm“diegimas užtruks šiek tiek laiko, nes jis diegia visas „Express“priklausomybes.

Įklijuokite setColor.py į aplanką „webApp“. Šiame faile yra keletas pagrindinių spalvų nustatymų. Nesivaržykite pridėti daugiau, kaip jums patinka. Diapazonas yra nuo 0 iki 255, kur 255 yra pilnos spalvos. Tam tikru momentu greičiausiai pridėsiu galimybę pritemdyti šviesas, tačiau kol kas jos yra visiško ryškumo.

Pereikite prie maršrutų

cd maršrutai

Dabar pakeiskite index.js pridėtu failu. Tai pridės keletą eilučių, kad gautų POST komandą, kurią atsiųs „Google Home“. Iš to POST gausime pasirinktą spalvą ir liepsime „Pi“paleisti „setColor python“scenarijų, kad sureguliuotų šviesas.

Paskutinis dalykas … Grįžkite į aplanką „WebApp“.

cd ~/piWebpage/webApp

Naudodami mėgstamą redaktorių įklijuokite ir išsaugokite žemiau esantį kodą savo webApp.js. Visur yra gerai, kol yra prieš „modul.exports = app;“

// Sąrankos šviesos diodų aparatinės įrangos tvarkyklėconst {{}} = reikalauti ('child_process'); exec ('sudo pigpiod', (err, stdout, stderr) => {if (err) {console.log ('Klaida įkeliant LED tvarkyklę'); return;} else console.log ('LED tvarkyklė sėkmingai įkelta'); });

Kaip sakoma komentare, „pigpiod“yra techninė PWM signalų tvarkyklė, kurią naudosime LED spalvoms koreguoti. Manau, kad jis jau įdiegtas „Raspbian“, bet jei ne…

sudo apt-get install pigpiod

O dabar tikrasis išbandymas! Pradedame serverį!

DEBUG = žiniatinklio programa:* npm start

3 žingsnis: IFTTT sąranka (aktyviklis)

IFTTT sąranka (aktyviklis)
IFTTT sąranka (aktyviklis)
IFTTT sąranka (aktyviklis)
IFTTT sąranka (aktyviklis)

IFTTT gali padaryti daug, ir aš labai rekomenduočiau pasižvalgyti po kai kurias programas.

Pirma, turėsite susikurti paskyrą. Naudokite tą pačią „Google“paskyrą, susietą su „Google Home“, kitaip jie nebus sinchronizuojami kartu. Baigę ir prisijungę spustelėkite IFTTT puslapio viršutiniame dešiniajame kampe rodomą jūsų vardą ir avatarą. Tada išskleidžiamajame meniu spustelėkite Nauja programėlė.

Jei įdomu, IFTTT reiškia IF This then That, jei nepastebėjote pasirodžiusio ekrano. Taigi, ko mes norime, yra „If Google Assistant“, tada „Webhook“kaip mūsų parinktys.

Tęskite spustelėdami +tai, kad būtų įkelta paieškos juosta. Paieškoje įveskite „Google Assistant“ir spustelėkite piktogramą po paieška.

Skiltyje „Pasirinkite trigerį“pasirinkite trečiąją parinktį, pavadintą Pasakykite frazę su teksto sudedamąja dalimi. Dabar tai leidžia jums turėti 3 komandas, kurios atliks tą patį veiksmą. $ Pridedate prie frazės, kur paminėtumėte spalvą. Pavyzdžiui, jei aš natūraliai sakyčiau „Ei, Google“, nustatykite mėlynus šviesos diodus (kad ir kaip natūralu būtų šaukti ant įrenginio), tada įvesčiau laukelį „Nustatyti LED“$. Padarykite tai visuose 3 laukuose su skirtingomis komandos versijomis.

3, kuriuos naudojau, buvo

Šviesos diodai $

Nustatykite šviesos diodus $

Nustatykite LED spalvą $

Paskutinis laukas yra tai, ką norėtumėte, kad „Google“pagrindinis puslapis atsakytų ištaręs jūsų komandą. Tai gali būti viskas, ko norite, bet aš naudoju Nustatyti spalvą į $. $ Reiškia, kad ji pakartos spalvą atgal.

Spustelėkite Sukurti trigerį

4 žingsnis: IFTTT sąranka (veiksmas)

IFTTT sąranka (veiksmas)
IFTTT sąranka (veiksmas)
IFTTT sąranka (veiksmas)
IFTTT sąranka (veiksmas)

Spustelėję „Sukurti trigerį“vėl įkeliate į rodinį „jei tai tada“, tačiau jis buvo pakeistas „Google“padėjėjo logotipu. Tęskite spustelėdami +tai

Tas pats, kas anksčiau, kai jis nukreipia jus į paieškos juostą. Įveskite „Webhooks“ir spustelėkite „webhook“piktogramą po paieškos juosta. Skiltyje „Pasirinkite veiksmą„ Webhooks “yra tik viena parinktis, todėl spustelėkite Pateikti žiniatinklio užklausą.

Čia viskas tampa šiek tiek sudėtinga. Kadangi „Google“nėra kitas jūsų namų kompiuteris, jums reikės išorinio IP adreso. Tam reikės tam tikro uosto persiuntimo, bet mes tai paliesime vėliau. Norėdami gauti išorinį IP adresą, eikite į

URL lauke įveskite https://xxx.xxx.xxx.xxx:3000/{{TextField}} (x yra jūsų išorinis IP adresas). Jei jums įdomu, „TextField“turės spalvą, kurią pasirinkote kurdami komandą. Priežastis, kodėl mes naudojame 3000, yra ta, kad būtent prievadas veikia „Raspberry Pi Express“serveryje. (Galite pakeisti kodo prievadą, bet mes naudojame tik numatytuosius „Express“nustatymus)

Metodui pasirinkite POST.

Turinio tipui pasirinkite tekstą/paprastą.

Kūno atveju įveskite {{TextField}}

Tie iš jūsų, kurie žino, kaip veikia POST komanda, manytumėte, kad jei išanalizuosite užklausos turinio ypatybę, gausite spalvą. Dėl tam tikrų priežasčių į užklausos turinio lauką niekada nieko neįvedama, todėl iš tikrųjų analizuoju spalvos URL. Tikiuosi, kad tai greitai bus ištaisyta, nes tai supaprastintų mano kodą index.js maršrute. Bet aš nukrypstu.

Galiausiai spustelėkite Sukurti veiksmą ir tada Baigti kitame puslapyje. (Išjungiau pranešimus, bet tai pirmenybė)

5 žingsnis: uosto persiuntimas

Uosto persiuntimas
Uosto persiuntimas
Uosto persiuntimas
Uosto persiuntimas

Čia sunku paaiškinti dalykus, nes visi maršrutizatoriai yra skirtingi …

Dabar „Google“siunčia komandą į mūsų namus naudodamas 3000 prievadą, tačiau ji nežino, į kurį LAN įrenginį reikia eiti. Norėdami tai išspręsti, turime persiųsti 3000 prievadą į jūsų „Raspberry Pi“vietinį IP adresą.

Eikite į savo maršrutizatorių naudodami 10.0.0.1 arba 192.168.1.1 (aš taip pat mačiau, kai paskutinis skaitmuo yra 254) ir raskite prievado peradresavimą. Uosto peradresavime, panašiai kaip paveikslėlyje, pavadinsite naują įrenginį (IFTTT) ir persiųsite prievadą (3000) į Pi IP adresą (mano atveju 10.0.0.11).

Išsaugokite naują nustatymą, iš naujo paleiskite maršrutizatorių ir patikrinkite, ar „Raspberry Pi“serveris vis dar veikia. Jei jis neveikia, paleiskite jį iš naujo.

Grįžkite į tą patogią svetainę https://canyouseeme.org/. Po jūsų IP adresu yra prievado tikrintuvas. Darant prielaidą, kad jūsų prievado persiuntimas yra teisingas, įveskite 3000 ir paspauskite patikrinti prievadą. Tai turėtų grįžti su sėkme.

6 žingsnis: patikrinkite savo darbą iki šiol

Tikrinamas jūsų darbas iki šiol
Tikrinamas jūsų darbas iki šiol
Tikrinamas jūsų darbas iki šiol
Tikrinamas jūsų darbas iki šiol

Dabar … akimirka, kurios laukėte … Pasakykite „Google“komandą, pvz., Mėlynos spalvos šviesos diodus (jei sekėte mano pavyzdžiu).

Darant prielaidą, kad viskas vyko teisingai, rezultatas bus matomas paveikslėlyje. Mes dar neturime grandinės, todėl viskas, ką pamatysite, yra tekstas ekrane. Paprastai užtrunka sekundę ar dvi, kol ji apdorojama iš „Google“ir rodoma „Pi“.

(Pereikite prie kito veiksmo, jei jis pasirodė panašus į paveikslėlį)

Dabar yra keletas dalykų, į kuriuos reikia atkreipti dėmesį, jei nepavyko …

Nuotraukoje yra eilutė, kuri sako

POST /spalva /mėlyna 200 250,458 ms - 2

200 yra svarbi dalis. Jei nematote 200, tada buvo blogas POST, tai reiškia, kad jūsų serveris nežinojo, ką daryti su duomenimis. Grįžkite prie 2 veiksmo ir patikrinkite failą index.js.

Taip pat nuotraukoje

stdout: mėlyna

stderr:

Tai yra python failo, kuriame veikia šviesos diodai, išvestis. Jei ten matote klaidą, gali būti, kad 2 veiksme neįdiegėte tvarkyklės.

Galiausiai, jei nieko nepasirodė … galbūt jūsų IFTTT nebuvo tinkamai nustatytas arba nepavyko prisijungti prie serverio. Grįžkite į IFTTT puslapį ir viršutinėje naršymo juostoje spustelėkite Veikla. Ten galite matyti kiekvieną kartą, kai programa paleidžiama, o jei įvyko klaida, galite pamatyti, kas tai buvo. Aš daviau „Google“komandą išjungęs „Pi“serverį ir gavau klaidą paveikslėlyje.

7 žingsnis: grandinės kūrimas

Grandinės kūrimas
Grandinės kūrimas
Grandinės kūrimas
Grandinės kūrimas
Grandinės kūrimas
Grandinės kūrimas

Priežastis, kodėl mes turime tai padaryti, yra ta, kad „Raspberry Pi“neturi pakankamai galios … Taigi sprendimas yra… DAUGIAU GALIOS (Timas, įrankis, vyras Tayloras grumiasi iš tolo). AKA kitas maitinimo šaltinis (12V 2A)

Medžiagos grandinės daliai

  • Protoboard
  • Viela
  • RGB LED juostelė
  • 12 V maitinimo šaltinis - viskas, kas viršija 2 amperus, turėtų būti gerai
  • „DC Barrel Jack“- tokio paties dydžio kaip ir jūsų maitinimo šaltinis
  • NPN BJT galios tranzistoriai (x3) - naudoju TIP31C
  • Vyrų ir moterų kaiščių antraštės

Naudodamiesi patogia nuotrauka, kurią pavogiau iš „Pi Zero“GPIO tinklų, galite pamatyti, kad „GPIO17“, „GPIO18“ir „GPIO 27“yra vienas šalia kito su GND. Mes naudosime tą 4 kaiščių kvadratą (kaiščiai 11, 12, 13, 14).

Visų pirma, aš rekomenduočiau lituoti antraštes ant jūsų LED juostos, kaip parodyta paveikslėlyje (ne mano geriausias darbas). Tai leidžia lengvai atsijungti, jei to prireiks. Šviesos diodų juostelės prijungimui prie protoboorto naudojau moteriškas antraštes, o antraštes - „Raspberry Pi“. (Maitinimo/signalo šaltiniui visada naudokite moteriškas jungtis). Jums nereikia perkelti visų Pi kaiščių vienas šalia kito, kaip aš … Aš tiesiog norėjau, kad jis atrodytų švarus, bet tai buvo daug darbo.

Grandinės paaiškinimas

Tiems iš jūsų, kurie nėra susipažinę su tranzistoriais, tranzistoriai iš esmės yra skaitmeninis jungiklis. „GPIO“kaiščiai iš „Pi“paleidžia tris jungiklius (raudoną, žalią ir mėlyną). Žvelgiant konkrečiai į RED schemoje, kai įjungtas GPIO_17, jungiklis „užsidaro“, jungiantis RED su GND, todėl raudonos lemputės užsidega. Kai „GPIO_17“išsijungia, jungiklis yra atidarytas, todėl šviesos išjungiamos.

Bazė - GPIO

Kolekcionierius - spalvos (RAUDONA, ŽALIA, MĖLYNA)

Emiteris - įžeminimas (tiek maitinimo šaltinio, tiek Pi)

Būtinai prijunkite „Pi“įžeminimą prie maitinimo šaltinio žemės. Žibintai vis tiek veiks, tačiau jie bus labai silpni, kol nebus prijungta žemė.

Aš turiu ketvirtą tranzistoriaus išvaizdos įrenginį savo protoboate. Tai L7805CV, naudojamas 12V konvertuoti į 5V, kad galėčiau maitinti Pi toje pačioje grandinėje. Jis veikė, bet nuolat kaitino, todėl pašalinau jo jungtis.

8 žingsnis: išbandykite

Baigę grandinę, prieš užmezgdami bet kokius ryšius, iš naujo paleiskite „Pi“. Taip yra todėl, kad kaiščiai tikriausiai vis dar yra aktyvūs atliekant serverio testą. Arba galite nužudyti serverį ir „pigpiod“paslaugą.

Prijunkite šviesos diodus ir trumpiklius iš protoboard prie „Pi“. Prieš tiekdami maitinimą, dar kartą patikrinkite visas jungtis. Jei prijungėte neteisingai, galite kepti savo Pi (be slėgio).

Kontrolinis sąrašas

  • Patikrinkite laidus
  • „Power Pi“
  • Maitinimo grandinė
  • Paleisti serverį (DEBUG = webapp:* npm start, kai esate kataloge ~/piWebpage/webApp)
  • Liepkite „Google“atlikti jūsų siūlymus!

SVEIKINAME, kad nieko nesprogėte, o dabar galite valdyti savo šviesos diodus iš „Google Home“.

Palikite komentarus, jei turite problemų, ir aš padarysiu viską, kad su jumis susisieksime!

Rekomenduojamas: