Merhaba arkadaşlar, en son esp8266 wifi modülü ile server kurup, Merhaba Dünya yazdırmıştık. Şimdi ise biraz daha işleri zorlaştırıp sayfaya 2 tane buton ekleyeceğiz ve bu butonlar yardımı ile Arduino’nun üzerinde 13. dijital pine bağlı ledi yakıp söndüreceğiz.

Yapacağımız işlemlerin çalışma mantığından bahsedersek, önce Hypertext Markup Language(HTML) denilen ve web sayfalarını oluşturmak için kullanılan bir metin işaretleme dilini çok az da olsa kullanacağız. Bu dil, web sayfalarına yazı yazdırma, buton ekleme gibi özelliklere sahip. Bizde ledi yakıp söndüreceğimiz butonları bu dil ile yapacağız. Butona basıldığında açtığımız server, wifi modülümüze bir değer yollayacak ve daha önce belirlediğimiz bu değer geldiğinde led yakıp söndürülecek.

Bu uygulamada kullanacağımız malzemeler şunlar:

Bu malzemelere ek olarak kullanacağımız araçlar şunlardır:

Derse başlamadan önce eğer AT Komutlarının nasıl kullanılacağını bilmiyorsanız buraya tıklayıp ilgili konuyu inceleyebilirsiniz. Veya ESP modülüne özel IP adresini bilmiyorsanız bir önceki yazıdan nasıl bulunacağına bakabilirsiniz.

Derste kullanacağımız HTML kodlarrından bahsetilirse;

Öncelik olarak her html kod parçası, <html> şeklinde büyüktür ve küçüktür işaretleri içine yazılır ve işlem bittikten sonra </html> şeklinde kapatılır.

<head> Hello World </head>

 

<head> : Sayfamız hakkında bilgilerin bulunduğu bir etikettir. 

<br> : Satır atlamaya yarar. Bir nevi enter tuşudur. Fakat herhangi bir kapatma komutu yoktur. Yani bu koddan sonra </br> gibi bir komut yazmayacağız.

<button type=’button’> : Web sitesi üzerinde buton oluşturur ve </button> şeklinde kapatılması gerekmektedir.

<a href= : Site içerisine veya buton içerisine bir link verir.

Projede kullanacağımız html kodları bu kadar.

Arduino Bağlantı Şeması:

ESP8266-bağlantı-şeması-1-696x381-1-696x511

Bağlantıları bu şekilde yaptıktan sonra Aşağıdaki kodu Arduino’ya yüklememiz gerekiyor.

NOT: RX ve TX pinleri takılı iken Arduino’ya kod atılamıyor, RX ve TX pinlerini çıkartıp kod attıktan sonra tekrar takmamız gerekmekte.

Kod içerisinde bir tane daha önce kullanmadığımız komut var. indexOf komutu.

degisken.indexOf(); komutu bir string içerisinde başka bir string parçasını aramaya yarar. Bulursa o değeri, bulamaz ise -1 değerini döndürür.

#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(13,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,80\r\n");
   delay(1000);
}
void loop(){
  if(Serial.available()>0){
    if(Serial.find("+IPD,")){
      String metin = "<head> Hello World </head>";
      metin += "<br><a href=\" ?pin=on\"><button type='button'>ON</button></a>"; 
      metin += "<br><a href=\" ?pin=off\"><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);
      led_yakma();
      Serial.println("AT+CIPCLOSE=0");
      
    }
  }
}

void led_yakma(){
 String gelen ="";
 char serialdenokunan;
 while(Serial.available()>0){
 serialdenokunan = Serial.read();
 gelen +=serialdenokunan;
 
 }
 Serial.println(gelen);
 if((gelen.indexOf(":GET /?pin=on")>1)){  //on butonuna basıldığında server adresinde /?pin=on var ise
  digitalWrite(13,HIGH);                  //ledi yakar
 }
  if((gelen.indexOf(":GET /?pin=off")>1)){ // off butonuna basıldığında server adresinde /?pin=off var ise
  digitalWrite(13,LOW);                    //ledi söndürür
 }
 }

 

Kod üzerinde wifi ismi ve şifresi gibi gerekli değişiklikleri yaptıktan sonra Arduino’ya yüklüyoruz ve aşağı yukarı 10 saniye sonra server açılmış oluyor(Kod içerisindeki delay yani bekleme komutlarından dolayı). Server açıldığında aşağıdaki gibi gözükecektir.

server_gorunusu

Sırası ile OF ve OFF butonlarına basıldığında ise aşağıdaki gibi link değişecek ve Arduino’ya veri yollayacaktır.

off_butonuna_basilinca_goruntu on_butonuna_basilinca_goruntu

 

 

 

 

NOT: HTML bilgim yetersiz olduğu için en fazla bu şekilde bir site oluşturabildim. HTML konusunda sizde benim gibi iseniz şu siteden yardım alabilirsiniz.

19 Yorumlar

    • Merhaba, ağ adı ve şifresini yazarken tırnak işaretlerini kaldırmadığınıza emin misiniz? Hatayı yazarsanız daha doğru bir cevap verebilirim.

    • Teşekkür ederim Orhan Bey benim de sorunum sunucunun sorunlu(sayfanın yüklenmemesi vb.) ve sayfanın sürekli yenileniyor vaziyette olmasıydı. 2 saniyelik gecikme sorunu halletti.

  1. ilk açıldığında düzgün çalışıyor fakat kısa bir süre sonra sayfa görüntülemiyor mesajı alıyorum. bir daha bağlanamıyorum. reset attıgım zaman seri port ekranınını açmadan tekrar aktif olmuyor. bir çalışıp bir çalışmıyor

  2. Abi şimdi bu butonların yanında benim gaz sensorunden yararlanarak gaz algilandiginda gaz var algilanmadiginda stabil yazdirmam gerekiyor bu kodlarda ne gibi değişiklikler yapmam gerek bu proje benim için çok önemli ustalardan ve adminden yardım bekliyorum. Teşekkürler.

  3. Abilerim kablosun ağ kurmayı Access point ı de gosterecekmisiniz hiç bir yerde bulamadım da birde bağlanmayı değil de kablosuz ağ oluşturmayı yaptığımızda yine devre semasi aynimi olur yoksa rx tx ı de 3.3 volt mu düsurmemiz gerekir bazi yerlerde rx tx için de dusurulmeli diyorlar direkt baglarsam arduino uno ya yanarmi

  4. Merhabalar. Yazınız için çok teşekkürler son derece faydalı.Bir sorum olacaktı esp8266 ile server kurulumunu gerçekleştirdim.Bu kurduğum servera atardığım bilgileri java oluşturduğum cliente nasıl çekebilirim.Bununla alakalı yardımcı olabilir misiniz veyahut yönlendirebileceğiniz bir kaynak var mı?

    • Merhabalar. Yazınız için çok teşekkürler son derece faydalı.Bir sorum olacaktı esp8266 ile server kurulumunu gerçekleştirdim.Bu kurduğum servera aktardığım bilgileri, javada oluşturduğum cliente nasıl çekebilirim.Bununla alakalı yardımcı olabilir misiniz veyahut yönlendirebileceğiniz bir kaynak var mı?

  5. BU KODLARI ÇİPE YÜKLEMEYECEK MİYİZ? ARDUİNONUN ÇİPİNE YÜKLEDİM BAĞLANTILARI YAPIP. COMPORTTAN AÇMAYACAK MIYIZ? BİRAZ DETAYLI ANLATIRSANIZ.

CEVAP VER