back to top

ESP8266 ile Akıllı Kahve Makinesi

Arkadaşlar merhaba, bu projemizde aynı internetten led açıp kapatır gibi kahve makinemizi açıp kapatacağız. Başlıkta kahve makinesi yazdım fakat bu proje ile ister oda lambanızı, ister televizyonunuzu kapatıp açın, birbirinden hiç bir farkı yok bu işlemlerin.

Öncelikle internete bağlanma, internet üzerinden Arduino’ya veri yollayıp kahve makinemizi açıp kapama işlemlerini ESP8266 üzerinden yapacağız(Bu yüzden daha önce ESP8266 kullanmadıysanız sizi şöyle alalım). Açma kapama komutu Arduino’ya geldikten sonra, kahve makinemizi röle ismi verilen elektromanyetik bir komponent ile kontrol edeceğiz.

Röle üzerinden akım geçtiği zaman çalışan bir elektromanyetik devre elemanı olup, başka bir devrenin açılıp kapanmasını sağlar. Yani bir nevi anahtardır. 5Volt veya 12Volt tetiklemeli modelleri bulunur. Yani bir bacağına 5Volt geldiğinde diğer 2 bacağı kısa devre olur. 5Volt gelmediğinde ise başka 2 bacağı kısa devre olur. Ayrıntılı bilgiye buradan ulaşabilirsiniz.

Kahve makinemizi röle ile kontrol etmemizin sebebi, bildiğiniz gibi evimizdeki tüm elektrikli aletler prizlerden gelen 220V gerilim ile çalışır. Kimisi bunu 12V’a veya 5V’a dönüştürüp o şekilde kullanırken, kimisi 220V gerilimi direkt olarak kullanır. Sonuç olarak öyle ya da böyle cihazlarımızın hepsi ilk önce 220V gerilim ile beslenir ve Arduino ile sadece 5V gerilimleri kontrol edebiliriz.

Röle ile direkt olarak 220Volt’u kontrol edeceğimizden dikkatli olmakta büyük fayda var. İlk defa röle kullanacaksanız 220Volt u kontrol etmek yerine 12Volt’luk bir pili kullanıp 12Volt ile çalışan lambaları kontrol etmeniz sizin için daha iyi olacaktır.

Röle devresini hazır bir şekilde satın alabileceğiniz gibi kendiniz de yapabilirsiniz. Eğer hazır almayıp kendim yapacağım derseniz devrenizi breadboard’a değil pertanaksa kurmanız ve 220Volt geçecek yerleri elektrik bandı veya silikon ile güzelce yalıtmanız gerekmektedir. Breadboard kullanmamamızın nedeni breadboard’ın içindeki iletken yolların AC akımı kaldırmayacağı ve yanacağındandır.

Röle devresini kendi yapacaklar röle devresini kolayca internette aratarak bulabilirler. Bu projede hem kolaylık olması açısından hem de elimde bulunduğu için ben hazır röle kartı kullanacağım.

Projede kullanılacak malzemeler ve araçlar:

İlk önce devremizi kuralım daha sonra kodu anlatıp, yaptığımız projeyi tüm internete açmaktan bahsedeceğim.

ESP8266 modülü ile yaptığımız bu projede, açma kapama işlemlerini internet üzerinden yapabilmek için ESP modülünün IP adresine ihtiyacımız olacak. Bu ip adresi 192.168.X.X şeklinde bir dizilime sahip ve buradaki X’ler sizin evinizdeki esp’nin bağlı olduğu modem tarafından veriliyor. Eğer esp modeme bağlı değilse IP adresiniz 0.0.0.0 şeklinde gözükecektir. Modülünüzün IP adresini bilmiyorsanız daha önceki şu yazımdan bulabilirsiniz.

Kuracağımız devre aşağıdaki şekilde olacak. Fakat kahve makinesinin röleye bağlanacak kısımları için, kablonun kesilmesi gerekiyor. Kesmeye kıyamıyorsanız dişi erkek uçlu kabloyu kahve makinenize bağlayıp onu kesebilirsiniz(Dişi erkek uçlu kablo dediğim bildiğiniz uzatma kablosu).

Bağlantı Şeması:

devre_samasi

RÖLENİN BAĞLANMASI

Röle ile 220 Volt alternatif akımı kontrol edeceğimizden jumper kablo kullanamıyoruz. direk olarak kahve makinemizin kendi prizini kesip aşağıdaki resimlerdeki şekilde röleye bağlamamız gerekmekte. Ya da kesmek istemiyorum derseniz, elektrikçilerde bulunan uzatma kablolarından alıp onu kesebilirsiniz. Yarım metre kablo ve bir dişi bir erkek fiş yeterli olacaktır.

IMG-20160516-WA0006

IMG-20160516-WA0007Devrelerimizi bu şekilde bağladıktan sonra daha önce led yakmak için kullandığımız kod üzerinde küçük oynamalar yapmamız gerekecek. Temelde aynı kod fakat google play üzerinden bir uygulama ile kullanabilmemiz için bir kaç noktayı değiştirmemiz gerekiyor. Google play demişken, rölemizi sadece ip numaramızı internet tarayıcısına girip butonlara tıklayarak değil, android uygulaması üzerinden de kontrol edebileceğiz.

