Spisu treści:

Monitorowanie inteligentnego domu za pomocą Alexa i Arduino: 9 kroków (ze zdjęciami)
Monitorowanie inteligentnego domu za pomocą Alexa i Arduino: 9 kroków (ze zdjęciami)

Wideo: Monitorowanie inteligentnego domu za pomocą Alexa i Arduino: 9 kroków (ze zdjęciami)

Wideo: Monitorowanie inteligentnego domu za pomocą Alexa i Arduino: 9 kroków (ze zdjęciami)
Wideo: Domoticz kamera - Dodanie Esp 32 Cam - Github, Arduino 2024, Listopad
Anonim
Image
Image
Zbieranie materiałów
Zbieranie materiałów

W dzisiejszym świecie ludzie spędzają więcej czasu w miejscu pracy niż w domu. Stąd istnieje potrzeba systemu monitoringu domu, w którym ludzie mogą zapoznać się z warunkami w domu podczas pracy. Byłoby jeszcze lepiej, gdyby można było po prostu zapytać „kogoś” o jego dom w godzinach pracy. Można to osiągnąć, wykorzystując Amazon Alexa jako asystenta, który może dostarczyć użytkownikowi potrzebnych informacji o jego domu.

Nie tylko miejsce pracy użytkownicy mogą poznać stan domu w dowolnym miejscu na świecie, o ile mają dostęp do Internetu i Amazon Alexa.

W tym projekcie realizowane są następujące Funkcje:

1) Kontroluj urządzenia domowe, takie jak wentylator i światło

2) Informuje o stanie urządzeń

3) Informuje o warunkach pogodowych w domu (temperatura i wilgotność)

4) Wysyła migawkę wnętrza domu do użytkownika za pośrednictwem Gmaila, gdy jest to wymagane.

5) Wysyła powiadomienie w przypadku -

* Intruz (przesyła również zdjęcie)

* Ogień

* Gość (przesyła również zdjęcie)

Krok 1: Zbieranie materiałów

Zbieranie materiałów
Zbieranie materiałów
Zbieranie materiałów
Zbieranie materiałów
Zbieranie materiałów
Zbieranie materiałów

Wymagane materiały

Arduino Uno

Moduł Wi-Fi ESP8266

Linkit Smart 7688 Duo

DHT11

Przekaźniki

Czujnik przeszkód na podczerwień

Kamerka internetowa

Amazon Echo Dot

Płytka do krojenia chleba i zworki Przewody

Oprogramowanie i usługi online:

Rzeczypeak.com

IDE Arduino

Zestaw umiejętności Amazon Alexa

Amazon Alexa Echosim.io (do testowania umiejętności)

Bez zaplecza

PushBox

Krok 2: Programowanie Arduino i ESP8266

Programowanie Arduino i ESP8266
Programowanie Arduino i ESP8266
Programowanie Arduino i ESP8266
Programowanie Arduino i ESP8266

Pobierz Arduino IDE Z oficjalnej strony internetowej:

Otwórz Arduino IDE i przejdź do pliku-> preferencje-> w dodatkowym adresie URL menedżera płyty -

Przejdź do narzędzi -> tablice -> Board Manager i zainstaluj znaleziony pakiet esp8266.

Aby zaprogramować arduino wystarczy podłączyć kabel USB z arduino do komputera i wybrać Arduino/Genuino UNO w narzędziach->płytki. Upewnij się również, że wybrałeś uprawnienia portów COM w Narzędziach (numer portu COM można znaleźć w Menedżerze urządzeń). Napisz wymagany program, skompiluj i kliknij prześlij, jeśli nie ma błędów.

Aby zaprogramować ESP8266 wykonaj połączenie jak pokazano na schemacie. podłącz usb z arduino do komputera. W narzędziach->płytka->wybierz Generic ESP8266 a także wybierz odpowiedni port COM. Napisz wymagany program, skompiluj i kliknij prześlij, jeśli nie ma błędów. Upewnij się, że podłączyłeś Arduino RST do GND (arduino działa jak programator do ESP8266).

W tym projekcie najpierw programuje się ESP8266, a następnie usuwa połączenia obwodów. Następnie obwód jest ponownie podłączony, jak pokazano na rysunku o nazwie „Połączenia obwodu”. A potem programuje się arduino.

Krok 3: Konfiguracja Thingspeak.com

