Arduino İle ESP8266 WiFi Modülü Kullanarak Sıcaklık ve Nem Ölçümü – ThingSpeak’e Yollama

Merhaba arkadaşlar ! Bu yazımızda sizlerle ESP8266 nedir, bu wifi modülü nasıl çalışır konularından bahsedeceğiz. Ayrıca bu modülü kullanarak Arduino ile sıcaklık ve nem ölçümü yapacağız ve verileri ThingSpeak’e yollayacağız. Hadi eğlenelim ve öğrenelim 🙂

ESP8266 Wifi Modülü Nedir? Bu Modülü Kullanarak Ne tarz Projeler Yapabilirim?

ESP8266 bir WiFi modülüdür. Bu modül vasıtası ile hem kablosuz ağlara bağlanmak hem de kablosuz erişim noktası kurmak mümkündür. Modül kendi işlemcisine sahip olduğu için üzerinde bulunan I/O (giriş/çıkış) pinleri kullanılabilmektedir. Bu da Arduino ve buna benzer herhangi bir mikrokontrolcü bulunmadan da modül ile projeler yapabileceğimiz anlamına geliyor 🙂

Peki ESP8266 Wifi modülü ile ne tarz projeler yapabiliriz? Wifi ile kablosuz iletişim kurabildiğimizden dolayı internete bağlanarak pek çok keyifli proje yapabiliriz. Bunlara örnek verecek olursak hırsız alarmı, oda sıcaklığını tweet olarak paylaşma, akıllı kahve makinesi, internet üzerinden LED kontrolü ve buna benzer yüzlerce proje…

ESP8266 Pinout
ESP8266 Pinout

Arduino Kullanmadan ESP8266 İçindeki İşlemciyi Doğrudan Kodlamak Mümkün Mü?

Yukarıda da bahsettiğimiz gibi evet, mümkün. Modülde bulunan işlemci 32-bitlik CPU’ya sahip ve üzerinde yer alan GPIO pinleri ile bağlantı kurmamız sağlanıyor. Yani Arduino olmadan da ESP8266 modülünü doğrudan programlayabiliyoruz. Farklı markaların farklı türden ESP8266 modülleri olduğundan dolayı GPIO pin sayısı değişkenlik gösterebiliyor.

Arduino İle ESP8266 Kullanarak Verilerimizi İnternet Olan Her Yerden Görecek Şekilde Ayarlamayı Öğrenelim

Gereken malzemeler:

Uygulamada kullanacağımız malzemeleri de belirledikten sonra devremizi aşağıdaki gibi kuralım:

ESP8266 Sıcaklık Nem Devresi
ESP8266 Sıcaklık Nem Devresi

Gerekli olan Arduino kodunu yazabiliriz.

Bu videodan uygulumalı bir şekilde adım adım ilerleyebilirsiniz.

//nedrinbarkinoren.com

#include                                    //SoftwareSerial kütüphanimizi ekliyoruz.
#include                                             //DHT11 sensör kütüphanemizi ekliyoruz.

String agAdi = "Robotistan";                 //Ağımızın adını buraya yazıyoruz.    
String agSifresi = "fortinet";           //Ağımızın şifresini buraya yazıyoruz.

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

String ip = "184.106.153.149";                                //Thingspeak ip adresi
float sicaklik, nem;

dht11 DHT11;

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

void setup() {  
  
  Serial.begin(9600);  //Seri port ile haberleşmemizi başlatıyoruz.
  Serial.println("Started");
  esp.begin(115200);                                          //ESP8266 ile seri haberleşmeyi başlatıyoruz.
  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ı");
  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("Ayar Yapılıyor....");
  }
  Serial.println("Client olarak ayarlandı");
  Serial.println("Aga Baglaniliyor...");
  esp.println("AT+CWJAP=\""+agAdi+"\",\""+agSifresi+"\"");    //Ağımıza bağlanıyoruz.
  while(!esp.find("OK"));                                     //Ağa bağlanana kadar bekliyoruz.
  Serial.println("Aga Baglandi.");
  delay(1000);
}
void loop() {
  esp.println("AT+CIPSTART=\"TCP\",\""+ip+"\",80");           //Thingspeak'e bağlanıyoruz.
  if(esp.find("Error")){                                      //Bağlantı hatası kontrolü yapıyoruz.
    Serial.println("AT+CIPSTART Error");
  }
  DHT11.read(dht11Pin);
  sicaklik = (float)DHT11.temperature;
  nem = (float)DHT11.humidity;
  String veri = "GET https://api.thingspeak.com/update?api_key=2F55993RWVDCTSUS";   //Thingspeak komutu. Key kısmına kendi api keyimizi yazıyoruz.                                   //Göndereceğimiz sıcaklık değişkeni
  veri += "&field1=";
  veri += String(sicaklik);
  veri += "&field2=";
  veri += String(nem);                                        //Göndereceğimiz nem değişkeni
  veri += "\r\n\r\n"; 
  esp.print("AT+CIPSEND=");                                   //ESP'ye göndereceğimiz veri uzunluğunu veriyoruz.
  esp.println(veri.length()+2);
  delay(2000);
  if(esp.find(">")){                                          //ESP8266 hazır olduğunda içindeki komutlar çalışıyor.
    esp.print(veri);                                          //Veriyi gönderiyoruz.
    Serial.println(veri);
    Serial.println("Veri gonderildi.");
    delay(1000);
  }
  Serial.println("Baglantı Kapatildi.");
  esp.println("AT+CIPCLOSE");                                //Bağlantıyı kapatıyoruz
  delay(1000);                                               //Yeni veri gönderimi için 1 dakika bekliyoruz.
}

One comment

  1. Merhaba projeyi yaptım ama thingspeak sıcaklık değerleri gözükmüyor neden olabbilir

Bir Cevap Yazın