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 🙂
Bir önceki yazımızda RFID modülünden bahsetmiştik ! >>> RC522 ile Kapı Kilidi yapalım !
Başlamadan önce ESP8266 modülüyle alakalı daha fazla bilgi edinmek istiyorsanız bu yazımızı okuduktan sonra ESP8266 WiFi modülü kullanarak yaptığımız adım adım dersleri incelemeyi unutmayın.
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 🙂
Sitemizdeki tüm Wifi modüllerine buradan ulaşabilirsin !
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… Nasıl mı? Biz bunların hepsini yaptık ! Blog sayfamızda inceleyebilirsin 🙂
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. ESP8266 içindeki işlemciyi doğrudan kodlamak ile ilgili detaylı bilgili bunun için hazırladığımız blog yazımızda bulabilirsiniz >>> NodeMCU’ya giriş ve Lua dilinde kodlama
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:
Gerekli olan Arduino kodunu yazabiliriz.
#include <softwareserial.h> //SoftwareSerial kütüphanimizi ekliyoruz. #include <dht11.h> //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. }
Delay’ları en aza indirmek için ne yapmalıyız… arduino kartımda iki farklı sensörü çalıştırmak istiyorum da
Programi aynı kodlarla (ağ adı, ağ şifresi, thinkspeak api kodunu bana ait bilgilerle değiştirdim tabiki) kopyala yapıştır olarak denedim ve sağlıklı olarak çalıştığını gördüm. Programı deneyecek arkadaşlara not düşmek istedim.
Konuyu yazan arkadaşlarada teşekkür ederim.
LİNK BOZUK
buna ldr ekleyebilirmiyiz lux u olçmek için
arkadaşlar dht11 kütüphanesi linkte yok. Kütüphanesi inik olan arkadaşlar varsa e mail üzerinden gönderme şansı var mı? Üniversite final ödevim olduğundan hemen geri dönüş yapabilirseniz sevinirim.
arduinonun kütüphane yöneticisinde aratırsan rahatlıkla bulup kurabilirsin.
Merhabalar kullanmış olduğunuz kondansatörün özelliklerinden bahsetmemişsiniz acaba büyüklüğü nedir?
16V 10uF kondansatör kullanabilirsiniz.
api_keyi nasıl alabilirim peki ??
Merhaba ben muhammet ali ve kullanılan dht.11 dosyasının linki=https://github.com/Robotistan/YouTube-DIY-Projeler/blob/master/Arduino%20Dersleri/Ders-22%20ESP8266%20ThinkSpeak%20Kullanimi/dht11.rar
Buradan dowland tuşuna basarak indirebilirsiniz. Yardım edebildiysem ne mutlu 😊
arkadaşlar yanlış yazmışım böyle olacaktı= https://github.com/Robotistan/YouTube-DIY-Projeler/blob/master/Arduino%20Dersleri/Ders-22%20ESP8266%20ThinkSpeak%20Kullanimi/dht11.rar
en başından delay time tanımlaman gerek biraz araştır öğrenirsin