Daha bir çok uygulama mevcut bu şekilde kullanılabilecek. Siz de google play’e esp8266 yazarak bir çok uygulamaya ulaşabilirisiniz fakat ben bu uygulamayı kullanacağım projede.

IMG-20160502-WA0000Uygulamayı açtığımızda bizi yandaki gibi bir ekran karşılıyor. Your IP Here yazan kısma IP adresimizi giriyoruz ve kırmızı butona bastığımızda Arduino’muza rölenin açılma komutunu yolluyor, tekrar bastığımızda ise kapatma komutunu yolluyor.

Şimdi gelelim Arduino Kodumuza;

#define ag_ismi "Wifi Adresi"
#define ag_sifresi "Wifi Sifresi"
void setup()
{
  Serial.begin(115200); //Seriport'u açıyoruz. Güncellediğimiz 
                        //ESP modülünün baudRate değeri 115200 olduğu için bizde Seriport'u 115200 şeklinde seçiyoruz
  Serial.println("AT"); //ESP modülümüz ile bağlantı kurulup kurulmadığını kontrol ediyoruz.
  pinMode(8,OUTPUT);
  delay(3000); //ESP ile iletişim için 3 saniye bekliyoruz.
 
  if(Serial.find("OK")){         //esp modülü ile bağlantıyı kurabilmişsek modül "AT" komutuna "OK" komutu ile geri dönüş yapıyor.
     Serial.println("AT+CWMODE=1"); //esp modülümüzün WiFi modunu STA şekline getiriyoruz. Bu mod ile modülümüz başka ağlara bağlanabilecek.
     delay(2000);
     String baglantiKomutu=String("AT+CWJAP=\"")+ag_ismi+"\",\""+ag_sifresi+"\"";
    Serial.println(baglantiKomutu);
     delay(5000);
 }
 
   Serial.print("AT+CIPMUX=1\r\n");
   delay(200);
   Serial.print("AT+CIPSERVER=1,333\r\n");
   delay(1000);
}
void loop(){
  if(Serial.available()>0){
    if(Serial.find("+IPD,")){
      String metin = "<head> Kahve Makinesi </head>";
      metin += "<br><a href=\" /gpio/0\"><button type='button'>ON</button></a>"; 
      metin += "<br><a href=\" /gpio/1\"><button type='button'>OFF</button></a>";      
      String cipsend = "AT+CIPSEND=";
      cipsend +="0";
      cipsend +=",";
      cipsend += metin.length();
      cipsend += "\r\n";
      Serial.print(cipsend);
      delay(500);
      Serial.println(metin);
      role_tetikleme();
      Serial.println("AT+CIPCLOSE=0");
      
    }
  }
}
 
void role_tetikleme(){
 String gelen ="";
 char serialdenokunan;
 while(Serial.available()>0){
 serialdenokunan = Serial.read();
 gelen +=serialdenokunan;

 }
 Serial.println(gelen);
 if((gelen.indexOf(":GET /gpio/0")>1)){  //on butonuna basıldığında server adresinde /?pin=on var ise
  digitalWrite(13,HIGH);                  
 }
  if((gelen.indexOf(":GET /gpio/1")>1)){ // off butonuna basıldığında server adresinde /?pin=off var ise
  digitalWrite(13,LOW);                    
 }
 }

ESP Modülünü Tüm İnternete Açma 

Arkadaşlar buraya kadar yaptıysanız şuanda aynı ağa bağlı tüm cihazlardan AT+CIFSR komutu ile bulduğunuz IP adresini kullanarak bağlanabilir ve kahve makinenizi internet üzerinden çalıştırabilirsiniz. Fakat bu IP adresi ile işinizdeyken kahve makinenizi çalıştıramaz ya da ev ağı dışından bir ağ ile açtığımız sunucuya ulaşamazsınız. Bunun nedeni ise size verilen IP adresinin Local ağ üzerinde tanımlı olmasıdır. Bu local ağdaki IP adresini tüm internete açmak için Port Yönlendirme ismi verilen bir yöntem kullanacağız. Bu kısım ESP8266 ile bağlantılı olmayıp modem ayarları üzerinden gerçekleştirilecektir.

Öncelik ile modemin ayarlarına girmemiz gerekiyor. Bunun için önce modemin IP adresini bulmalıyız. Bu adresil bulabilmek için Windows’da başlata cmd yazıp enter’a basıyoruz ve aşağıdaki gibi bir ekran ile karşılaşıyoruz.

cmd_ekrani

Bu ekranı gördükten sonra ekrana ipconfig yazıyoruz ve aşağıda kırmızı ile kutu içine alınan yeri not ediyoruz. Burası bizim modemimize giriş anahtarı.

cmd_ekrani_ipconfig

Benim modemim netmaster marka bir modem bu yüzden şu şekilde bir ekran ile karşılaştım. Sizin göreceğiniz görüntü daha farklı olabilir.

netmaster

Eğer daha önce değiştirmediyseniz muhtemelen kullanıcı isminiz ve şifreniz ekranda yazacaktır. Giriş yaptığımızda üst menüden gelişmiş sekmesine tıklıyoruz.

netmaster_gelismis

Daha sonra sol taraftan yönlendir seçeneğini işaretliyoruz. Gelen ekran bizim port yönlendireceğimiz yer.

netmaster_yonlendirme

Port yönlendirme ekranına ulaştıktan sonra bilgileri aşağıdaki gibi dolduruyoruz.

NOT: Burada Lokal IP dediği kısım sizin kendi ESP modülünüzün IP adresidir unutmayın.

netmaster_ip4v

Kod içerisinde 333 numaralı portu açtığım için burada başlangıç ve bitiş portunu 333 yaptım. Eğer 80 veya başka bir portu seçseydim, seçtiğim port numarasını girmem gerekecekti.

Port yönlendirme işlemini tamamladıktan sonra, artık sunucumuz tüm internete açılmış durumda. Artık modemimizin bağlı cihazlara atadığı IP adresi ile sunucuya bağlanabiliriz.

whatismyip

Örneğin, ben yaptığım projelere 194.27.101.122:333 IP adresi ile girebileceğim. Sondaki 333 port numaramı gösteriyor.

Eğer ESP ile aynı ağa bağlı iseniz, esp’nin kendi IP adresinden bağlanabilirsiniz.

Son Çıkan Yazılar

17 YORUMLAR

  1. Hocam gerekli bağlamaları yapmama rağmen esp modülünün mavi ışığı hiçbir şekilde yanmıyor. Nerede yanlış yapıyorum kafayı yemek üzereyim.

  2. Yani akıllı ev gibi düşünelim internet üzerinden ışıgı yakmada sorun yok ama bir buton ekleyerek hem butondan hem Internetten odanın lambalarını nasıl yakarız

    • bunun için çift anahtarlı lamba sistemi kuracaksın. bunun için 2li röle kullanacaksın rölenin bir tetiklemesi senin butonundan tetiklenecek diğeri de internetten gelen sinyalle.

  3. programda da at komutlarında da sorun yok fakat tarayıcıda asla açılmıyor. Sebebi ne olabilir? Statik ip de aldım fakat at+cifsr komutundan dönen ip adresini tarayıcıya girdiğimde görüntüleyemiyorum. aynı ağda olduğum halde yine görüntüleyemiyorum.

  4. Merhaba. Önceliklle çalışmalarınız için teşekkür ederim. Bir problemim var:
    NodeMCU ile 8 çıkışı (D0-D7) aktif pasif edebiliyorum. Ben bu devreyi gerçek hayata geçirmek için röle kartı yaptım. NodeMCU ‘yu USB üzerinden röleleri ise harici DC 5V ile besledim. Sisteme enerji verdim. Maalesef bağlanmadı:( . Birkaç denemeden sonra NodeMCU ‘yu röle kartından ayırdıktan sonra bağlanmayı denedim bağlandı. :).

    Bu haliyle enerjiyi kesmeden doğrudan röle kartına taktım ve röleleri kontrol ediyor olduğunu gördüm. Ama NodeMCU röle kartında iken enerjiyi kesip geri verdiğimde bağlanmıyor.

    Yardımcı olursanız sevinirim…

    • Sorunu sıkıştırdım. Aynı problem ESP-01 da da mevcut.
      ESP-01 ‘e tek bir LED’i 500msn aralıklarla yakıp söndürüyorum.
      LED ‘in sürülüşü aşağıdaki gibi:
      LED + 220ohm Direnç +Switch + ESP-01 (GPIO0)

      Programı ESP-01’e yükledikten sonra ayrı bir USB Power Supply ile besliyorum.

      –1– SW kısa devrede iken LED yanıyor fakat program çalışmıyor.

      –2– SW açık devre iken program çalışıyor ve bu şelikde SW kısa devre
      yapılıyor. LED de normal şekilde 500msn aralıklarla görevini yapıyor.

      –3– Bu şekilde program çalışırken enerjiyi kesip geri verdiğimizde
      program çalışmıyor. Çalışması için SW. açık devre yapıp ardından
      kısa devre yapmamız gerekiyor.

      Yani doğrudan yük altında iken program çalışmıyor.

      Konuyla ilgili yardımlarınızı bekliyorum…

  5. İYİ GÜNLER
    WİFİ MODÜLÜ BİR AĞ İLE BAĞLANMASINA RAĞMEN, IP SİNİ ÖĞRENMEK İÇİN GİRDİĞİM AT+CIFSR KODU ÇALIŞMIYOR. IP ADRESİNİ GÖREMİYORUM. YARDIM EDER MİSİNİZ?

  6. ben bu projeyi kendim yaptım ama sadece kendi ağım üzerinden kontrol ediyorum sizin ki gibi benim wifimde netmaster ama lokal ıp mi esp8266 ıp si yapıyorum fakat başka ağlar üzerinden kontrol edemiyorum yardımcı olursanız sevinirim.

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz