INHOUDSOPGAWE:

Smart Home Monitoring met Alexa en Arduino: 9 stappe (met foto's)
Smart Home Monitoring met Alexa en Arduino: 9 stappe (met foto's)

Video: Smart Home Monitoring met Alexa en Arduino: 9 stappe (met foto's)

Video: Smart Home Monitoring met Alexa en Arduino: 9 stappe (met foto's)
Video: Automatic Motion Detection Camera 📸Send Image to Telegram📲Smart 🏠Home Automation Using Arduino & GSM 2024, November
Anonim
Image
Image
Versameling van materiaal
Versameling van materiaal

In die huidige wêreld spandeer mense meer tyd op die werkplek as in hul huise. Daarom is daar 'n tuismoniteringstelsel nodig waar mense die huis se toestande kan leer ken terwyl hulle werk. Dit sou nog beter wees as 'n mens net 'iemand' kan vra oor hul huis gedurende werksure. Dit kan bereik word deur gebruik te maak van Amazon Alexa as 'n assistent wat die gebruiker die nodige inligting oor hul huis kan gee.

Gebruikers kan nie net die werkplek op enige plek ter wêreld ken nie, solank hulle 'n internetverbinding en Amazon Alexa het.

Die volgende funksies word in hierdie projek geïmplementeer:

1) Beheer die huishoudelike toestelle soos waaier en lig

2) Vertel die status van die toestelle

3) Vertel die weerstoestand van die huis (temperatuur en humiditeit)

4) Stuur indien nodig die momentopname van die binnekant van die huis aan die gebruiker via Gmail.

5) Stuur kennisgewing in geval van -

* Indringer (stuur ook foto)

* Vuur

* Gas (stuur ook foto)

Stap 1: Versamel die materiaal

Versameling van materiaal
Versameling van materiaal
Versameling van materiaal
Versameling van materiaal
Versameling van materiaal
Versameling van materiaal

Materiaal benodig

Arduino Uno

ESP8266 Wifi -module

Linkit Smart 7688 Duo

DHT11

Relays

IR hindernis sensor

Webkamera

Amazon Echo Dot

Broodbord en springdrade

Sagteware en aanlyn dienste:

Thingspeak.com

Arduino IDE

Amazon Alexa vaardigheidsstel

Amazon Alexa Echosim.io (vir die toets van vaardigheid)

Agtergrondloos

PushingBox

Stap 2: Programmering van die Arduino en ESP8266

Programmering van die Arduino en ESP8266
Programmering van die Arduino en ESP8266
Programmering van die Arduino en ESP8266
Programmering van die Arduino en ESP8266

Laai die Arduino IDE af vanaf die amptelike webwerf:

Maak Arduino IDE oop en gaan na lêer-> voorkeure-> in addisionele bordbestuurder-URL-tipe-https://arduino.esp8266.com/stable/package_esp8266…

Gaan na tools -> boards -> Board Manager en installeer die esp8266 -pakket wat u uiteindelik gevind het.

Om arduino te programmeer, koppel die USB-kabel van die arduino aan op die rekenaar en kies Arduino/Genuino UNO in gereedskap-> borde. Maak ook seker dat u die regte COM -poorte in die gereedskap kies (die COM -poortnommer kan in Toestelbestuurder gevind word). Skryf die vereiste program, stel dit op en klik op Laai op as daar geen foute is nie.

Om die ESP8266 te programmeer, maak die verbinding soos in die diagram getoon. koppel die usb van arduino aan die rekenaar. Kies in tools-> board-> Generic ESP8266 en kies ook die regte COM-poort. Skryf die vereiste program, stel dit op en klik op Laai op as daar geen foute is nie. Maak seker dat u Arduino RST aan GND koppel (arduino dien soos 'n programmeerder op ESP8266).

In hierdie projek word die ESP8266 eers geprogrammeer en dan word die stroombaanverbindings verwyder. Dan word die stroombaan weer verbind soos getoon in die figuur met die naam "Kringaansluitings". En dan word die arduino geprogrammeer.

Stap 3: Die opstel van Thingspeak.com

Die opstel van Thingspeak.com
Die opstel van Thingspeak.com

Skep 'n rekening op thingspeak.com.

ons maak gebruik van kanale in ThingsPeak om die apparaatbeheerinligting op te slaan en na arduino/alexa te stuur. ons stoor ook die temperatuur- en humiditeitswaardes in die kanale. Dit is soos 'n stoorplek vir die inligting.

Teken in op thingspeak, gaan na kanale op my kanale en skep 'n nuwe kanaal. Gee naam en beskrywing aan u kanale. In ons projek benodig ons 8 kanale (u kan die werk doen met minder kanale, maar dit sal 'n bietjie ingewikkeld wees tydens die programmering). Thingspeak het ook 'n tydsbeperking tydens die opdatering van 'n kanaal. Daar moet 'n gaping van 10-15 sek. Wees tussen die opeenvolgende opdatering van 'n spesifieke kanaal.

Agt kanale met hul waardes en betekenis word hieronder gegee

kanaalnaam (waarde1-betekenis, waarde2-betekenis, ens):

1) Toestelbeheer (0-lig, 1- lig uit, 2- waaier aan, 3- waaier uit)

2) ligstatus (0- lig af, 1- lig aan)

3) waaierstatus (0- waaier af, 1 waaier aan)

4) humiditeit (waarde van humiditeit)

5) temperatuur (waarde van temperatuur)

6) indringer kennisgewing (1- indringer waarskuwing)

7) brandkennisgewing (1- brandwaarskuwing)

8) gaskennisgewing (1- gaswaarskuwing)

As u op enige kanaal klik, kan u die kanaal -ID sien en API -sleutels in die API -sleutels -oortjie skryf. kanaal -ID is nodig om die inligting/ waarde in die kanaal te kry. En 'n skryf sleutel is nodig om 'n waarde in die kanaal te stoor.

http -versoek vir die opdatering van 'n kanaal is:

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

word vervang deur ooreenstemmende skryf sleutels van die kanaal en kan wees (0/1 in geval van toestelbeheer of temp/humiditeitswaardes)

http -versoek vir die leeswaarde van 'n kanaal is:

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

word vervang deur die spesifieke kanaal -ID van die kanaal waaruit ons wil lees.

Stap 4: Die program

Die program is in 3 dele verdeel:

A) Program vir Arduino: die program vir arduino is baie eenvoudig. Dit ontvang die data serieel van die ESP8266 en op grond van die ontvangde data word die toestelle beheer. Meer inligting oor die program word gevind in die kommentaar in die program self.

B) Program vir ESP8266: die program vir ESP8266 behels 3 dinge

1) die opdatering van die temperatuur en humiditeit met behulp van http -versoek

client.print (String ("GET") + "/update? key = & field1 =" + humiditeit + "HTTP/1.1 / r / n" + "Host:" + host + "\ r / n" + "Connection: close / r / n / r / n "); // werk humiditeit op

client.print (String ("GET") + "/update? key = & field1 =" + temperatuur + "HTTP/1.1 / r / n" + "Host:" + host + "\ r / n" + "Connection: close / r / n / r / n "); // opdateer temperatuur

die word vervang deur die ooreenstemmende skryfsleutel wat onderskeidelik gevind word in die dingekanaal vir humiditeit en temperatuur. en die gasheer is api.thingspeak.com.

laai dht-biblioteek af van:

2) lees vanaf ooreenstemmende kanale van dingesprek en beheer toestel gebaseer op die verkryde waardes: client.print (String ("GET") + "/chanels//field/field1/last.html HTTP/1.1 / r / n" + " Gasheer: " + gasheer +" / r / n " +" Verbinding: naby / r / n / r / n ");

waar word vervang deur ooreenstemmende kanaal -ID wat in thingspeak voorkom.

3) Stuur waarskuwing in geval van hoë temperatuur via die drukkas

String host1 = "api.pushingbox.com";

client.print (String ("GET") + "/pushingbox? devid = HTTP/1.1 / r / n" + "Host:" + host1 + "\ r / n" + "Connection: close / r / n / r / n ");

waar word vervang deur u toestel -ID in die pushbox.

Stap 5: Stel Linkit Smart 7688 Duo en webcam op

Stel Linkit Smart 7688 Duo en webcam op
Stel Linkit Smart 7688 Duo en webcam op
Stel Linkit Smart 7688 Duo en webcam op
Stel Linkit Smart 7688 Duo en webcam op
Stel Linkit Smart 7688 Duo en webcam op
Stel Linkit Smart 7688 Duo en webcam op

In hierdie projek word webcam en linkit smart 7688 duo gebruik om die vereiste foto te neem en dit na die gebruiker te stuur. U kan ook die arduino -kameramodule gebruik en dit met arduino koppel, of u kan enige IP -kamera gebruik.

Druk en hou die wifi -knoppie op die linkit smart 7688 vir 20 sekondes ingedruk om die bord terug te stel. Nadat die wifi -instelling herstel is, kan u die naam van die toegangspunt in die draadlose netwerkverbindings sien. Koppel nou die rekenaar aan die netwerk. Nadat u dit verbind het, maak die blaaier oop en tik 192.168.100.1 in die adresbalk. U kan die portaal daarvan sien. stel 'n wagwoord in om by die portaal aan te meld.

Nadat u aangemeld het, gaan na die netwerk -oortjie en kies die stasie -modus (ons benodig dit (linkit smart 7688 duo) om toegang tot die internet te verkry) en koppel dit aan u wifi -netwerk en druk op Konfigureer en herlaai.

Nadat die bord weer begin het, kry dit 'n plaaslike IP -adres. Vind die adres uit met behulp van enige IP -gereedskap of u router -portaal. In my geval was dit 192.168.1.4. Tik nou die plaaslike IP -adres in die adresbalk van die blaaier. maak seker dat die rekenaar aan dieselfde netwerk as die linkit smart gekoppel is. U sal weer gevra word om aan te meld.

Om streaming vanaf 'n webkamera moontlik te maak, moet u-j.webp

Nadat u aangemeld het, gaan na die diens -oortjie en kyk of-j.webp

Na die opstelling kan u u webkamera via 'n OTG -kabel verbind met die linkit smart 7688 duo usb -gasheer. in my geval is dit 192.168.1.4:4400

tik die opdrag om die snapshot te neem:? action = snapshot

Hierdie beeld is nou plaaslik beskikbaar, maar ons moet dit beskikbaar stel aan die diens van die posbus. Om dit te bereik, moet ons port forwarding doen. Poortaanstuur kan in die routerportaal gedoen word. Die proses is anders vir verskillende routers. Google net om te weet hoe om na 'n spesifieke router te stuur. Dit is gewoonlik beskikbaar onder die NAT -diens. Nadat u die poort vorentoe gebruik het, kan u toegang tot hierdie poort (dws. 4440) verkry vanaf u eksterne IP. Eksterne IP kan gevind word deur 'whats my ip' in Google vas te maak.

U moet hierdie adres plaas

ie.. https://::? action = momentopname

in die pushbox (wat in die volgende stap verduidelik word) sodat pushingbox toegang tot hierdie prent kan kry en dit aan die pos kan heg en dit aan u kan stuur wanneer dit nodig is.

U kan die prent ook op 'n SD -kaart stoor, aangesien Linkit smart 7688 duo ook 'n SD -kaartgleuf bevat vir die stoor van inligting. Meer inligting hieroor kan gevind word by:

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

Stap 6: Stel PushingBox op

Stel PushingBox op
Stel PushingBox op

pushbox word gebruik om kennisgewing oor verskillende waarskuwings in die projek na gmail te stuur.

teken aan by pushingbox met 'n Google -rekening:

gaan na my dienste voeg diens by. daar is baie dienste om uit te kies, soos Gmail, Twitter, push -kennisgewing vir Android, ens …

kies Gmail (aangesien ons 'n foto as aanhangsel moet stuur) en vul die toepaslike konfigurasie van die Gmail -naam en die Gmail -ID in van die gebruiker na wie die waarskuwing gestuur moet word.

gaan na my scenario's en skep 'n nuwe scenario. gee die scenario 'n naam (byvoorbeeld: ALERT) voeg die diens wat voorheen geskep is by.

skryf die geskikte onderwerp en liggaam van die pos en voer die url in om die skermkiekie van die webkamera te neem om 'n foto aan te heg. Skep verskillende scenario's vir verskillende alerts.api vir die uitvoering van 'n push box -scenario:

Stap 7: Skep Alexa -vaardigheid met behulp van Backendless

Skep Alexa -vaardigheid met Backendless
Skep Alexa -vaardigheid met Backendless
Skep Alexa -vaardigheid met Backendless
Skep Alexa -vaardigheid met Backendless
Skep Alexa -vaardigheid met Backendless
Skep Alexa -vaardigheid met Backendless

backendless word gebruik om die alexa -vaardigheid te skep. Dit is 'n eenvoudige sleep -en -aflaai -programmering wat gebruik word om alexa -vaardigheid (of enige programme) te skep, waartoe toegang sonder 'n eindelose API verkry kan word.

skep 'n rekening in backendless:

  • Teken in op u rekening in 'n agtergrondlose rekening. klik op Skep program en gee 'n naam aan u app
  • Klik op die Business Logic -ikoon in die ikoonbalk aan die linkerkant. U sal die API -DIENSTE -skerm sien.
  • Klik op die "+" - ikoon om 'n nuwe diens te skep. Maak seker dat u CODELESS in die pop -up "Nuwe diens" kies. Voer "AlexaService" in vir die diensnaam. Klik op die SAVE knoppie:
  • Backendless skep die API -diens en sal u vra om 'n metode vir die diens te skep. Dit is die metode wat versoeke van Alexa sal verwerk. Voer "handleRequest" in vir die metode se naam. Maak seker dat u POST kies vir die REST -operasie en verklaar 'n argument met die naam "req" en tik "Any Object" soos getoon:
  • Backendless skep 'n plekhouer vir die kodelose logika van die metode. Klik op die EDIT -knoppie om oor te skakel na die Codeless Logic Designer. Klik in die geskepte funksie -plekhouerblok op die gebied wat sê "doSomething" en verander dit na "sendAlexaResponse". Hierdie funksie word gebruik om alexa iets te laat sê wat as argument geslaag kan word. Klik op die SAVE -knoppie sodat die funksie gestoor word.
  • Klik op die rat -ikoon in die pers blok langs die woord "Funksie". Voeg twee argumente by deur die invoerblokke te sleep, soos in die onderstaande prent getoon word. Gee die name van die argumente as "whatToSay" en "waitForResponse". Let op dat namate u argumente byvoeg, die Context Blocks -gebied outomaties ingevul word met die blokke wat argumentwaardes verteenwoordig.
  • Verander die logika van die funksie sodat dit lyk soos in die prent. Vir die blokke "Skep voorwerpe", gebruik die rat -ikoon om die naam van die voorwerpeienskappe te verander. Moenie vergeet om u werk te stoor deur op die SAVE -knoppie te klik nie.
  • Noudat die pasgemaakte funksie gebou is, skakel terug na die handleRequest -metode van die AlexaService -diens. Klik op die kategorie Aangepaste funksies in die werkbalk aan die linkerkant en sleep die sendAlexaResponse -blok om aan te sluit by die retouraansluiting van u diensmetode
  • Bogenoemde stappe kan ook gevind word op hul webwerf:
  • Klik op die knoppie "Voeg nuwe" by onder Funksies in die BROWSER -afdeling. Klik in die geskepte funksie -plekhouerblok op die gebied wat "doSomething" sê en verander dit na "getIntentName", verander die blokke sodat die funksie lyk soos die getoonde prentjie. sal die bedoelingnaam kry op grond van steekproefuitsprake. Gaan terug na api-dienste-> hanteer versoek in die blaaierafdeling. Veranderlikes en logika word uit die stelselafdeling gemaak. Skep die volgende veranderlikes wat in die beelde getoon word.
  • volgende stoor ons die bedoeling naam om veranderlike aan te vra. En vergelyk dan met die bedoeling. Byvoorbeeld, as die versoek "inleiding" is, dan is die reageerveranderlike ingestel op "hi! ek kan beheer …." en hierdie reaksie word uiteindelik deur alexa voorgelees. verander die blok soos aangedui.
  • as die versoek LightsOn bedoel is, werk ons die Thingspeak -kanaal op na '0' met behulp van http get -versoek, en werk ons terselfdertyd die toestelstatus op (1/0, afhangende van Aan/Uit). Dieselfde word herhaal vir LightsOff, FanOn en FanOff.
  • Vir weer lees ons uit die temperatuur- en humiditeitskanaal en stoor die resultaat in 'n reageer -veranderlike. Aangesien die kanaal slegs waardes gee, voeg ons tekste by om die antwoord betekenisvol te maak
  • Vir 'n momentopname van die sitkamer word 'n pushingbox -scenario uitgevoer
  • vir toestelstatus lees ons inligting vanaf die statuskanaal van thingspeak:
  • vir kennisgewings en waarskuwings wat ons van waarskuwingskanale (brand, indringer en gas) lees:
  • gebaseer op die waardes wat ons uit die kennisgewingsveld kry, word ooreenstemmende waarskuwingsboodskappe in die reaksie 0 -veranderlike gestoor. as daar geen kennisgewing is nie, word geen kennisgewingboodskap gestoor nie.
  • sodra die kennisgewing voorgelees is, word die '0' in die kennisgewingskanale opgedateer sodat alexa nie weer dieselfde kennisgewing sal lees nie. Uiteindelik, op grond van die versoek, word die veranderlike van reageer0/reageer hardop gelees.

Stap 8: Configureer Alexa Skill in Amazon Developer Console:

Alexa Skill instel in Amazon Developer Console
Alexa Skill instel in Amazon Developer Console
Alexa Skill instel in Amazon Developer Console
Alexa Skill instel in Amazon Developer Console
Alexa Skill instel in Amazon Developer Console
Alexa Skill instel in Amazon Developer Console

Gaan na die Amazon -ontwikkelaarkonsole en meld aan met die Amazon -rekening.

gaan na die ontwikkelaarkonsole en klik op die ALEXA -oortjie. Klik op alexa skills kit om aan die gang te kom.

skep 'n aangepaste vaardigheidstipe, gee die vaardigheid naam en aanroepnaam. die onderskeie voornemens en voorbeelduitsprake word in die kode gegee.

Kies in die konfigurasie -oortjie HTTPS as tipe eindpunt van die diens, vul die standaard -URL met die API -URL van backendless. Kies die 2de opsie in Sertifikaat vir verstek eindpunt in SSL -sertifikaat. U kan die vaardigheid ook toets met behulp van die toetssimulator.

Nadat die toets voltooi is, kan u die vaardigheid publiseer met die vereiste publikasie -inligting.

Stap 9: Finale opstelling en afwerking

Finale opstelling en afwerking!
Finale opstelling en afwerking!
Finale opstelling en afwerking!
Finale opstelling en afwerking!

Maak die kringverbinding soos aangedui.

Soms funksioneer ESP8266 as gevolg van onvoldoende stroom. Alhoewel dit in die stroombaan genoem word, word dit aanbeveel om die ESP8266 van 'n aparte 3.3v -bron te voed. As u 'n kragbank gebruik, moet u die spanning van 5v tot 3.3v verlaag met 'n 3.3v spanningsreguleerder. Laai die program op na ESP8266 en arduino. Ek het die verbinding met die gloeilamp getoon, dieselfde kan uitgebrei word na waaier of enige ander toestel. Uiteindelik gebruik Amazon echo of echosim.io om u vaardigheid te toets.

U moet die vaardigheid aktiveer met die aanroepingsnaam (soos in my geval - "myhome"). Soms werk dit nie as dit sonder 'n oproepnaam gebruik word nie, soos ek 'n paar keer in my video getoon het

Hoop jy het die tutoriaal geniet!

Dankie!

Aanbeveel: