Kazalo:

Nadzor pametnega doma z Alexa in Arduino: 9 korakov (s slikami)
Nadzor pametnega doma z Alexa in Arduino: 9 korakov (s slikami)

Video: Nadzor pametnega doma z Alexa in Arduino: 9 korakov (s slikami)

Video: Nadzor pametnega doma z Alexa in Arduino: 9 korakov (s slikami)
Video: CS50 2013 - Week 9 2024, November
Anonim
Image
Image
Zbiranje materialov
Zbiranje materialov

V sedanjem svetu ljudje preživijo več časa na delovnem mestu kot doma. Zato obstaja potreba po sistemu za nadzor doma, kjer lahko ljudje spoznajo razmere v hiši, medtem ko so v službi. Še bolje bi bilo, če bi lahko med delovnim časom samo »nekoga« vprašali o svojem domu. To je mogoče doseči z uporabo Amazon Alexa kot pomočnika, ki lahko uporabniku da potrebne informacije o svojem domu.

Ne le delovno mesto. Uporabniki lahko spoznajo stanje hiše kjer koli na svetu, če imajo internetno povezavo in Amazon Alexa.

V tem projektu se izvajajo naslednje funkcije:

1) Upravljajte gospodinjske naprave, kot sta ventilator in luč

2) Pove stanje naprave

3) Pove vremenske razmere v hiši (temperatura in vlaga)

4) Po potrebi uporabniku po Gmailu pošlje posnetek notranjosti hiše.

5) Pošlje obvestilo v primeru -

* Vsiljivec (pošlje tudi fotografijo)

* Požar

* Gost (pošlje tudi fotografijo)

1. korak: Zbiranje materialov

Zbiranje materialov
Zbiranje materialov
Zbiranje materialov
Zbiranje materialov
Zbiranje materialov
Zbiranje materialov

Potrebni materiali

Arduino Uno

ESP8266 Wifi modul

Linkit Smart 7688 Duo

DHT11

Releji

Senzor IR ovir

Spletna kamera

Amazon Echo Dot

Breadboard in mostične žice

Programska oprema in spletne storitve:

Thingspeak.com

Arduino IDE

Komplet spretnosti Amazon Alexa

Amazon Alexa Echosim.io (za preizkušanje spretnosti)

Brez zaledja

PushingBox

2. korak: Programiranje Arduina in ESP8266

Programiranje Arduina in ESP8266
Programiranje Arduina in ESP8266
Programiranje Arduina in ESP8266
Programiranje Arduina in ESP8266

Prenesite Arduino IDE z uradne spletne strani:

Odprite Arduino IDE in pojdite na file-> preferences-> v dodatni URL URL upravitelja plošče-https://arduino.esp8266.com/stable/package_esp8266…

Pojdite na orodja -> plošče -> Upravitelj plošč in namestite končno najden paket esp8266.

Za programiranje arduina samo priključite kabel USB iz arduina v računalnik in izberite Arduino/Genuino UNO v orodjih-> ploščah. Prav tako v orodjih izberite prava COM (številka vrat COM je na voljo v upravitelju naprav). Napišite zahtevan program, ga sestavite in kliknite naloži, če ni napak.

Za programiranje ESP8266 vzpostavite povezavo, kot je prikazano na diagramu. priključite USB iz arduina na računalnik. V orodju-> plošča-> izberite Generic ESP8266 in izberite tudi desna vrata COM. Napišite zahtevan program, ga sestavite in kliknite naloži, če ni napak. Arduino RST priključite na GND (arduino deluje kot programer na ESP8266).

V tem projektu se najprej programira ESP8266, nato pa se odstranijo povezave vezja. Nato se vezje ponovno poveže, kot je prikazano na sliki z imenom "Povezave vezja". In potem je arduino programiran.

3. korak: Konfiguriranje Thingspeak.com

Konfiguriranje Thingspeak.com
Konfiguriranje Thingspeak.com

Ustvarite račun na thingspeak.com.

uporabljamo kanale v Thingspeak za shranjevanje podatkov o nadzoru naprave in jih usmerimo na arduino/alexa. V kanale shranimo tudi vrednosti temperature in vlažnosti. Je kot mesto za shranjevanje informacij.

Prijavite se v Thingspeak, pojdite na kanale moje kanale in ustvarite nov kanal. Dajte ime in opis svojim kanalom. V našem projektu potrebujemo 8 kanalov (delo lahko opravite z manj kanali, vendar bo to pri programiranju nekoliko zapleteno). Tudi Thingspeak ima časovno omejitev pri posodabljanju kanala. Med zaporednim posodabljanjem določenega kanala mora biti 10-15 sekund.

Spodaj je navedenih osem kanalov s svojimi vrednostmi in pomenom

ime kanala (vrednost1-pomen, vrednost2-pomen itd.):

1) Nadzor naprave (0 -lightON, 1- lightOff, 2 ventilator vklopljen, 3 ventilator izklopljen)

2) stanje luči (0- lučka ugasnjena, 1 lučka vklopljena)

3) stanje ventilatorja (0- ventilator izklopljen, 1 ventilator vklopljen)

4) vlažnost (vrednost vlažnosti)

5) temperatura (vrednost temperature)

6) obvestilo vsiljivca (opozorilo 1 vsiljivca)

7) obvestilo o požaru (1 požarno opozorilo)

8) obvestilo gosta (1 opozorilo gosta)

ko kliknete kateri koli kanal, si lahko ogledate njegov ID kanala in zapišete ključe API na zavihku ključi API. ID kanala je potreben za pridobivanje informacij/ vrednosti v kanalu. Za shranjevanje vrednosti v kanalu je potreben ključ za pisanje.

http zahteva za posodobitev kanala je:

api.thingspeak.com/update?api_key=&field1=

se nadomesti z ustreznimi tipkami za pisanje kanala in je lahko (0/1 v primeru nadzora naprave ali vrednosti temp/vlažnosti)

http zahteva za branje vrednosti iz kanala je:

api.thingspeak.com/channels//field/field1/last.html

se nadomesti z določenim ID -jem kanala, iz katerega želimo brati.

4. korak: Program

Program je razdeljen na 3 dele:

A) Program za Arduino: program za arduino je zelo preprost. Podatke od ESP8266 prejema zaporedno in na podlagi prejetih podatkov nadzoruje naprave. Več informacij o programu najdete v komentarjih v samem programu.

B) Program za ESP8266: program za ESP8266 vključuje 3 stvari

1) posodabljanje temperature in vlažnosti z zahtevo

client.print (String ("GET") + "/update? key = & field1 =" + vlažnost + "HTTP/1.1 / r / n" + "Gostitelj:" + gostitelj + "\ r / n" + "Povezava: zaprite / r / n / r / n "); // posodobitev vlažnosti

client.print (String ("GET") + "/update? key = & field1 =" + temperatura + "HTTP/1.1 / r / n" + "Gostitelj:" + gostitelj + "\ r / n" + "Povezava: zaprite / r / n / r / n "); // posodobitev temperature

se nadomesti z ustreznim ključem za zapis, ki ga najdemo v kanalu thingspeak za vlažnost oziroma temperaturo. in gostitelj je api.thingspeak.com.

Prenesite knjižnico dht s:

2) branje iz ustreznih kanalov predvajanja in krmilne naprave na podlagi pridobljenih vrednosti: client.print (String ("GET") + "/channels//field/field1/last.html HTTP/1.1 / r / n" + " Gostitelj: " + gostitelj +" / r / n " +" Povezava: zaprite / r / n / r / n ");

kjer se nadomesti z ustreznim ID -jem kanala, ki ga najdemo v Thingspeak.

3) Pošiljanje opozorila v primeru visoke temperature prek potisne škatle

Niz host1 = "api.pushingbox.com";

client.print (String ("GET") + "/pushingbox? devid = HTTP/1.1 / r / n" + "Gostitelj:" + host1 + "\ r / n" + "Povezava: zaprite / r / n / r / n ");

kjer je v potisnem polju zamenjan z ID -jem vaše naprave.

5. korak: Konfiguriranje Linkit Smart 7688 Duo in spletne kamere

