Esp8266 & Ethernet Mödülü & Android Uygulama

Merhaba arkadaşlar bu tarifimde sizlere uzaktan röle kontrolünü anlatmaya çalışacağım. Bunu içinde Android uygulama ve ethernet modüllerinin kullanacağız. Röleleri kablolu veya kablosuz bağlantı ile kontrol edeceğiz. Port yönlendirme yapabilirseniz yerel ağ dışında evdeki röleleri dünyanın her hangi bir yerinden kontrol edebilirsiniz.

ETHERNET MODÜLÜ İLE YAPILAN DEVRE (KABLOLU)

#include <UIPEthernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };   //physical mac address
byte ip[] = { 192, 168, 1, 100 };                      // ip in lan (that's what you need to use in your browser. 
byte gateway[] = { 192, 168, 1, 1 };                   // internet access via router
byte subnet[] = { 255, 255, 255, 0 };                  //subnet mask
EthernetServer server(85);                             //server port     
String readString;



int oda1 = A0, oda2 = A1, oda3 = A2, salon= A3; //Step motor pinlerini tanımlıyoruz.
int mutfak =A4;
int wc =A5;
int kirmizi =3;
int yesil =2;
#include <LiquidCrystal.h>


//               (Rs, E, D4, D5, D6 ,D7)
LiquidCrystal lcd(9 , 8, 7 , 6 , 5 , 4);

void setup() {
 // Open serial communications and wait for port to open:
 
   lcd.begin(16, 2);
  lcd.clear();
  pinMode(oda1, OUTPUT);                                   //Motor pinleri OUTPUT olarak ayarlanır.
  pinMode(oda2, OUTPUT);
  pinMode(oda3, OUTPUT);
  pinMode(salon, OUTPUT);
  pinMode(mutfak, OUTPUT);
  pinMode(wc, OUTPUT);
  pinMode(kirmizi, OUTPUT);
  pinMode(yesil, OUTPUT);
  
  Serial.begin(9600);
  digitalWrite(kirmizi, HIGH);
  lcd.setCursor (0, 0);
  lcd.print("    BAGLNATI    ");
  lcd.setCursor (0, 1);
  lcd.print("   YAPILIYOR    ");
 
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }
 

  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip, gateway);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());

digitalWrite(kirmizi, LOW);
  lcd.setCursor (0, 0);
  lcd.print("BAGLANTI YAPILDI");
  lcd.setCursor (0, 1);
  lcd.print(Ethernet.localIP());
  lcd.print("             ");
 
  
}


void loop() {
  // Create a client connection

  lcd.setCursor (0, 0);
  lcd.print("BAGLANTI YAPILDI");
  lcd.setCursor (0, 1);
  lcd.print(Ethernet.localIP());
  lcd.print("             ");
  
        digitalWrite(yesil, LOW);
  EthernetClient client = server.available();
  if (client) {
        digitalWrite(yesil, HIGH);
    while (client.connected()) {   
      if (client.available()) {
        char c = client.read();
     
        //read char by char HTTP request
        if (readString.length() < 100) {
          //store characters to string
          readString += c;
          //Serial.print(c);
         }

         //if HTTP request has ended
         if (c == '\n') {          
           Serial.println(readString); //print to serial monitor for debuging
     
           client.println("HTTP/1.1 200 OK"); //send new page
           client.println("Content-Type: text/html");
           client.println();     
     
           delay(1);
           //stopping client
           client.stop();
           //controls the Arduino if you press the buttons
           if (readString.indexOf("?odabir-ac") >0){
                 digitalWrite(oda1, HIGH);
lcd.setCursor (0, 0);
  lcd.print("KOMUT ALINDI    ");
  lcd.setCursor (0, 1);
  lcd.print("ODA 1 AKTIF      ");
  delay(1000);
           }
           if (readString.indexOf("?odabir-kapat") >0){
            digitalWrite(oda1, LOW);
lcd.setCursor (0, 0);
  lcd.print("KOMUT ALINDI    ");
  lcd.setCursor (0, 1);
  lcd.print("ODA 1 PASIF      ");
  delay(1000);
           }
            if (readString.indexOf("?odaiki-ac") >0){
           digitalWrite(oda2, HIGH);
lcd.setCursor (0, 0);
  lcd.print("KOMUT ALINDI    ");
  lcd.setCursor (0, 1);
  lcd.print("ODA 2 AKTIF      ");
  delay(1000);
           }
           if (readString.indexOf("?odaiki-kapat") >0){
              
  digitalWrite(oda2, LOW);
lcd.setCursor (0, 0);
  lcd.print("KOMUT ALINDI    ");
  lcd.setCursor (0, 1);
  lcd.print("ODA 2 PASIF      ");
  delay(1000);
           }
            if (readString.indexOf("?odauc-ac") >0){
              
        digitalWrite(oda3, HIGH);
lcd.setCursor (0, 0);
  lcd.print("KOMUT ALINDI    ");
  lcd.setCursor (0, 1);
  lcd.print("ODA 3 AKTIF      ");
  delay(1000);
           }
           if (readString.indexOf("?odauc-kapat") >0){
              
  digitalWrite(oda3, LOW);
lcd.setCursor (0, 0);
  lcd.print("KOMUT ALINDI    ");
  lcd.setCursor (0, 1);
  lcd.print("ODA 3 PASIF      ");
  delay(1000);
           }
             if (readString.indexOf("?salon-ac") >0){
             
        digitalWrite(salon, HIGH);
lcd.setCursor (0, 0);
  lcd.print("KOMUT ALINDI    ");
  lcd.setCursor (0, 1);
  lcd.print("SALON AKTIF      ");
  delay(1000);
           }
           if (readString.indexOf("?salon-kapat") >0){
            digitalWrite(salon, LOW);
lcd.setCursor (0, 0);
  lcd.print("KOMUT ALINDI    ");
  lcd.setCursor (0, 1);
  lcd.print("SALON PASIF      ");
  delay(1000);
           } if (readString.indexOf("?mutfak-ac") >0){
             
        digitalWrite(mutfak, HIGH);
lcd.setCursor (0, 0);
  lcd.print("KOMUT ALINDI    ");
  lcd.setCursor (0, 1);
  lcd.print("MUTFAK AKTIF      ");
  delay(1000);
           }
           if (readString.indexOf("?mutfak-kapat") >0){
             digitalWrite(mutfak, LOW);
lcd.setCursor (0, 0);
  lcd.print("KOMUT ALINDI    ");
  lcd.setCursor (0, 1);
  lcd.print("MUTFAK PASIF      ");
  delay(1000);
           } 
           if (readString.indexOf("?wc-ac") >0){
               
        digitalWrite(wc, HIGH);
lcd.setCursor (0, 0);
  lcd.print("KOMUT ALINDI    ");
  lcd.setCursor (0, 1);
  lcd.print("WC AKTIF        ");
  delay(1000);
           }
           if (readString.indexOf("?wc-kapat") >0){
              digitalWrite(wc, LOW);
lcd.setCursor (0, 0);
  lcd.print("KOMUT ALINDI    ");
  lcd.setCursor (0, 1);
  lcd.print("WC PASIF        ");
  delay(1000);
           }
            readString="";  
           
         }
       }
    }
}
}

ESP8266 ile Yapılan DEVRE

String agAdi = "aaaaa";                   //Ağımızın adını buraya yazıyoruz.
String agSifresi = "aaaaa";             //Ağımızın şifresini buraya yazıyoruz.
int oda1 = A0, oda2 = A1, oda3 = A2, salon = A3; //Step motor pinlerini tanımlıyoruz.
int mutfak = A4;
int wc = A5;
int kirmizi = 3;
int yesil = 2;
 int a=0;
 int b=0;
 int d=0;
   String okunan;
   String komut;
#include <LiquidCrystal.h>


//               (Rs, E, D4, D5, D6 ,D7)
LiquidCrystal lcd(9 , 8, 7 , 6 , 5 , 4);

void setup() {
  lcd.begin(16, 2);
  lcd.clear();
  pinMode(oda1, OUTPUT);                                   //Motor pinleri OUTPUT olarak ayarlanır.
  pinMode(oda2, OUTPUT);
  pinMode(oda3, OUTPUT);
  pinMode(salon, OUTPUT);
  pinMode(mutfak, OUTPUT);
  pinMode(wc, OUTPUT);
  pinMode(kirmizi, OUTPUT);
  pinMode(yesil, OUTPUT);
  Serial.begin(115200);


  //Seri haberleşmeyi başlatıyoruz.
  digitalWrite(kirmizi, HIGH);
  lcd.setCursor (0, 0);
  lcd.print("Wifi Baglantisi ");
  lcd.setCursor (0, 1);
  lcd.print("   YAPILIYOR    ");
  Serial.println("AT");      //AT komutu ile modül kontrolünü yapıyoruz.

  while (!Serial.find("OK")) {                                  //Modül hazır olana kadar bekliyoruz.
    Serial.println("AT");

  }
  delay(1000);
  //  Serial.println("AT+RST");                                     //ESP8266'yı resetliyoruz.
  //  delay(1000);
  //  while(!Serial.find("ready"))                                  //Resetleme işleminin bitmesini bekliyoruz.
  //  delay(1000);
  Serial.println("AT+CWMODE=1");                                //Modülümüzü client olarak ayarlıyoruz.
  while (!Serial.find("OK"));                                   //Ayarlamanın tamamlanmasını bekliyoruz.
  Serial.println("AT+CWJAP=\"" + agAdi + "\",\"" + agSifresi + "\""); //Wifi'a bağlanıyoruz.


  while (!Serial.find("OK"));                                   //Bağlanana kadar bekliyoruz.
{
   lcd.setCursor (0, 0);
  lcd.print("Wifi Baglantisi ");
  lcd.setCursor (0, 1);
  lcd.print("   YAPILIYOR    ");
 
}

 lcd.clear();
     lcd.setCursor (0, 0);
  lcd.print("  IP ADRES     ");
     lcd.setCursor (0, 0);
  lcd.print("  BEKLENIYOR   ");


  Serial.print("AT+CIFSR\r\n");       //IP adresini ve MAC adresini okuyoruz.
  Serial.print(espOkuma(1000));



  serialTemizle(2000);                                          //Seri haberleşmede kullanmadığımız verileri temizliyoruz.
  Serial.print("AT+CIPMUX=1\r\n");                              //Çoklu bağlantı ayarını yapıyoruz.
  serialTemizle(2000);
  Serial.print("AT+CIPSERVER=1,80\r\n");                        //Server oluşturuyoruz ve 80. porttan dinlemeye başlıyoruz.

  serialTemizle(2000);


}
void loop() {

  digitalWrite(kirmizi, LOW);
  lcd.setCursor (0, 0);
  lcd.print("BAGLANILAN WIFI ");
  lcd.setCursor (0, 1);
  lcd.print(agAdi);
  lcd.print("                 ");


  if (Serial.available()) {                                     //Seri haberleşme verisi geldiğinde içindeki komutlar çalışır.
    if (Serial.find("+IPD,")) {                                 //Bağlantı isteği geldiğinde içindeki komutlar çalışır.

      digitalWrite(yesil, HIGH);
      delay(200);
a=0;
b=0;
      digitalWrite(yesil, LOW);
      int connectionId = Serial.read() - 48;                    //Bağlantı numarasını okuyoruz.
      komut = espGelen(1000);                            //Bağlantı komutlarını alıyoruz.


      if (komut.indexOf("odabir-ac") != -1)
      {
        digitalWrite(oda1, HIGH);

        lcd.setCursor (0, 0);
        lcd.print("KOMUT ALINDI    ");
        lcd.setCursor (0, 1);
        lcd.print("ODA 1 AKTIF      ");
        delay(1000);
      }
      else if (komut.indexOf("odabir-kapat") != -1)

      {
        digitalWrite(oda1, LOW);
        lcd.setCursor (0, 0);
        lcd.print("KOMUT ALINDI    ");
        lcd.setCursor (0, 1);
        lcd.print("ODA 1 PASIF      ");
        delay(1000);

      }
      else if (komut.indexOf("odaiki-ac") != -1)
      {
        digitalWrite(oda2, HIGH);
        lcd.setCursor (0, 0);
        lcd.print("KOMUT ALINDI    ");
        lcd.setCursor (0, 1);
        lcd.print("ODA 2 AKTIF      ");
        delay(1000);
      }
      else if (komut.indexOf("odaiki-kapat") != -1)

      {
        digitalWrite(oda2, LOW);
        lcd.setCursor (0, 0);
        lcd.print("KOMUT ALINDI    ");
        lcd.setCursor (0, 1);
        lcd.print("ODA 2 PASIF      ");
        delay(1000);

      }


      else if (komut.indexOf("odauc-ac") != -1)
      {
        digitalWrite(oda3, HIGH);
        lcd.setCursor (0, 0);
        lcd.print("KOMUT ALINDI    ");
        lcd.setCursor (0, 1);
        lcd.print("ODA 3 AKTIF      ");
        delay(1000);
      }
      else if (komut.indexOf("odauc-kapat") != -1)

      {
        digitalWrite(oda3, LOW);
        lcd.setCursor (0, 0);
        lcd.print("KOMUT ALINDI    ");
        lcd.setCursor (0, 1);
        lcd.print("ODA 3 PASIF      ");
        delay(1000);

      }


      else if (komut.indexOf("salon-ac") != -1)
      {
        digitalWrite(salon, HIGH);
        lcd.setCursor (0, 0);
        lcd.print("KOMUT ALINDI    ");
        lcd.setCursor (0, 1);
        lcd.print("SALON AKTIF      ");
        delay(1000);
      }
      else if (komut.indexOf("salon-kapat") != -1)

      {
        digitalWrite(salon, LOW);
        lcd.setCursor (0, 0);
        lcd.print("KOMUT ALINDI    ");
        lcd.setCursor (0, 1);
        lcd.print("SALON PASIF      ");
        delay(1000);

      }
      else if (komut.indexOf("mutfak-ac") != -1)
      {
        digitalWrite(mutfak, HIGH);
        lcd.setCursor (0, 0);
        lcd.print("KOMUT ALINDI    ");
        lcd.setCursor (0, 1);
        lcd.print("MUTFAK AKTIF      ");
        delay(1000);
      }
      else if (komut.indexOf("mutfak-kapat") != -1)

      {
        digitalWrite(mutfak, LOW);
        lcd.setCursor (0, 0);
        lcd.print("KOMUT ALINDI    ");
        lcd.setCursor (0, 1);
        lcd.print("MUTFAK PASIF      ");
        delay(1000);

      }
      else if (komut.indexOf("wc-ac") != -1)
      {
        digitalWrite(wc, HIGH);
        lcd.setCursor (0, 0);
        lcd.print("KOMUT ALINDI    ");
        lcd.setCursor (0, 1);
        lcd.print("WC AKTIF        ");
        delay(1000);
      }
      else if (komut.indexOf("wc-kapat") != -1)

      {
        digitalWrite(wc, LOW);
        lcd.setCursor (0, 0);
        lcd.print("KOMUT ALINDI    ");
        lcd.setCursor (0, 1);
        lcd.print("WC PASIF        ");
        delay(1000);

      }



    }
  }
}


String espGelen(long int zamanAsimi) {                          //ESP'den gelen dönütleri okur.
    lcd.begin(16, 2);
  digitalWrite(kirmizi, HIGH);
  long int baslangic = millis();
  String gelen;
  while (millis() - baslangic < zamanAsimi) {
    if (Serial.available() > 0) {
      char c = Serial.read();
      gelen += c;
   
    }
  }
  gelen.replace("AT+", "");
  return gelen;
}
String espOkuma(long int zamanAsimi) {                          //ESP'den gelen dönütleri okur.
    lcd.begin(16, 2);
  digitalWrite(kirmizi, HIGH);
  long int baslangic = millis();
  String gelen;
  while (millis() - baslangic < zamanAsimi) {
    if (Serial.available() > 0) {
      char c = Serial.read();
      gelen += c;
     a++;
   if(a>34 && a<50)
   {
    
    lcd.setCursor (b, 1);
  lcd.print(gelen);
   b++;
   }
   
     
    }
  }
  gelen.replace("AT+", "");
  return gelen;
}
void serialTemizle(long int zamanAsimi) {                        //Seri haberleşmede kullanmadığımız byteları temizler.
  long int baslangic = millis();
  while (millis() - baslangic < zamanAsimi) {
    if (Serial.available() > 0) {
      Serial.read();
    }
  }
}

Sosyal Medyada Paylaş Facebook Twitter Google+

Etiketler: , , , , , , , , , , ,
Eklenme Tarihi: 2 Mayıs 2020

Konu hakkında yorumunuzu yazın

HOŞ GELDİNİZ

Youtube kanalıma Abone Olabilirsiniz.