Arduino ile ESP8266 Wifi Modülü Kullanarak ThingSpeak Sitesine Sıcaklık ve Nem (DHT11) Bilgileri Gönderme (Arduino Dersleri, 33) Featured

Rate this item
(0 votes)

Arduino ile ESP8266 Wifi Modülü Kullanarak ThingSpeak Sitesine Sıcaklık ve Nem (DHT11) Bilgileri Gönderme

Bu dersimizde Arduino ile ESP8266 Wifi Modülü ile ThingSpeak Sitesine veri göndermeyle ilgili temel bir uygulama yapacağız. Sıcaklık ve nem sensörü olarak DHT11 sensörünü kullanacağız.

Yazacağımız kodlarla Arduino ile ESP8266 Modülü kullanarak ortamın sıcaklık ve  nem değerlerini ThingkSpeak sitesine göndereceğiz.

Arduino ile ESP8266 modülünü kullanarak ortamdaki nesnelerin değerlerini internet üzerinden okuyacağız, ThingSpeak sitesinden alacağımız bir api ile bunu internet sitesine eş zamanlı olarak göndereceğiz. Belirli saniyelerle bu veriler düzenli olarak sitede yer alacak.
Bir sonraki uygulamamızda ESP8266 modülünü kullanarak internet üzerinden ortamda bulunan lambaları açık kapatacağız, bunun için remotexy uygulamasını kullanacağız.

Gerekli Malzemeler

1 adet Arduino Uno R3
1 adet breadboard
1 adet ESP8266 Wifi Modülü
1 adet DHT11 Sıcaklık ve Nem Sensörü
11 adet jumper kablo (6EE, 5DE)


ESP8266 Wifi modülü sensör modülü nedir?

ESP8266, yeni bağlantılı dünya ihtiyaçları için tasarlanmış oldukça entegre bir çiptir. Uygulamayı barındırabilmesine veya tüm Wi-Fi ağ işlevlerini başka bir uygulama işlemcisinden  önlendirebilmesine olanak tanıyan eksiksiz ve kendine yeten bir Wi-Fi ağ çözümü sunar. (direnc.net)
Arduino ile birlikte kullanıldığı gibi tek başına da programlanabilir bir modüldür.

 

ESP8266 Wifi modülü Devresi

NOT: ESP8266 modülü 3.3 Volt ile çalışmaktadır. (Bir çok kaynakta 3.3V ile kullanırken de 1K ve 2Klık dirençler kullanarak voltaj bölücü devre kullanılmıştır. Biz de uygulamalarımızda 1K ve 2Klık dirençler kullanarak devreyi oluşturduk.) Ancak ESP8266 modülü bağlantı ve veri gönderme sırasında Arduino'nun verebileceği akımdan fazlasına ihtiyaç duyabilmektedir. Bu durumda ESP8266'yı verimli kullanabilmek için harici bir 3.3V ile beslemek en doğru kullanım şekli olacaktır.    

 

Devreyi tamamladıktan sonra kodlara geçmeden önce https://thingspeak.com/ a ücretsiz üye olmanız ve bir kanal oluşturmanız gerekmektedir. Üye olduktan hemen sonra aktivasyon postası alacaksınız ve giriş yaptığınızda yeni bir kanal oluşturabileceksiniz. Kanala bir isim verdikten sonra iki tane field alanını aktifleştiriyoruz. Nem ve Sıcaklık değeri alacağımız için iki tanesini aktifleştiriyoruz, daha fazla veri göndereceksek 8'e kadar alanı aktifleştirebilir ve kullanabiliriz.
Daha sonra oluşturulan kanala tıkladığınızda API Key kısmına geliyoruz ve biz bu alana sürekli veri göndereceğimiz için Write API Key kısmında bulunan key kodunu alıyoruz.  Bu kodu arduino programımızda API KEY kısmında yer alan satıra yapıştırıyoruz.

 

ESP8266 Wifi modülü arduino kodları

NOT: Kodların sağlıklı çalışması için bulunduğunuz ortamdaki wifi adı ve şifresi ve thingspeak.com'da oluşturduğunuz kanalın Api Key bilgilerini arduino programda belirtilen yerlere yazmanız gerekmektedir. Aksi halde program çalışmayacaktır.

#include <SoftwareSerial.h>                                   //SoftwareSerial kütüphanimizi ekliyoruz.
#include <DHT.h>                                          //DHT11 sensör kütüphanemizi ekliyoruz.

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

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


#define DHTPIN 2  //dhtyi bağladığımız pini yazdık
#define DHTTYPE DHT11  //dhtp sensör tipini yazdık
DHT sensorumuz(DHTPIN, DHTTYPE); //sensorumuz isimli bir nesne oluşturduk


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




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

void setup() {  
  sensorumuz.begin();
  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");
  }

  float sicaklik = sensorumuz.readTemperature();
  float nem = sensorumuz.readHumidity();
  String veri = "GET https://api.thingspeak.com/update?api_key=xxxxxxxxxxxxxx";    //Thingspeak komutu. xxxxx yerine 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(60000);                                               //Yeni veri gönderimi için 1 dakika bekliyoruz.
}



 

https://www.youtube.com/watch?v=6B6WFahLkMo
NOT: robotistan.com sitesinden İlge İpek'in bu konuyu anlatmış olduğu videoda kullanmış olduğu kodlardır. Sadece DHT11 kütüphanesi yerine dht kütüphanesi kullanılıp kodlarda ufak tefek değişiklikler yapılmıştır.

CTRL Bizde

Kendi halinde bir kaç kişiyiz,. Karşılaştığımız sorunları çözmek için bazen "çok zaman" harcadığımızı fark edip

devamı

Yeni Eklenenler