Konfiguriranje Linkit Smart 7688 Duo in spletne kamere
Konfiguriranje Linkit Smart 7688 Duo in spletne kamere
Konfiguriranje Linkit Smart 7688 Duo in spletne kamere
Konfiguriranje Linkit Smart 7688 Duo in spletne kamere
Konfiguriranje Linkit Smart 7688 Duo in spletne kamere
Konfiguriranje Linkit Smart 7688 Duo in spletne kamere

V tem projektu se spletna kamera in linkit smart 7688 duo uporabljata za zajemanje zahtevane fotografije in njeno pošiljanje uporabniku. Uporabite lahko tudi modul kamere arduino in ga povežete z arduinom ali pa uporabite katero koli IP kamero.

Pritisnite in držite gumb wifi na povezavi smart 7688 20 sekund, da ponastavite ploščo. Po ponastavitvi nastavitve wifi boste lahko v povezavah brezžičnega omrežja videli njeno ime dostopne točke. Zdaj povežite računalnik s tem omrežjem. ko ga povežete, odprite brskalnik in v naslovno vrstico vnesite 192.168.100.1. Videli boste lahko njegov portal. nastavite geslo za prijavo na svoj portal.

Ko se prijavite, pojdite na zavihek omrežje in izberite Način postaje (potrebujemo ga (linkit smart 7688 duo) za dostop do interneta) in ga povežite z omrežjem Wifi ter pritisnite Konfiguriraj in znova zaženite.

Po ponovnem zagonu plošče bo dodeljen lokalni naslov IP. Naslov poiščite s katerim koli orodjem IP ali portalom usmerjevalnika. V mojem primeru je bil 192.168.1.4. Zdaj v naslovno vrstico brskalnika vnesite lokalni naslov IP. poskrbite, da je računalnik povezan v isto omrežje kot linkit smart. Ponovno se boste morali prijaviti.

Če želite omogočiti pretakanje iz spletne kamere, morate omogočiti pretakanje -j.webp

Ko se prijavite, pojdite na zavihek storitev in preverite, ali je omogočeno pretakanje -j.webp

Po nastavitvi lahko spletno kamero povežete z gostiteljem linkit smart 7688 duo usb prek kabla OTG. Zdaj, da vidite Stream, odprite brskalnik in v naslovno vrstico vnesite: v mojem primeru je 192.168.1.4:4400

za posnetek posnetka vnesite ukaz:? action = snapshot

Zdaj je ta slika na voljo lokalno, vendar jo moramo dati na voljo storitvi pushing box. Da bi to dosegli, moramo posredovati vrata. Posredovanje vrat se lahko izvede na portalu usmerjevalnika. ID procesa je za različne usmerjevalnike drugačen. Če želite vedeti, kako prenesti naprej za določen usmerjevalnik, poiščite Google. Običajno je na voljo v storitvi NAT. Ko preusmerite vrata, lahko dostopate do teh vrat (tj. 4440) z vašega zunanjega IP -ja. Zunanji IP lahko najdete tako, da v google vnesete "whats my ip".

Ta naslov morate vnesti

tj.. https://::? action = posnetek

v potisnem polju (kar je razloženo v naslednjem koraku), tako da lahko potisni predal dostopa do te slike in jo priloži k pošti ter vam jo pošlje, kadar koli je to potrebno.

Sliko lahko shranite tudi na SD kartico, saj ima Linkit smart 7688 duo tudi režo za SD kartico za shranjevanje informacij. Več informacij o tem najdete na:

docs.labs.mediatek.com/resource/linkit-sm…

6. korak: Konfiguriranje PushingBox

Konfiguriranje PushingBox
Konfiguriranje PushingBox

pushhingbox se uporablja za pošiljanje obvestil o različnih opozorilih v projektu v gmail.

prijava v pushhingbox z google računom:

pojdi na moje storitve dodaj storitev. na izbiro je veliko storitev, kot so Gmail, twitter, potisno obvestilo za android itd …

izberite Gmail (ker moramo kot prilogo poslati fotografijo) in vnesite ustrezno konfiguracijo imena gmail in gmail ID uporabnika, ki mu je treba poslati opozorilo.

pojdite na moje scenarije in ustvarite nov scenarij. daj ime scenariju (npr.: ALERT) dodaj prej ustvarjeno storitev.

napišite primeren predmet in telo pošte ter vnesite url, da naredite posnetek zaslona spletne kamere za prilogo fotografije. Ustvarite različne scenarije za različna opozorila.api za izvajanje scenarija potisne škatle je:

7. korak: Ustvarjanje Alexa spretnosti z uporabo Backendless

Ustvarjanje Alexa spretnosti z uporabo Backendless
Ustvarjanje Alexa spretnosti z uporabo Backendless
Ustvarjanje Alexa spretnosti z uporabo Backendless
Ustvarjanje Alexa spretnosti z uporabo Backendless
Ustvarjanje Alexa spretnosti z uporabo Backendless
Ustvarjanje Alexa spretnosti z uporabo Backendless

backendless se uporablja za ustvarjanje veščine alexa. To je preprosto programiranje povleci in spusti, ki se uporablja za ustvarjanje spretnosti alexa (ali katerega koli programa), do katerega lahko dostopate z API -jem brez zaledja.

ustvarite račun v backendless:

  • Prijavite se v svoj račun v računu brez zaledja. kliknite Ustvari aplikacijo in aplikaciji dajte ime
  • Kliknite ikono Business Logic, ki se nahaja v vrstici z ikonami na levi. Prikazal se bo zaslon API STORITVE.
  • Če želite ustvariti novo storitev, kliknite ikono »+«. V pojavnem oknu »Nova storitev« izberite CODELESS. Za ime storitve vnesite »AlexaService«. Kliknite gumb SHRANI:
  • Backendless ustvari storitev API in vas bo pozval, da ustvarite metodo za storitev. To bo metoda obdelave zahtev Alexa. Za ime metode vnesite “handleRequest”. Za operacijo REST izberite POST in razglasite argument z imenom »req« in vnesite »Any Object«, kot je prikazano:
  • Backendless ustvari nadomestno mesto za brezkodno logiko metode. Kliknite gumb Uredi za začetek preklopa na brezkodnega oblikovalca logike. V ustvarjenem bloku nadomestnih znakov funkcije kliknite območje z napisom "doSomething" in ga spremenite v "sendAlexaResponse". Ta funkcija se uporablja za to, da alexa pove nekaj, kar se lahko posreduje kot argument. Kliknite gumb SHRANI, da bo funkcija shranjena.
  • Kliknite ikono zobnika v vijoličnem bloku tik ob besedi »Funkcija«. Dodajte dva argumenta tako, da povlečete vhodne bloke, kot je prikazano na spodnji sliki. Imena argumentom dodelite kot »whatToSay« in »waitForResponse«. Upoštevajte, da se med dodajanjem argumentov območje kontekstnih blokov samodejno naseli z bloki, ki predstavljajo vrednosti argumentov.
  • Spremenite logiko funkcije, tako da bo videti kot na sliki. Za bloke »Ustvari predmete« z ikono zobnika spremenite ime lastnosti predmeta. Ne pozabite shraniti svojega dela s klikom na gumb SHRANI.
  • Zdaj, ko je funkcija po meri zgrajena, preklopite nazaj na metodo handleRequest storitve AlexaService. Kliknite kategorijo Funkcije po meri v orodni vrstici na levi in povlecite blok sendAlexaResponse, da se povežete s povratnim priključkom vašega načina storitve
  • Zgornje korake najdete tudi na njihovi spletni strani: https://backendless.com/developing-alexa-skill-wi…
  • Kliknite na vozlišče »Dodaj novo« pod Funkcije v razdelku BROWSER. V ustvarjenem bloku nadomestnih znakov funkcije kliknite območje z napisom »doSomething« in ga spremenite v »getIntentName«, da spremenite bloke tako, da bo funkcija videti kot prikazana slika. bo dobil ime namena na podlagi vzorčnih izjav. Vrnite se na api services-> handle request v razdelku brskalnika. Spremenljivke in logika se ustvarijo iz sistemskega razdelka. Ustvarite naslednje spremenljivke, prikazane na slikah.
  • nato shranimo ime namera, da zahteva spremenljivko. In potem primerjajte z nameni. na primer, če je zahteva "uvod", potem je spremenljivka odgovora nastavljena na "zdravo! Lahko nadziram ……." in ta odgovor Alexa končno glasno prebere. spremenite blok, kot je prikazano.
  • če je zahteva LightsOn, potem s pomočjo http get request posodobimo kanal thingspeak na '0' in hkrati posodobimo stanje naprave (1/0, odvisno od Vklop/Izklop). Enako se ponovi za LightsOff, FanOn in FanOff.
  • Za vreme beremo s kanala Temperatura in vlažnost in rezultat shranimo v spremenljivko response. Ker kanal daje samo vrednosti, dodajamo besedila, da bo odgovor smiseln
  • za posnetek dnevne sobe izvedemo scenarij pushhingbox
  • za stanje naprave beremo informacije iz statusnega kanala Thingspeak:
  • za obvestila in opozorila, ki jih beremo z opozorilnih kanalov (požar, vsiljivec in gost):
  • na podlagi vrednosti, ki jih dobimo iz polja za obvestila, so ustrezna opozorilna sporočila shranjena v spremenljivki response0. če ni obvestila, se ne shrani nobeno obvestilo.
  • ko je obvestilo prebrano, se '0' posodobi v kanalih za obvestila, tako da alexa ne bo več brala istega obvestila. Nato se na podlagi zahteve na glas glasno prebere spremenljivka response0/response.

8. korak: Konfiguriranje Alexa Skill v konzoli za razvijalce Amazon:

Konfiguriranje Alexa Skill v konzoli za razvijalce Amazon
Konfiguriranje Alexa Skill v konzoli za razvijalce Amazon
Konfiguriranje Alexa Skill v konzoli za razvijalce Amazon
Konfiguriranje Alexa Skill v konzoli za razvijalce Amazon
Konfiguriranje Alexa Skill v konzoli za razvijalce Amazon
Konfiguriranje Alexa Skill v konzoli za razvijalce Amazon

pojdite na konzolo za razvijalce Amazon in se prijavite z računom Amazon.

pojdite na konzolo za razvijalce in kliknite zavihek ALEXA. Kliknite na komplet spretnosti alexa za začetek.

ustvarite vrsto spretnosti po meri, dajte ime in ime priklica spretnosti. ustrezni nameni in vzorčni izrazi so podani v kodi.

na zavihku konfiguracije izberite HTTPS kot vrsto končne točke storitve in izpolnite privzeti URL z URL -jem API -ja iz brez okolja. Izberite drugo možnost v potrdilu za privzeto končno točko v potrdilu SSL. Prav tako lahko preizkusite spretnost s testnim simulatorjem.

Po končanem testu lahko objavite spretnost z zahtevanimi informacijami o objavi.

9. korak: Končna nastavitev in dokončanje

Končna nastavitev in končaj!
Končna nastavitev in končaj!
Končna nastavitev in končaj!
Končna nastavitev in končaj!

Povežite vezje, kot je prikazano.

Včasih ESP8266 ne deluje pravilno zaradi nezadostnega toka. Torej, čeprav v tokokrogu ni omenjeno, je priporočljivo, da napajate ESP8266 iz ločenega vira 3,3 V. Če uporabljate power bank, zmanjšajte napetost s 5v na 3.3v z regulatorjem napetosti 3.3v. Program naložite na ESP8266 in arduino. Pokazal sem povezavo z žarnico, isto se lahko razširi na ventilator ali katero koli napravo. Na koncu uporabite amazon echo ali echosim.io, da preizkusite svoje sposobnosti.

Morate aktivirati spretnost z imenom priklica (kot je moj primer - "myhome"). Včasih ne bo delovalo, če se uporablja brez imena klica, kot sem nekajkrat pokazal v svojem videoposnetku

Upam, da ste uživali v vadnici!

Hvala vam!

Priporočena: