Site icon Teknikerler

Arduino – Esp8266 – Wifi üzerinden Cep Telefonu ile Kontrol – Arduino projesi

esp_8266_73

esp_8266_73

Arduino – Esp8266 – Wifi üzerinden Cep Telefonu ile Kontrol hakkında detaylara yer vereceğiz.

ESP 8266 wifi modülü ile internete bağlanabildiğimiz gibi lokal server olarak ta kullanabilmekteyiz. ESP 8266 arduino ile wifi bağlantı şeması ve ilk ayarlarının nasıl yapıldığını aşağıdaki önceki yazılarımızdan öğrenebilirsiniz.


ESP8266 BAĞLANTI ŞEMASI VE DİĞER AYARLARI İÇİN BU YAZIMIZA BAKABİLİRSİNİZ

Esp 8266 ile wifi modem aracılığıyla ayda doğrudan cep telefonu aracılığıyla haberleşme mümkündür.

Wifi modem aracılığıyla Lokal web server kurulumu yaparak arduinoyu kontrol etmek mümkündür.

Cep telefonu/tablet aracılılığıyla esp8266 ya doğrudan bağlanabilir uygulama ile arduinoyu kontrol edebilirsiniz.

Bu yazımızda Lokal web server olarak kullanma ve Remotexy ile kontrolün nasıl yapılabileceğiniz açıklayacağız.

Lokal web server olarak kullanmak için arduino kodlarınızı doğrudan kendiniz yazmanız gerekmektedir.

esp_8266-sema_3

şemadaki bağlantıları yaptıysanız artık kolama kısmına geçebiliriz.

 


//Görsel İşitsel Teknoloji Kanalı

//wwww.teknikerler.com

//Kerim Arı Youtube kanalı ESP8266 WEB Server Kodları - kullanımı örnek Kodları

#include <SoftwareSerial.h>

String agAdi="WİFİ ADINIZ";                          //Bağlanılacak modeme ait Ağ adı ve Şifresi
String agSifresi="WİFİ ŞİFRENİZ";


#define DEBUG true // Gelen cevapları yazdırmak için kullandığımız değişken

SoftwareSerial esp8266(10,11); //TX,RX pin tanımlaması yapıldı

#define kirmizi 5


void setup()
{
pinMode(kirmizi,OUTPUT);
Serial.begin(9600);
esp8266.begin(9600); // 115200 esp modülü haberleşmesi başlatıldı
//esp.println("AT+UART_DEF=9600,8,1,0,0"); // bu satır eğerki esp modülünüz -115200- ise bir defa çalıştırılır ve 9600 yapılmış olur
wifi_baglan();
}

   
void loop(){
if(esp8266.available()) //Modülün herhangi bir mesaj gönderip göndermediğini kontrol ettik
{
if(esp8266.find("+IPD,"))
{
delay(500);

int baglantiId = esp8266.read()-48; // Neden -48 çünkü ASCII kodlarında 0 48. karakterden başlıyor.


// Basit WEB sayfası Oluşturduk 
String websayfa = "HTTP/1.1 200 OK\r\n Content-Type: text/html\r\n\r\n\r\n";
websayfa += "<h1>GiT Web Server Kurulumu</h1>";
websayfa += "<head> Arduino ve ESP01 ile Led Kontrol </head>";
websayfa += "<form method=\"get\" action=\"/led-ac\">";
websayfa += "<button type=\"submit\">LED AC</button></form>";
websayfa += "<form method=\"get\" action=\"/led-kapat\">";
websayfa += "<button type=\"submit\">LED KAPAT</button></form>\r\n\r\n";

String gitSend = "AT+CIPSEND=";
gitSend += baglantiId;
gitSend += ",";
gitSend +=websayfa.length();
gitSend +="\r\n";

bilgi_Gonder(gitSend,500,DEBUG);
bilgi_Gonder(websayfa,500,DEBUG);


int pin5 = digitalRead(kirmizi); 
// Bilgi geri okuma
String gelen = "LED DURUMU :  \r\n\r\n\r\n";
if (pin5 == 1) {gelen += " ACIK";}     // Led durumunu web sayfasına AÇIK olarak yazdırdık
if (pin5 == 0) {gelen += " KAPALI";}  //Led durumunu web sayfasına KAPALI olarak yazdırdık


gitSend = "AT+CIPSEND=";
gitSend += baglantiId;
gitSend += ",";
gitSend += gelen.length();
gitSend +="\r\n";

bilgi_Gonder(gitSend,500,DEBUG);
bilgi_Gonder(gelen,500,DEBUG);

// Bağlantıyı Kapattık
String baglanti_kapat = "AT+CIPCLOSE="; 
baglanti_kapat+=baglantiId;
baglanti_kapat+="\r\n";

bilgi_Gonder(baglanti_kapat,500,DEBUG);
}
}
}

// Sunuvuya Veri gönderme işlemi
String bilgi_Gonder(String command, const int timeout, boolean debug){
String response = "";
esp8266.print(command); // Komut bilgilerini sunucuya gönderdik
long int time = millis();

while( (time+timeout) > millis())
{
while(esp8266.available())
{
// Bir yanıt, sunucuya dönen veriler gider.
char c = esp8266.read(); //Karakter karakter okuduk
response+=c;

// Sunucuya dönen bilgilerde hangi verinin olup olmadığını kontrol ettik
// Gelen "GET /led-ac" veya "GET /led-kapat"
//Arduino'daki LED i açar veya kapatır
if(response.indexOf("GET /led-ac") >0){
// Serial.print("led-ac");
digitalWrite(kirmizi,HIGH);
}
if(response.indexOf("GET /led-kapat") >0){
//Serial.print("led-kapat");
digitalWrite(kirmizi,LOW);
}
} 
}

if(debug)
{
Serial.print(response);
} 
return response;
}


////wifi bağlantısı kuruyoruz
void wifi_baglan(){
  
bilgi_Gonder("AT+RST\r\n",2000,DEBUG); //ESP8266 modülünü resetledik
String baglan = "AT+CWJAP="+agAdi+","+agSifresi+"\r\n";
bilgi_Gonder(baglan, 2000, DEBUG);  //WiFi ağına bağlanalım.
delay(5000); //Yönlendiriciye bağlanması için biraz bekledik
bilgi_Gonder("AT+CWMODE=3\r\n",1000,DEBUG);  //ESP8266 WiFi mode 1 (istasyon) çünkü evin wifi ağına bağlanacağız.
bilgi_Gonder("AT+CIFSR\r\n",1000,DEBUG); //ESP'nin IP adresini öğrendik
bilgi_Gonder("AT+CIPMUX=1\r\n",1000,DEBUG); //Birden çok bağlantıya izin verdik.
bilgi_Gonder("AT+CIPSERVER=1,80\r\n",1000,DEBUG); //80 portu üzerinden iletişim kurduk
  
  }

Detaylar için aşağıdaki linkten videoyu izleyebilirsiniz.

 

ESP8266 kullanarak cep telefonu üzerinden kontrol sağlamak için Remotexy web sitesi kullanılabilir.

remotexy_arduino

Cep telefonu üzerinden yapmış olduğumuz örnek kodlar aşağıdaki gibidir.

 


//Görsel İşitsel Teknoloji Kanalı

//wwww.teknikerler.com

//Kerim Arı Youtube kanalı ESP8266 WEB Server Kodları - kullanımı örnek Kodları

/*
   -- butonlar --
   
   This source code of graphical user interface 
   has been generated automatically by RemoteXY editor.
   To compile this code using RemoteXY library 3.1.8 or later version 
   download by link http://remotexy.com/en/library/
   To connect using RemoteXY mobile app by link http://remotexy.com/en/download/                   
     - for ANDROID 4.11.1 or later version;
     - for iOS 1.9.1 or later version;
    
   This source code is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.    
*/

//////////////////////////////////////////////
//        RemoteXY include library          //
//////////////////////////////////////////////

// RemoteXY select connection mode and include library 
#define REMOTEXY_MODE__ESP8266_SOFTSERIAL_POINT
#include <SoftwareSerial.h>

#include <RemoteXY.h>

// RemoteXY connection settings 
#define REMOTEXY_SERIAL_RX 10
#define REMOTEXY_SERIAL_TX 11
#define REMOTEXY_SERIAL_SPEED 9600
#define REMOTEXY_WIFI_SSID "GiT_ESP8266"
#define REMOTEXY_WIFI_PASSWORD "12345678"
#define REMOTEXY_SERVER_PORT 6377


// RemoteXY configurate  
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =   // 91 bytes
  { 255,4,0,0,0,84,0,16,166,1,2,0,4,9,22,11,8,175,16,31,
  65,195,135,73,75,0,75,65,80,65,76,73,0,2,0,34,9,22,11,8,
  94,94,16,83,65,82,73,0,75,65,80,65,76,73,0,10,48,23,33,15,
  15,134,117,31,65,195,135,73,75,0,31,75,65,80,65,76,73,0,1,0,
  21,60,19,19,1,31,65,99,105,108,0 };
  
// this structure defines all the variables and events of your control interface 
struct {

    // input variables
  uint8_t switch_1; // =1 if switch ON and =0 if OFF 
  uint8_t switch_2; // =1 if switch ON and =0 if OFF 
  uint8_t pushSwitch_1; // =1 if state is ON, else =0 
  uint8_t button_1; // =1 if button pressed, else =0 

    // other variable
  uint8_t connect_flag;  // =1 if wire connected, else =0 

} RemoteXY;
#pragma pack(pop)

/////////////////////////////////////////////
//           END RemoteXY include          //
/////////////////////////////////////////////

#define PIN_SWITCH_1 2
#define PIN_SWITCH_2 3
#define PIN_PUSHSWITCH_1 4
#define PIN_BUTTON_1 5


void setup() 
{
  RemoteXY_Init (); 
  
  pinMode (PIN_SWITCH_1, OUTPUT);
  pinMode (PIN_SWITCH_2, OUTPUT);
  pinMode (PIN_PUSHSWITCH_1, OUTPUT);
  pinMode (PIN_BUTTON_1, OUTPUT);
  
  // TODO you setup code
  
}

void loop() 
{ 
  RemoteXY_Handler ();
  
  digitalWrite(PIN_SWITCH_1, (RemoteXY.switch_1==0)?LOW:HIGH);
  digitalWrite(PIN_SWITCH_2, (RemoteXY.switch_2==0)?LOW:HIGH);
  digitalWrite(PIN_PUSHSWITCH_1, (RemoteXY.pushSwitch_1==0)?LOW:HIGH);
  digitalWrite(PIN_BUTTON_1, (RemoteXY.button_1==0)?LOW:HIGH);
  
  // TODO you loop code
  // use the RemoteXY structure for data transfer
  // do not call delay() 


}
Videoyu İzlemek İçin Tıklayınız
Exit mobile version