- Donanım Gereksinimleri
- Alexa Ses Kontrollü LED için Proje Akışı
- İletişim için bir Adafruit hesabı oluşturmak
- Alexa'yı IFTTT kullanarak Adafruit IO'ya bağlayın
- ESP12 Kod Açıklaması
- Çalışma:
Önceki eğitimlerde Amazon Echo Speaker'ı nasıl oluşturabileceğimizi ve ardından Alexa Voice kullanarak herhangi bir Raspberry Pi GPIO'yu nasıl kontrol edebileceğimizi gördük. Şimdi AlexaPi ve ESP-12E'yi (veya herhangi bir ESP kartını) kullanarak dünyanın her yerinden ev aletlerini kontrol etmek için bir IoT projesi yapıyoruz.
Donanım Gereksinimleri
- İçinde AVS yüklü Raspberry Pi
- USB 2.0 mikrofon / Web kamerası
- ESP-12E
- Röle modülü
- LED / AC ampul
Raspberry Pi'nizi, uygun şekilde yapılandırılmış bir Amazon Geliştirici Hesabı ile Alexa ses hizmeti yüklenmiş olarak hazır bulundurmalısınız. Alexa hizmetlerini hazırlamak için aşağıdaki öğreticiyi izleyin.
- Raspberry Pi kullanarak kendi Amazon Echo'nuzu oluşturun
Alexa Ses Kontrollü LED için Proje Akışı
Bu IoT kontrollü LED projesi için bu akış şemasını takip edeceğiz:
Yani süreç böyle bir şey. İlk olarak Raspberry Pi'ye USB Mic ile giriş yapılır. Şimdi bu kayıt Alexa ses servislerine gönderiliyor ve ses tanımanın ardından AVS verileri IFTTT'ye gönderiyor ve IFTTT'deki durumu tetikliyor. Formüle göre IFTTT için komut gönderecek Adafruit IO bir eylemi gerçekleştirmek için MQTT brokeridir. Daha sonra ESP 12e, Adafruit IO'dan verileri MQTT protokolü aracılığıyla alacak ve komuta göre LED AÇIK / KAPALI olacaktır.
Burada Mikrofon için bir USB Web Kamerası kullandık. Bir ampulü açmak için zaten Alexa Voice hizmetini kullandık, ancak yalnızca yerel olarak bağlanan cihazları kullanabilir.
Zaten Alexa Voice hizmetleri yüklü Raspberry Pi'ye sahip olduğunuzu varsaydığımız için, tek tek açıklayacağımız iki adımı aşağıda bırakıyoruz:
- İletişim için bir Adafruit hesabı oluşturmak
- Alexa'yı IFTTT kullanarak Adafruit IO'ya bağlayın
- ESP12'de kod yükle
İletişim için bir Adafruit hesabı oluşturmak
Öncelikle Adafruit IO'da feed yapacağız. Feed, IFTTT tarafından gönderilen verileri depolar. Besleme yapmak için şu adımları izleyin:
Adım 1: - Adafruit IO'ya kimlik bilgilerinizle giriş yapın veya bir hesabınız yoksa kaydolun.
Adım 2: - tıklayın Hesabım -> Gösterge Tablosu
Adım 3: - Eylemler'e tıklayın ve Yeni Gösterge Tablosu Oluşturun .
4. Adım: - Feed'inize ad ve açıklama verin ve Oluştur'a tıklayın.
Adım 5: - tıklayın Anahtar AIO Keys aşağı düğmesi ve nota, bizim kodunda bu anahtarı kullanır.
Adım 6: - Yeni bir blok oluşturmak için '+' düğmesine tıklayın ve Değiştir düğmesine tıklayın.
Adım 7: - Şimdi, Feed Adını Girin ve Oluştur'a tıklayın. Ardından beslemeyi seçin ve Sonraki adıma tıklayın.
Adım 8: - Blok ayarlarında, Düğme AÇIK metin alanına '1' ve Düğme KAPALI Metin alanına '0' yazın.
Adım 9: - Beslemeniz başarıyla oluşturuldu.
Alexa'yı IFTTT kullanarak Adafruit IO'ya bağlayın
IFTTT'de bir Uygulama / Tarif yapmak için şu adımları izleyin:
Adım 1: - Kimlik bilgilerinizle IFTTT'ye giriş yapın veya hesabınız yoksa Kaydolun .
Adım 2: - Uygulamalarım'da Yeni Uygulamaya tıklayın
3. Adım: - + buna tıklayın
Adım 4: - Amazon Alexa'da arama yapın ve üzerine tıklayın, amazon geliştirici hesabı bilgilerinizle oturum açın.
Adım 5: - Tetikleyiciyi seçin, belirli bir cümle söyleyin
Adım 6: - sağlayın “ Işığı dönüş” ile ilgili tıklayın, ifade olarak Tetikleyici Oluşturma.
7. Adım: - + şuna tıklayın
Adım 8: - Arama Adafruit ve üzerinde tıklama.
Adım 9: - Kimlik bilgilerinizi kullanarak Adafruit Hesabına giriş yapın. Adafruit'e veri gönder'e tıklayın.
Adafruit IO'da yeni oluşturduğunuz besleme adını seçin. Şimdi, kaydedilecek veride '1' verin, bu LED'in AÇIK olacağı anlamına gelir. Eylem Oluştur'a tıklayın.
Adım 10: - LED'i KAPALI konuma getirmek için uygulamalar yapmak için aynı adımları izleyin. Kaydetmek için Veri alanına '0' koymanız yeterlidir. Tüm adımlar aynı kalır.
İşinin yarısını yaptın. Şimdi, ESP-12E'nizi programlama zamanı.
ESP12 Kod Açıklaması
ESP12'yi Arduino IDE ile programlayacağız. Kodun tamamı bu Öğreticinin sonunda verilmiştir.
Öncelikle bu bağlantıdan indirebileceğiniz bir Adafruit Mqtt kütüphanesine ihtiyacımız var. Sadece Arduino IDE'yi açın. Örneklere gidin -> adafruit mqtt kitaplığı -> mqtt_esp8266
Biz edecek bu kodu düzenlemek bizim AIO tuşları ve Wi-Fi kimlik bilgilerine göre.
İlk olarak, ESP8266WIFI ve Adafruit MQTT için tüm kütüphaneleri dahil ettik .
#Dahil etmek
Biz Wi-Fi SSID ve Şifresini tanımlı size ESP-12e bağlamak istediğiniz.
#define WLAN_SSID "xxxxxxxx" #define WLAN_PASS "xxxxxxxxxxx"
Bu bölüm , sırasıyla “ io.adafruit.com ” ve “ 1883 ” olarak sabitlenen Adafruit sunucusu ve sunucu portunu tanımlar.
#define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 1883
Aşağıdaki alanları, Feed'i oluştururken Adafruit sitesinden kopyaladığınız kullanıcı adı ve AIO anahtarlarınızla değiştirin.
#define AIO_USERNAME "********" #define AIO_KEY "******************************"
Ardından, MQTT sunucusuna bağlanmak için bir ESP8266 WiFiClient sınıfı oluşturun.
WiFiClient istemcisi;
WiFi istemcisini ve MQTT sunucusunu ve oturum açma ayrıntılarını ileterek MQTT istemci sınıfını ayarlayın.
Adafruit_MQTT_Client mqtt (& müşteri, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
Değişikliklere abone olmak için 'hafif' adlı bir besleme ayarlayın.
Adafruit_MQTT_Subscribe light = Adafruit_MQTT_Subscribe (& mqtt, AIO_USERNAME "/ feeds / light");
In kurulum fonksiyonu, size çıktı almak istediğiniz ESP-12e PIN ilan ediyoruz. Çıkış olarak D0 pinini kullanıyorum. Ardından ESP-12e'yi Wi-fi erişim noktasına bağlarız.
geçersiz kurulum () { Serial.begin (115200); gecikme (10); pinMode (D0, OUTPUT); Serial.println (F ("Adafruit MQTT demosu")); // WiFi erişim noktasına bağlanın. Serial.println (); Serial.println (); Serial.print ("Bağlanılıyor"); Serial.println (WLAN_SSID); WiFi.begin (WLAN_SSID, WLAN_PASS); süre (WiFi.status ()! = WL_CONNECTED) { …. …. …
Hafif yayın için MQTT aboneliğini kurun.
mqtt.subscribe (& light); }
In döngü fonksiyonu, biz olacak MQTT sunucusuna bağlantı MQTT_connect () kullanarak canlı olmasını sağlamak; işlevi.
geçersiz döngü () { MQTT_connect ();
Şimdi, 'hafif' beslememize abone oluyoruz ve dizeyi adafruit IO'dan alıyoruz ve bu dizeyi atoi () kullanarak sayıya çeviriyoruz ; işlevini yapın ve bu numarayı digitalWrite () kullanarak PIND0'a yazın; işlevi.
Adafruit_MQTT_Subscribe * aboneliği; while ((abonelik = mqtt.readSubscription (5000))) { if (subscription == & light) { Serial.print (F ("Got_light:")); Serial.println ((char *) light.lastread); uint16_t num = atoi ((karakter *) light.lastread); digitalWrite (16, num); }
Çalışma:
ESP-12E'nizi dizüstü bilgisayara bağlayın ve aşağıdaki kodu yükleyin (kimlik bilgilerinizi kodda düzenlemeyi unutmayın).
D0 pinine bir LED veya röle bağlayın. Şimdi, Alexa hizmetinizin RPi'nizde çalıştığından emin olun.
Herhangi bir komut vermek için, her komut göndermek istediğinizde "Alexa" yı arayarak Alexa servisini uyandırmanız gerekir. Bir bip sesi duyacaksınız. Bip sesini duyduğunuzda, “ Alexa Trigger Işığı Açın. Bir dakika içinde ışığın Yandığını görebilirsiniz. Ve sonra " Alexa Tetikleyici Işığı Kapat " derseniz, ışık SÖNMELİDİR.
Bu kadar…. Yukarıdaki koda ESP-12E'nin GPIO pinlerini ekleyerek ve IFTTT'de farklı ifadelerle farklı Applet'ler yaparak daha fazla cihaz ekleyebilirsiniz.
Aşağıdaki tam kodu ve Gösteri Videosunu kontrol edin. Ayrıca tüm Ev Otomasyon Projelerimizi buradan kontrol edin