Konfiguracja Thingspeak.com
Konfiguracja Thingspeak.com

Utwórz konto w thingspeak.com.

wykorzystujemy kanały w thingspeak do przechowywania informacji o kontroli urządzenia i przekierowywania ich do arduino/alexa. przechowujemy również wartości temperatury i wilgotności w kanałach. To jak miejsce przechowywania informacji.

Zaloguj się do thingspeak, przejdź do kanałów moich kanałów i utwórz nowy kanał. Nadaj nazwę i opis swoim kanałom. W naszym projekcie potrzebujemy 8 kanałów (można wykonać pracę używając mniej kanałów, ale będzie to trochę skomplikowane podczas programowania). Rzeczypeak ma również ograniczenia czasowe podczas aktualizacji kanału. Pomiędzy kolejnymi aktualizacjami danego kanału musi być przerwa 10-15 sekund.

Osiem kanałów wraz z ich wartościami i znaczeniem podano poniżej

nazwa kanału (wartość1 znaczenie, wartość2 znaczenie itp.):

1) Sterowanie urządzeniem (0 -lightON, 1- lightOff, 2-fan ON, 3-fan off)

2) stan światła (0- światło wyłączone, 1- światło włączone)

3) stan wentylatora (0- wentylator wyłączony, 1- wentylator włączony)

4) wilgotność (wartość wilgotności)

5) temperatura (wartość temperatury)

6) powiadomienie intruza (1- alarm intruza)

7) powiadomienie o pożarze (1- alarm pożarowy)

8)powiadomienie dla gości (1- alert dla gości)

gdy klikniesz na dowolny kanał, możesz zobaczyć jego identyfikator kanału i zapisać klucze API w zakładce Klucze API. identyfikator kanału jest wymagany do uzyskania informacji/wartości w kanale. Klucz zapisu jest wymagany do przechowywania wartości w kanale.

Żądanie http do aktualizacji kanału to:

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

jest zastępowane odpowiednimi klawiszami zapisu kanału i może być (0/1 w przypadku sterowania urządzeniem lub wartościami temperatury/wilgotności)

Żądanie http do odczytania wartości z kanału to:

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

jest zastępowany przez konkretny identyfikator kanału, z którego chcemy czytać.

Krok 4: Program

Program podzielony jest na 3 części:

A) Program dla Arduino: program dla Arduino jest bardzo prosty. Odbiera dane z ESP8266 szeregowo i na podstawie otrzymanych danych steruje urządzeniami. Więcej informacji o programie znajdziesz w komentarzach w samym programie.

B) Program dla ESP8266: program dla ESP8266 obejmuje 3 rzeczy

1) aktualizacja temperatury i wilgotności za pomocą żądania

client.print(String("GET") + "/update?key=&field1="+wilgotność+" HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Połączenie: zamknij \r\n\r\n"); //aktualizacja wilgotności

client.print(String("GET ") + "/update?key=&field1="+temperature+" HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Połączenie: zamknij \r\n\r\n"); // aktualizacja temperatury

jest zastąpiony przez odpowiedni klucz zapisu znajdujący się w rzeczach kanał szczytowy odpowiednio dla wilgotności i temperatury. a gospodarzem jest api.thingspeak.com.

pobierz bibliotekę dht z:

2) odczyt z odpowiednich kanałów rzeczypeak i sterowanie urządzeniem na podstawie uzyskanych wartości: client.print(String("GET") + "/channels//field/field1/last.html HTTP/1.1\r\n" + " Host: " + host + "\r\n" + "Połączenie: zamknij\r\n\r\n");

gdzie jest zastępowane przez odpowiedni identyfikator kanału znaleziony w thingspeak.

3) Wysyłanie ostrzeżenia w przypadku wysokiej temperatury za pomocą pchającego pudełka

String host1="api.pushingbox.com";

client.print(String("GET") + "/pushingbox?devid= HTTP/1.1\r\n" + "Host: " + host1 + "\r\n" + "Połączenie: zamknij\r\n\r \n");

gdzie jest zastępowany przez identyfikator urządzenia w pushingbox.

Krok 5: Konfiguracja Linkit Smart 7688 Duo i kamery internetowej

Konfiguracja Linkit Smart 7688 Duo i kamery internetowej
Konfiguracja Linkit Smart 7688 Duo i kamery internetowej
Konfiguracja Linkit Smart 7688 Duo i kamery internetowej
Konfiguracja Linkit Smart 7688 Duo i kamery internetowej
Konfiguracja Linkit Smart 7688 Duo i kamery internetowej
Konfiguracja Linkit Smart 7688 Duo i kamery internetowej

W tym projekcie kamera internetowa i linkt smart 7688 duo służą do wykonania potrzebnego zdjęcia i wysłania go użytkownikowi. Możesz również użyć modułu kamery arduino i połączyć go z arduino lub użyć dowolnej kamery IP.

Naciśnij i przytrzymaj przycisk Wi-Fi na linkit smart 7688 przez 20 sekund, aby zresetować płytkę. Następnie po zresetowaniu ustawień Wi-Fi będziesz mógł zobaczyć jego nazwę punktu dostępu w połączeniach sieci bezprzewodowej. Teraz podłącz komputer do tej sieci. po podłączeniu otwórz przeglądarkę i wpisz 192.168.100.1 w pasku adresu. Będziesz mógł zobaczyć jego portal. ustawić hasło, aby zalogować się do swojego portalu.

Po zalogowaniu przejdź do zakładki Sieć i wybierz Tryb stacji (potrzebujemy go (linkit smart 7688 duo), aby uzyskać dostęp do Internetu) i podłącz go do swojej sieci Wifi, a następnie naciśnij Konfiguruj i uruchom ponownie.

Po ponownym uruchomieniu płyty zostanie jej przypisany lokalny adres IP. Znajdź adres za pomocą dowolnego narzędzia IP lub portalu routera. W moim przypadku było to 192.168.1.4. Teraz wpisz lokalny adres IP w pasku adresu przeglądarki. upewnij się, że komputer jest podłączony do tej samej sieci co linkit smart. Zostaniesz poproszony o ponowne zalogowanie.

Aby włączyć przesyłanie strumieniowe z kamery internetowej, należy włączyć streamer-j.webp

Po zalogowaniu przejdź do zakładki usługi i zaznacz włącz streamer-j.webp

Po skonfigurowaniu możesz podłączyć kamerę internetową do hosta duo USB linkt smart 7688 za pomocą kabla OTG. Teraz, aby zobaczyć strumień, otwórz przeglądarkę i wpisz: w pasku adresu. w moim przypadku jest to 192.168.1.4:4400

aby zrobić zdjęcie, wpisz polecenie:?action=snapshot

Teraz ten obraz jest dostępny lokalnie, ale musimy udostępnić go usłudze pushing box. Aby to osiągnąć, musimy wykonać przekierowanie portów. Przekierowanie portów można wykonać w portalu routera. Identyfikator procesu różni się dla różnych routerów. Po prostu google, aby dowiedzieć się, jak przekierować port dla konkretnego routera. Zwykle jest dostępny w ramach usługi NAT. Po przekierowaniu portów można uzyskać dostęp do tego portu (np. 4440) z zewnętrznego adresu IP. Zewnętrzny adres IP można znaleźć wpisując "whats my ip" w google.

Musisz podać ten adres

tj.

w pushingbox (co jest wyjaśnione w następnym kroku), aby pushingbox mógł uzyskać dostęp do tego obrazu i dołączyć go do wiadomości e-mail i wysłać go w razie potrzeby.

Możesz również przechowywać obraz na karcie SD, ponieważ Linkit smart 7688 duo jest również wyposażony w gniazdo karty SD do przechowywania informacji. Więcej informacji na ten temat można znaleźć na:

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

Krok 6: Konfiguracja PushingBox

Konfiguracja PushingBox
Konfiguracja PushingBox

pushingbox służy do wysyłania powiadomień o różnych alertach w projekcie do Gmaila.

logowanie do pushingbox przy użyciu konta google:

przejdź do moich usług dodaj usługę. istnieje wiele usług do wyboru, takich jak Gmail, Twitter, powiadomienia push dla Androida itp…

wybierz Gmail (ponieważ musimy wysłać zdjęcie jako załącznik) i wypełnij odpowiednią konfigurację nazwy gmail oraz identyfikator gmail użytkownika, do którego ma zostać wysłany alert.

przejdź do moich scenariuszy i utwórz nowy scenariusz. nadaj nazwę scenariuszowi (np. ALERT) dodaj wcześniej utworzoną usługę.

napisz odpowiedni temat i treść maila oraz wpisz adres URL, aby zrobić zrzut ekranu z kamery internetowej do załączenia zdjęcia. Tworzenie różnych scenariuszy dla różnych alerts.api do realizacji scenariusza push box to:

Krok 7: Tworzenie umiejętności Alexa za pomocą Backendless

Tworzenie umiejętności Alexa za pomocą Backendless
Tworzenie umiejętności Alexa za pomocą Backendless
Tworzenie umiejętności Alexa za pomocą Backendless
Tworzenie umiejętności Alexa za pomocą Backendless
Tworzenie umiejętności Alexa za pomocą Backendless
Tworzenie umiejętności Alexa za pomocą Backendless

backendless służy do tworzenia umiejętności alexa. Jest to proste programowanie typu „przeciągnij i upuść” służące do tworzenia umiejętności alexa (lub dowolnych programów), do których można uzyskać dostęp za pomocą interfejsu API bez zaplecza.

załóż konto w backendless:

  • Zaloguj się do swojego konta na koncie backendless. kliknij Utwórz aplikację i nadaj nazwę swojej aplikacji
  • Kliknij ikonę Business Logic znajdującą się na pasku ikon po lewej stronie. Zobaczysz ekran API SERVICES.
  • Kliknij ikonę „+”, aby utworzyć nową usługę. Upewnij się, że wybrałeś BEZ KODU w wyskakującym okienku „Nowa usługa”. Wprowadź "AlexaService" dla nazwy usługi. Kliknij przycisk ZAPISZ:
  • Backendless tworzy usługę API i poprosi o utworzenie metody dla usługi. Będzie to metoda, która będzie przetwarzać żądania od Alexy. Wpisz „handleRequest” jako nazwę metody. Upewnij się, że wybrałeś POST dla operacji REST i zadeklaruj argument o nazwie „req” i wpisz „Dowolny obiekt”, jak pokazano:
  • Backendless tworzy symbol zastępczy dla bezkodowej logiki metody. Kliknij przycisk EDIT, aby rozpocząć przełączanie do Codeless Logic Designer. W utworzonym bloku zastępczym funkcji kliknij obszar z napisem „doSomething” i zmień go na „sendAlexaResponse”. Ta funkcja jest używana, aby alexa powiedziała coś, co może być przekazane jako argument. Kliknij przycisk ZAPISZ, aby funkcja została zapisana.
  • Kliknij ikonę koła zębatego znajdującą się w fioletowym bloku tuż obok słowa „Funkcja”. Dodaj dwa argumenty, przeciągając bloki wejściowe, jak pokazano na poniższym obrazku. Przypisz nazwy argumentów jako „WhatToSay” i „waitForResponse„. Zauważ, że podczas dodawania argumentów obszar Bloki kontekstowe jest automatycznie wypełniany blokami reprezentującymi wartości argumentów.
  • Zmodyfikuj logikę funkcji tak, aby wyglądała jak na obrazku. W przypadku bloków „Utwórz obiekty” użyj ikony koła zębatego, aby zmienić nazwę właściwości obiektu. Nie zapomnij zapisać swojej pracy, klikając przycisk ZAPISZ.
  • Teraz, gdy funkcja niestandardowa jest zbudowana, przełącz się z powrotem do metody handleRequest usługi AlexaService. Kliknij kategorię Funkcje niestandardowe na pasku narzędzi po lewej stronie i przeciągnij blok sendAlexaResponse, aby połączyć się ze złączem zwrotnym metody usługi
  • Powyższe kroki można również znaleźć na ich stronie internetowej:
  • Kliknij węzeł „Dodaj nowy” w obszarze Funkcje w sekcji PRZEGLĄDARKA. W utworzonym bloku zastępczym funkcji kliknij obszar z napisem „doSomething” i zmień go na „getIntentName” zmodyfikuj bloki, aby funkcja wyglądała tak, jak pokazano na obrazku. otrzyma nazwę intencji na podstawie przykładowych wypowiedzi. Wróć do usług API->obsługuj żądania w sekcji przeglądarki. Zmienne i logika tworzone są z sekcji systemowej. Utwórz następujące zmienne pokazane na obrazach.
  • następnie przechowujemy nazwę intencji do zmiennej żądania. A potem porównaj z intencjami. na przykład, jeśli żądanie to „wprowadzenie”, zmienna odpowiedzi jest ustawiona na „cześć! Mogę kontrolować……”. i ta odpowiedź jest wreszcie odczytywana na głos przez aleksę. zmodyfikuj blok, jak pokazano.
  • jeśli żądanie jest intencją LightsOn, aktualizujemy kanał thingspeak do '0' za pomocą żądania http get i jednocześnie aktualizujemy stan urządzenia (1/0 w zależności od włączenia/wyłączenia). To samo powtarza się dla LightsOff, FanOn i FanOff.
  • Dla pogody odczytujemy z kanału Temperatura i wilgotność i zapisujemy wynik w zmiennej odpowiedzi. Ponieważ kanał podaje tylko wartości, dołączamy teksty, aby odpowiedź była sensowna
  • do zrzutu obrazu z salonu uruchamiamy scenariusz pushingbox
  • dla statusu urządzenia odczytujemy informacje z kanału statusowego thingspeak:
  • za powiadomienia i alerty odczytywane z kanałów alertów (pożar, intruz i gość):
  • na podstawie wartości, które otrzymujemy z pola powiadomień odpowiednie komunikaty alertów są przechowywane w zmiennej respond0. jeśli nie ma powiadomienia, nie jest przechowywany żaden komunikat powiadomienia.
  • po odczytaniu powiadomienia, w kanałach powiadomień aktualizowane jest „0”, aby alexa nie przeczytała ponownie tego samego powiadomienia. Następnie w końcu na podstawie żądania odczytywana jest na głos zmienna odpowiedź0/odpowiedź.

Krok 8: Konfiguracja umiejętności Alexa w konsoli programisty Amazon:

Konfigurowanie umiejętności Alexa w konsoli programisty Amazon
Konfigurowanie umiejętności Alexa w konsoli programisty Amazon
Konfigurowanie umiejętności Alexa w konsoli programisty Amazon
Konfigurowanie umiejętności Alexa w konsoli programisty Amazon
Konfigurowanie umiejętności Alexa w konsoli programisty Amazon
Konfigurowanie umiejętności Alexa w konsoli programisty Amazon

przejdź do konsoli programisty amazon i zaloguj się przy użyciu konta amazon.

przejdź do konsoli programisty i kliknij zakładkę ALEXA. Kliknij zestaw umiejętności alexa, aby rozpocząć.

utwórz niestandardowy typ umiejętności, nadaj nazwę i nazwę wywołania umiejętności. Odpowiednie intencje i przykładowe wypowiedzi są podane w kodzie.

na karcie konfiguracji wybierz HTTPS jako typ punktu końcowego usługi wypełnij domyślny adres URL adresem URL API z backendless. Wybierz drugą opcję w Certyfikat dla domyślnego punktu końcowego w certyfikacie SSL. Umiejętność można również przetestować za pomocą symulatora testu.

Po zakończeniu testu możesz opublikować umiejętność z wymaganymi informacjami o publikacji.

Krok 9: Końcowa konfiguracja i zakończ

Końcowa konfiguracja i zakończ!
Końcowa konfiguracja i zakończ!
Końcowa konfiguracja i zakończ!
Końcowa konfiguracja i zakończ!

Wykonaj połączenie obwodu, jak pokazano.

Czasami ESP8266 będzie działać nieprawidłowo z powodu niewystarczającego prądu. Tak więc, choć nie jest to wspomniane w obwodzie, zaleca się zasilanie ESP8266 z oddzielnego źródła 3.3V. Jeśli używasz power banku, upewnij się, że obniżyłeś napięcie z 5 V do 3,3 V za pomocą regulatora napięcia 3,3 V. Prześlij program do ESP8266 i arduino. Pokazałem podłączenie do żarówki, to samo można rozszerzyć na wentylator lub dowolne urządzenia. Na koniec użyj amazon echo lub echosim.io, aby sprawdzić swoje umiejętności.

Musisz aktywować umiejętność używając nazwy inwokacji (tak jak w moim przypadku - "mójdom"). Czasami to nie zadziała, jeśli zostanie użyte bez nazwy wywołania, jak kilka razy pokazałem w moim filmie

Mam nadzieję, że podobał Ci się samouczek!

Dziękuję!

Zalecana: