Arduino ile Sesle Kontrol: Google Assistant + IFTTT ile Cihaz Aç/Kapat (ESP8266)
Arduino ile Sesle Kontrol: Google Assistant + IFTTT ile Cihaz Aç/Kapat (ESP8266 ile)
Merhaba sevgili Arduino severler!
Bu yazımızda, günlük hayatımızı kolaylaştıracak süper bir projeye imza atıyoruz: Arduino ile sesle kontrol! Evet, yanlış duymadınız. Artık Google Assistant'ı kullanarak cihazlarınızı sesinizle açıp kapatabileceksiniz. Hem de karmaşık kodlara boğulmadan, kolayca anlaşılır adımlarla!
Projemizde kullanacağımız malzemeler oldukça basit:
- Arduino (UNO, Nano vb.)
- ESP8266 Wi-Fi Modülü (NodeMCU de olabilir)
- Röle Modülü
- Bağlantı Kabloları
Neden Bu Proje?
Akıllı ev sistemlerine giriş yapmak, projelerinizde farklı bir boyut yakalamak veya sadece "acaba yapabilir miyim?" sorusuna cevap bulmak istiyorsanız, bu proje tam size göre! Üstelik, IFTTT (If This Then That) ve Google Assistant'ı kullanarak projeyi hayata geçirmek, kodlama bilginiz ne seviyede olursa olsun, oldukça kolay.
Nasıl Çalışır?
Mantık aslında çok basit:
- Siz Google Assistant'a komut verirsiniz ("Lambayı aç").
- Google Assistant, IFTTT üzerinden tanımladığınız bir "Webhook" olayını tetikler.
- IFTTT, ESP8266'ya bir HTTP isteği gönderir.
- ESP8266, Arduino'ya sinyal gönderir.
- Arduino, röle modülünü kontrol ederek cihazı açar veya kapatır.
Gerekli Bağlantılar
Öncelikle, ESP8266 modülünü Arduino'ya bağlamamız gerekiyor. Bağlantıları aşağıdaki gibi yapıyoruz:
- ESP8266 VCC pini -> Arduino 3.3V pinine
- ESP8266 GND pini -> Arduino GND pinine
- ESP8266 TX pini -> Arduino RX pinine (veya 10 numaralı dijital pin)
- ESP8266 RX pini -> Arduino TX pinine (veya 11 numaralı dijital pin)
Ardından, röle modülünü Arduino'ya bağlıyoruz:
- Röle Modülü VCC pini -> Arduino 5V pinine
- Röle Modülü GND pini -> Arduino GND pinine
- Röle Modülü SINYAL pini -> Arduino Dijital Pin 8 (veya istediğiniz bir dijital pin)
Bağlantı şeması ile daha rahat yapabilirsiniz. ESP8266 modülünün besleme voltajına dikkat etmelisiniz. Çoğu ESP8266 3.3V ile çalışır, bu nedenle Arduino'nun 3.3V pinini kullanmanız önemlidir.
Arduino Kodu
Aşağıdaki kodu Arduino'nuza yükleyin:
#include <SoftwareSerial.h>
SoftwareSerial esp8266(10, 11); // RX, TX
const int relayPin = 8; // Röle'nin bağlı olduğu pin
String command;
void setup() {
Serial.begin(9600);
esp8266.begin(9600);
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, HIGH); // Başlangıçta röle kapalı (genelde NC kontakt kullanılır)
Serial.println("Arduino Hazir!");
}
void loop() {
if (esp8266.available() > 0) {
command = esp8266.readStringUntil('\n');
command.trim(); // Baştaki ve sondaki boşlukları temizle
Serial.print("Gelen Komut: ");
Serial.println(command);
if (command == "open") {
digitalWrite(relayPin, LOW); // Röleyi aç (cihazı aç)
Serial.println("Röle Acildi!");
} else if (command == "close") {
digitalWrite(relayPin, HIGH); // Röleyi kapat (cihazı kapat)
Serial.println("Röle Kapatildi!");
}
}
}
Açıklamalar:
- `SoftwareSerial` kütüphanesi, ESP8266 ile iletişim kurmak için kullanılıyor. (Eğer NodeMCU kullanıyorsanız Serial.begin kullanabilirsiniz ve TX/RX pinlerini tanımlamanıza gerek kalmaz)
- `relayPin`, röle modülünün bağlı olduğu pini temsil ediyor. İhtiyacınıza göre değiştirebilirsiniz.
- `digitalWrite(relayPin, HIGH);` röleyi başlangıçta kapalı tutar. Genellikle röle modüllerinde "Normally Closed" (NC) kontakt kullanılır. Yani, enerji yokken devre kapalıdır.
- `command` değişkeni, ESP8266'dan gelen komutu saklar.
- `open` komutu gelirse röle açılır, `close` komutu gelirse röle kapanır.
IFTTT ve Google Assistant Ayarları
Şimdi de IFTTT ve Google Assistant'ı ayarlayalım:
- IFTTT Hesabı Oluşturun: Eğer bir IFTTT hesabınız yoksa, ifttt.com adresinden ücretsiz bir hesap oluşturun.
- "Create" Butonuna Tıklayın: IFTTT arayüzünde "Create" butonuna tıklayarak yeni bir "Applet" oluşturmaya başlayın.
- "If This" Kısmını Ayarlayın: "If This" kısmına tıklayın ve "Google Assistant" servisini arayıp seçin.
- Google Assistant Tetikleyicisini Seçin: "Say a simple phrase" tetikleyicisini seçin.
- "What do you want to say?" kısmına "Lambayı aç" yazın.
- "What do you want the Assistant to say in response?" kısmına "Lambayı açıyorum" yazın.
- "Create trigger" butonuna tıklayın.
- "Then That" Kısmını Ayarlayın: "Then That" kısmına tıklayın ve "Webhooks" servisini arayıp seçin.
- Webhooks Ayarlarını Yapın: "Make a web request" seçeneğini seçin.
- URL: ESP8266'nın IP adresini ve komutu girin. Örneğin: `http://192.168.1.100/open` (ESP8266'nın IP adresini kendi ağınıza göre değiştirin).
- Method: GET
- Content Type: application/json
- Body: Boş bırakın.
- Create Action: "Create action" butonuna tıklayın.
- Finish: Applet'inize bir isim verin ve "Finish" butonuna tıklayın.
- Kapatmak İçin Tekrarla: Aynı adımları "Lambayı kapat" komutu için de tekrarlayın. Sadece URL'yi `http://192.168.1.100/close` olarak değiştirin.
ESP8266 Kodu
Son olarak, ESP8266 için gerekli kodu da paylaşalım:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
const char* ssid = "SizinWiFiAdiniz"; // WiFi ağ adınız
const char* password = "SizinWiFiSifreniz"; // WiFi şifreniz
ESP8266WebServer server(80);
void handleOpen() {
Serial.println("Open komutu alindi!");
Serial.println("open\n");
sendToArduino("open");
server.send(200, "text/plain", "OK");
}
void handleClose() {
Serial.println("Close komutu alindi!");
Serial.println("close\n");
sendToArduino("close");
server.send(200, "text/plain", "OK");
}
void handleNotFound() {
String message = "File Not Found\n\n";
message += "URI: ";
message += server.uri();
message += "\nMethod: ";
message += (server.method() == HTTP_GET) ? "GET" : "POST";
message += "\nArguments: ";
message += server.args();
message += "\n";
for (uint8_t i = 0; i < server.args(); i++) {
message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
}
server.send(404, "text/plain", message);
}
void sendToArduino(String command) {
Serial.print("Arduino'ya gonderilen: ");
Serial.println(command);
Serial.println("\n");
delay(100);
}
void setup() {
Serial.begin(9600);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("WiFi'ye baglaniliyor...");
}
Serial.println("WiFi'ye baglandi!");
Serial.print("IP adresi: ");
Serial.println(WiFi.localIP());
server.on("/open", handleOpen);
server.on("/close", handleClose);
server.onNotFound(handleNotFound);
server.begin();
Serial.println("Server baslatildi");
}
void loop() {
server.handleClient();
}
Açıklamalar:
- `ssid` ve `password` değişkenlerini kendi WiFi ağ bilgilerinizle güncelleyin.
- `server.on("/open", handleOpen);` ve `server.on("/close", handleClose);` komutları, gelen HTTP isteklerini ilgili fonksiyonlara yönlendirir.
- `sendToArduino(String command);` fonksiyonu, komutları Arduino'ya göndermek için kullanılır.
Sonuç
Tebrikler! Artık Google Assistant'ı kullanarak cihazlarınızı sesinizle kontrol edebilirsiniz. Bu proje, akıllı ev otomasyonuna ilk adımınız olabilir. İlerleyen zamanlarda sensörler ekleyerek veya farklı cihazları kontrol ederek projeyi daha da geliştirebilirsiniz.
Umarım bu yazı size yardımcı olmuştur. Herkese keyifli kodlamalar!
Etiketler: arduino, google assistant, ifttt, esp8266, sesle kontrol, akıllı ev, otomasyon, röle, webhook, iot
```
0 yorum: