Anasayfa » Arduino Wifi – İnternet – Esp8266 – Thingspeak veri çekme – Arduino projects – 71 –

Arduino Wifi – İnternet – Esp8266 – Thingspeak veri çekme – Arduino projects – 71 –

esp8266_1_71

Arduino Wifi – İnternet – Esp8266 – Thingspeak veri çekme hakkında detaylar yer almaktadır.

 

Arduinoyu internete bağlamak için kablosuz bir yöntem olan wifi ağı ile haberleştirilebilmektedir. Wifi modem sayesinde arduino kendisine bağlanan ESP8266 yada ESP01 diye anılan wifi modülünü kullanarak evimizdeki wifi modeme bağlanabiliriz. Wifi üzerinden bağlantı sağlandıktan sonra kendi algoritmanıza uygun olarak artık internet dünyasına adım atmış olacaksınız.

ESP8266 kullanılarak arduino 3 farklı yöntemle wifi ile haberleştirilebilir.

  • İlk yöntem; internet üzerinden herhangi bir web sitesinden istediğimiz verileri çekebiliriz. BU bir döviz kuru olabilir, altın fiyatı olabilir yada bir deprem bilgisi olabilir. Anlık olarak web sitesindeki verilere erişebilir bu verileri arduino ile işleyip istediğimiz gibi kullanabiliriz. Örneğin: Anlık olarak kandilli rasathanesinden deprem bilgisi alabiliriz aldığımız değerleri karşılaştırıp yüksek şiddette bir deprem olunca arduinonun buna uygun tepkiler vermesini sağlayabiliriz.
  • İkinci yöntem; arduino ile bir sensörü okuyabiliriz, yada arduinoya bağlı butonlar, tuşlar, sayaçlar vb… arduino ile kurmuş olduğumuz sistemdeki verileri bir web sitesine gönderebilir bu verilere istediğimiz zaman internet üzerinden erişebilir anlık olarak takip edebilir. Örneğin: DHT11 ısı ve nem sensörünü arduinoya bağlayabiliriz bu sensörden gelen verileri web sitesine gönderebilir ve internetin olduğu herhangi bir yerden anlık olarak ortamın ısı ve nem miktarını takip edebiliriz.
  • Üçüncü olarak; Web yada Lokal server yöntemi ile esp8266 doğrudan wifi modeme bağlayabilir internet olmasa dahi aynı modeme bağlı diğer cihazları kontrol edebiliriz. Yine lokal server üzerinden arada herhangi bir modem/wifi olmadan ESP8266 doğrudan cep telefonumuza bağlanabilir uygulama üzerinden arduinoya bağlı cihazları kontrol edebiliriz.

 

Esp8266 öncelikle güncel yazılıma sahip olmalı. Eğer güncel yazılıma sahip değilse AT komutlarını işletirken hata alabilirsiniz.

Esp8266 güncelleme için bu resmi web sayfasını ziyaret edebilirsiniz.

ESP01v0

 

Esp8266 3.3Volt ile çalışan bir modüldür. Bu modülü arduino ile kullanırken öncelikle voltaj noktasına dikkat etmelisiniz.

Bu modül arduino olmadan da kodlanarak kullanılabilen bir modüldür. GPO0 veGPO1 pinleri sayesinde arduino olmadan da kontrol edilebilmektedir.

 

Aşağıdaki şemadaki bağlantı ile ESP8266 yı arduinoya bağlayabilirsiniz. Şemadaki bağlantıları eksiksiz yapmanız sizin yararınıza olacaktır.

esp-01_sema_1

Bu bağlantı sayesinde artık ESP8266 arduinoya sorunsuz bağlanmış ve kullanılıyor olacaktır.

esp_8266-sema_2

 

ESP 8266 arduino ile doğru bir şekilde haberleşiyormu kontrol etmek için aşağıdaki kodları yükleyin ve Seri ekrandan OK cevabını almış olun.

 




//Görsel İşitsel Teknoloji Kanalı
//wwww.teknikerler.com
//Kerim Arı Youtube kanalı ESP8266 Kodları - kullanımı örnek Kodları

#include <SoftwareSerial.h>
SoftwareSerial esp(10, 11); //TX,RX pin tanımlaması yapıldı(0ve 1 Nolu pinlerden 10 ve 11 nolu pine alın

void setup()
{

  Serial.begin(9600);
  esp.begin(9600); // 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


  esp.println("AT");                                          //AT komutu ile modül kontrolünü yapıyoruz.
  Serial.println("AT Yollandı");
  while (!esp.find("OK")) {                                   //Modül hazır olana kadar bekliyoruz.
    esp.println("AT");
    Serial.println("ESP8266 Bulunamadı.");
  }
  Serial.println("OK Komutu Alındı");
 


}


void loop() {

}

 

 

Bu yazımızda ilk yöntem olan internet üzerinden herhangi bir web sitesinden istediğimiz verileri çekeceğiz. Çekmiş olduğumuz verileri arduino ile kuracağımız algoritma ile yönetebileceğiz.

 

//Görsel İşitsel Teknoloji Kanalı
//wwww.teknikerler.com
//Kerim Arı Youtube kanalı ESP8266 Kodları - kullanımı örnek Kodları


#include <SoftwareSerial.h>                                   //Gerekli kütüphaneleri ekliyoruz.
#include <Wire.h>


String agAdi = "GalaxyS10_s";                               //Kablosuz Ağ adını buraya yazıyoruz.    
String agSifresi = "12131213";                              //Ağ şifresini buraya yazıyoruz.

int rxPin = 10;                                               //ESP8266 TX pini
int txPin = 11;                                               //ESP8266 RX pini


String ip = "184.106.153.149";                                //Thingspeak sitesinin ip adresi

#define DEBUG true                                            //çalışmanın düzgün olduğunu takip etmek için kullandım


SoftwareSerial esp(rxPin, txPin);                             //Seri haberleşme için pin ayarlarını yapıyoruz.


void setup() {  
  Serial.begin(9600);                                         //Seri port haberleşmesini başlattık
  Serial.println("Başlatılıyor");
  //esp.begin(115200);                                        //ESP8266 ile seri haberleşmeyi başlatıyoruz.İlk çalıştırmada 115200 sonra 9600 yapıcaz
  esp.begin(9600);                                          //ESP8266 ile seri haberleşmeyi başlatıyoruz.
  esp.println("AT");                                          //AT komutu ile modül kontrolünü yapıyoruz.
  Serial.println("AT Gönderildi");
  while(!esp.find("OK")){                                     //Modül hazır olana kadar bekliyoruz.
    esp.println("AT");
    Serial.println("ESP8266 ile iletişim kurulamadı.");
  }
 //esp.println("AT+UART_DEF=9600,8,1,0,0");                   //ilk seferde sadece 1 kereliğine çalıştırıp baud rate değiştirdik.
  Serial.println("OK Komutu Alındı");
  esp.println("AT+CWMODE=1");                                 //ESP8266 modülünü client olarak ayarlıyoruz.
  while(!esp.find("OK")){                                     //Ayar yapılana kadar bekliyoruz.
    esp.println("AT+CWMODE=1");
    Serial.println("Modül Ayarı Yapılıyor....");
  }
  Serial.println("Modül Client olarak ayarlandı");
  Serial.println("Ağa Baglaniliyor...");
  esp.println("AT+CWJAP=\""+agAdi+"\",\""+agSifresi+"\"");    //Kablosuz Ağa bağlanıyoruz.
  while(!esp.find("OK"));                                     //Ağa bağlanana kadar bekliyoruz.
  Serial.println("Ağa Bağlanıldı.");
  delay(1000);


}


void loop() {
  esp.println("AT+CIPSTART=\"TCP\",\""+ip+"\",80");           //Thingspeak sitesine TCP ile bağlanıyoruz.
  if(esp.find("Error")){                                      //Bağlantı hatası kontrolü yapıyoruz.
    Serial.println("AT+CIPSTART Error");
  }
  
  
  Serial.println(euro());
  
  Serial.println("Baglantı Kapatildi.");
  esp.println("AT+CIPCLOSE");                                //Bağlantıyı kapatıyoruz
  delay(1000); 

  
}




String Time()
{

  String rest = "AT+CIPSEND=90";
  rest += "\r\n";
  sendData(rest, 2000, 0); //Gönderilecek Karakter Sayısı. ( "AT+CIPSEND=90" )


  String hostt = "GET /apps/thinghttp/send_request?api_key=5YFBR9H053YJW20V";
  hostt += "\r\n";
  hostt += "Host:api.thingspeak.com";
  hostt += "\r\n\r\n\r\n\r\n\r\n";
  String Time = sendData(hostt, 2000, 1);  // GET mesajı isteği ( GET /apps/thinghttp/send_request?api_key=XXXXXXXXXXXXXXXX 
                                            //               Host: Host_server_name ) 
  
  
/********************** gelen verinin içinden sadece saatle ilgili bölümü alıyoruz. ****************************/
 int baslangic=Time.indexOf(':');
 Time=Time.substring(baslangic+1,baslangic+9);

  return (Time);

  
}

////////////////////////////////////////////////////

String altin()
{

 

  String rest = "AT+CIPSEND=90";
  rest += "\r\n";
  sendData(rest, 2000, 0); //Gönderilecek Karakter Sayısı. ( "AT+CIPSEND=90" )


  String hostt = "GET /apps/thinghttp/send_request?api_key=5YFBR9H053YJW20V";
  hostt += "\r\n";
  hostt += "Host:api.thingspeak.com";
  hostt += "\r\n\r\n\r\n\r\n\r\n";
  String Altin = sendData(hostt, 2000, 1);  // GET request ( GET /apps/thinghttp/send_request?api_key=XXXXXXXXXXXXXXXX 
                                            //               Host: Host_server_name ) 
  
  
/********************** gelen verinin içinden sadece ilgili bölümü alıyoruz. ****************************/
 int baslangic=Altin.indexOf(':');
 Altin=Altin.substring(baslangic+1,baslangic+9);

  return (Altin);

  
}
/////////////////////////////////////////////////////////////////////////////////////
String covid()
{

 

  String rest = "AT+CIPSEND=90";
  rest += "\r\n";
  sendData(rest, 3000, 0); //Gönderilecek Karakter Sayısı. ( "AT+CIPSEND=90" )


  String hostt = "GET /apps/thinghttp/send_request?api_key=5YFBR9H053YJW20V";
  hostt += "\r\n";
  hostt += "Host:api.thingspeak.com";
  hostt += "\r\n\r\n\r\n\r\n\r\n";
  String Nufus = sendData(hostt, 3000, 1);  // GET request ( GET /apps/thinghttp/send_request?api_key=XXXXXXXXXXXXXXXX 
                                            //               Host: Host_server_name ) 
  
  
/********************** gelen verinin içinden sadece ilgili bölümü alıyoruz. ****************************/
 int baslangic=Nufus.indexOf(':');
 Nufus=Nufus.substring(baslangic+1,baslangic+12);

  return (Nufus);

  
}



///////////////////////////////////////////////////////////////


String deprem()
{

 

  String rest = "AT+CIPSEND=90";
  rest += "\r\n";
  sendData(rest, 3000, 0); //Gönderilecek Karakter Sayısı. ( "AT+CIPSEND=90" )


  String hostt = "GET /apps/thinghttp/send_request?api_key=294DGGSP3ULL6DGY";
  hostt += "\r\n";
  hostt += "Host:api.thingspeak.com";
  hostt += "\r\n\r\n\r\n\r\n\r\n";
  String Deprem = sendData(hostt, 3000, 1);  // GET request ( GET /apps/thinghttp/send_request?api_key=XXXXXXXXXXXXXXXX 
                                            //               Host: Host_server_name ) 
  
  
/********************** gelen verinin içinden sadece ilgili bölümü alıyoruz. ****************************/
 int baslangic_1=Deprem.indexOf(':');
 Deprem=Deprem.substring(baslangic_1+1,baslangic_1+82);

  return (Deprem);

  
}



///////////////////////////////////////////////////////////////////////////////////////


String dolar()
{

 

  String rest = "AT+CIPSEND=90";
  rest += "\r\n";
  sendData(rest, 2000, 0); //Gönderilecek Karakter Sayısı. ( "AT+CIPSEND=90" )


  String hostt = "GET /apps/thinghttp/send_request?api_key=HETXFBF5ALMBB4WV";
  hostt += "\r\n";
  hostt += "Host:api.thingspeak.com";
  hostt += "\r\n\r\n\r\n\r\n\r\n";
  String Dolar = sendData(hostt, 2000, 1);  // GET request ( GET /apps/thinghttp/send_request?api_key=XXXXXXXXXXXXXXXX 
                                            //               Host: Host_server_name ) 
  
  
/********************** gelen verinin içinden sadece ilgili bölümü alıyoruz. ****************************/
 int baslangic_2=Dolar.indexOf(':');
 Dolar=Dolar.substring(baslangic_2+1,baslangic_2+8);

  return (Dolar);

  
}




String euro()
{

 

  String rest = "AT+CIPSEND=90";
  rest += "\r\n";
  sendData(rest, 2000, 0); //Gönderilecek Karakter Sayısı. ( "AT+CIPSEND=90" )


  String hostt = "GET /apps/thinghttp/send_request?api_key=2W4SA8OYUKAM9RZK";
  hostt += "\r\n";
  hostt += "Host:api.thingspeak.com";
  hostt += "\r\n\r\n\r\n\r\n\r\n";
  String euro = sendData(hostt, 2000, 1);  // GET request ( GET /apps/thinghttp/send_request?api_key=XXXXXXXXXXXXXXXX 
                                            //               Host: Host_server_name ) 
  
  
/********************** gelen verinin içinden sadece ilgili bölümü alıyoruz. ****************************/
 int baslangic_2=euro.indexOf(':');
 euro=euro.substring(baslangic_2+1,baslangic_2+8);

  return (euro);

  
}









/////////////////////////////////////////////////////////




String sendData(String komut, const int zamangecen, boolean debug)
{
  String response = "";

  esp.print(komut); // komut satırını espnin çıkışına yazdırıyoruz

  long int Zaman = millis();

  while ( (Zaman + zamangecen) > millis())
  {
    while (esp.available())
    {

      // esp'nin bağlantısından gelen veri var ise
      char c = esp.read(); //her bir karakteri okuyup c ye yazdırıyoruz.
      response += c; // her karakteri response değişkeninin sonuna ekliyor ve alacağımız teksti oluşturuyoruz
    }
  }

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

  return response;
}
Videoyu İzlemek İçin Tıklayınız

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir