- Wymagania sprzętowe
- Przebieg projektu dla diody LED sterowanej głosem Alexa
- Założenie konta Adafruit do komunikacji
- Połącz Alexę z Adafruit IO za pomocą IFTTT
- Objaśnienie kodu ESP12
- Pracujący:
W poprzednich samouczkach widzieliśmy, jak możemy zbudować głośnik Amazon Echo, a następnie jak możemy sterować dowolnym GPIO Raspberry Pi za pomocą Alexa Voice. Teraz tworzymy projekt IoT, aby sterować urządzeniami domowymi z dowolnego miejsca na świecie za pomocą AlexaPi i ESP-12E (lub dowolnej płyty ESP).
Wymagania sprzętowe
- Raspberry Pi z zainstalowanym AVS
- Mikrofon / kamera internetowa USB 2.0
- ESP-12E
- Moduł przekaźnika
- Żarówka LED / AC
Powinieneś mieć gotowe Raspberry Pi z zainstalowaną usługą głosową Alexa z odpowiednio skonfigurowanym kontem programisty Amazon. Przejdź przez poniższy samouczek, aby przygotować usługi Alexa.
- Zbuduj własne Amazon Echo za pomocą Raspberry Pi
Przebieg projektu dla diody LED sterowanej głosem Alexa
Będziemy postępować zgodnie z tym schematem blokowym dla tego projektu LED sterowanego przez IoT:
Tak więc proces wygląda mniej więcej tak. Najpierw sygnał wejściowy jest podawany do Raspberry Pi przez mikrofon USB. Teraz to nagranie jest wysyłane do usług głosowych Alexa i po rozpoznaniu głosu AVS wysłał dane do IFTTT i wyzwala stan w IFTTT. Zgodnie z przepisem IFTTT wyśle polecenie do Adafruit IO, który jest brokerem MQTT, aby wykonać akcję. Następnie ESP 12e otrzyma dane z Adafruit IO za pośrednictwem protokołu MQTT, a dioda LED zaświeci się / wyłączy zgodnie z poleceniem.
Tutaj użyliśmy kamery internetowej USB do mikrofonu. Użyliśmy już usługi Alexa Voice do włączenia żarówki, ale może ona obsługiwać tylko urządzenia podłączone lokalnie.
Ponieważ zakładamy, że masz już zainstalowane Raspberry Pi z usługami Alexa Voice, pozostajemy przy poniższych dwóch krokach, które wyjaśnimy jeden po drugim:
- Założenie konta Adafruit do komunikacji
- Połącz Alexę z Adafruit IO za pomocą IFTTT
- Prześlij kod w ESP12
Założenie konta Adafruit do komunikacji
Najpierw utworzymy kanał w Adafruit IO. Kanał przechowuje dane wysłane przez IFTTT. Aby utworzyć kanał, wykonaj następujące kroki:
Krok 1: - Zaloguj się do Adafruit IO za pomocą swoich danych logowania lub Zarejestruj się, jeśli nie masz konta.
Krok 2: - Kliknij Moje konto -> Pulpit nawigacyjny
Krok 3: - Kliknij Akcje i utwórz nowy pulpit nawigacyjny .
Krok 4: - Podaj nazwę i opis swojego kanału i kliknij Utwórz .
Krok 5: - Kliknij przycisk Klucz i zanotuj klucze AIO, użyjemy tego klucza w naszym kodzie.
Krok 6: - Kliknij przycisk „+”, aby utworzyć nowy blok i kliknij przycisk Przełącz.
Krok 7: - Teraz wprowadź nazwę kanału i kliknij Utwórz . Następnie wybierz źródło i kliknij Następny krok.
Krok 8: - W ustawieniach bloku wpisz „1” w polu tekstowym Button ON i „0” w polu Button OFF .
Krok 9: - Twój kanał został pomyślnie utworzony.
Połącz Alexę z Adafruit IO za pomocą IFTTT
Wykonaj następujące kroki, aby utworzyć aplet / przepis w IFTTT:
Krok 1: - Logowanie do IFTTT z poświadczeniami lub Zarejestruj się jeśli nie masz konta na nim.
Krok 2: - W My Applets, kliknij New Applet
Krok 3: - Kliknij + this
Krok 4: - Wyszukaj Amazon Alexa i kliknij na nią, zaloguj się za pomocą danych swojego konta dewelopera amazon.
Krok 5: - Wybierz wyzwalacz, powiedz konkretną frazę
Krok 6: - Podaj „ włącz światło” jako frazę, kliknij Utwórz wyzwalacz.
Krok 7: - Kliknij + to
Krok 8: - Wyszukaj Adafruit i kliknij na niego.
Krok 9: - Zaloguj się do konta Adafruit używając swoich danych uwierzytelniających. Kliknij Wyślij dane do Adafruit .
Wybierz nazwę kanału, który właśnie utworzyłeś w Adafruit IO. Teraz podaj „1” w danych do zapisania, co oznacza, że dioda LED będzie WŁĄCZONA. Kliknij Utwórz akcję .
Krok 10: - Wykonaj te same kroki, aby aplety wyłączały diodę LED . Wystarczy wpisać „0” w polu Dane do zapisania. Wszystkie kroki pozostają takie same.
Wykonałeś połowę swojej pracy. Teraz czas na zaprogramowanie ESP-12E.
Objaśnienie kodu ESP12
Będziemy programować ESP12 z Arduino IDE. Pełny kod znajduje się na końcu tego samouczka.
Najpierw potrzebujemy biblioteki Adafruit Mqtt, którą można pobrać z tego linku. Po prostu otwórz Arduino IDE. Przejdź do przykładów -> biblioteka mqtt adafruit -> mqtt_esp8266
Będziemy zmieniać ten kod według naszych kluczy AIO oraz poświadczeń Wi-Fi.
Najpierw dołączyliśmy wszystkie biblioteki dla ESP8266WIFI i Adafruit MQTT .
#zawierać
Mamy zdefiniowany identyfikator SSID i hasło do Wi-Fi, z którą chcesz się połączyć ESP-12e.
#define WLAN_SSID "xxxxxxxx" #define WLAN_PASS "xxxxxxxxxxx"
Ta sekcja definiuje serwer i port serwera Adafruit, które są ustalone odpowiednio jako „ io.adafruit.com ” i „ 1883 ”.
#define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 1883
Zastąp poniższe pola swoją nazwą użytkownika i kluczami AIO, które skopiowałeś ze strony Adafruit podczas tworzenia Feed.
#define AIO_USERNAME "********" #define AIO_KEY "******************************"
Następnie utwórz klasę ESP8266 WiFiClient, aby połączyć się z serwerem MQTT.
Klient WiFiClient;
Skonfiguruj klasę klienta MQTT, przekazując klienta WiFi i serwer MQTT oraz dane logowania.
Adafruit_MQTT_Client mqtt (& klient, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
Skonfiguruj kanał o nazwie „lekki”, aby subskrybować zmiany.
Adafruit_MQTT_Subscribe light = Adafruit_MQTT_Subscribe (& mqtt, AIO_USERNAME "/ feeds / light");
W funkcji konfiguracji deklarujemy PIN ESP-12e, na którym chcesz uzyskać wyjście. Używam styku D0 jako wyjścia. Następnie łączymy ESP-12e z punktem dostępowym Wi-Fi.
void setup () { Serial.begin (115200); opóźnienie (10); pinMode (D0, WYJŚCIE); Serial.println (F ("Demo Adafruit MQTT")); // Połącz się z punktem dostępu WiFi. Serial.println (); Serial.println (); Serial.print ("Łączenie z"); Serial.println (WLAN_SSID); WiFi.begin (WLAN_SSID, WLAN_PASS); while (WiFi.status ()! = WL_CONNECTED) { …. … …
Skonfiguruj subskrypcję MQTT dla lekkiego źródła.
mqtt.subscribe (& light); }
W funkcji pętli upewnimy się, że połączenie z serwerem MQTT jest aktywne za pomocą MQTT_connect (); funkcjonować.
void loop () { MQTT_connect ();
Teraz subskrybujemy nasz kanał „light” i pobieramy ciąg z IO adafruit i konwertujemy ten ciąg na liczbę przy użyciu atoi (); funkcja i zapisz ten numer do PIND0 za pomocą digitalWrite (); funkcjonować.
Subskrypcja Adafruit_MQTT_Subscribe *; while ((subskrypcja = mqtt.readSubscription (5000))) { if (subskrypcja == & light) { Serial.print (F ("Got_light:")); Serial.println ((char *) light.lastread); uint16_t num = atoi ((char *) light.lastread); digitalWrite (16, num); }
Pracujący:
Połącz ESP-12E z laptopem i prześlij poniższy kod (nie zapomnij edytować swoich danych uwierzytelniających w kodzie).
Podłącz diodę LED lub przekaźnik do styku D0. Teraz upewnij się, że Twoja usługa Alexa działa na RPi.
Aby wydać jakiekolwiek polecenie, musisz obudzić usługę Alexa, dzwoniąc do „Alexa” za każdym razem, gdy chcesz wysłać polecenie. Usłyszysz sygnał dźwiękowy. Po usłyszeniu sygnału powiedz „ Alexa Trigger Turn on the Light”. „Za chwilę widać, że światło WŁĄCZA się. A jeśli powiesz „ Alexa Trigger Turn off the Light ”, światło powinno się wyłączyć.
Otóż to…. Możesz dodać więcej urządzeń w powyższym kodzie, dodając piny GPIO ESP-12E i tworząc różne aplety z różnymi frazami w IFTTT.
Sprawdź pełny kod i film demonstracyjny poniżej. Sprawdź również nasze wszystkie projekty automatyki domowej tutaj