Arduino ile ESP8266 Kullanımı ve İnternet Erişimi-3 (Web server kurulumu)

Herkese merhabalar. Bu çalışma serisinin üçüncü ve son uygulamasında sizlere ESP8266 modüllerini kullanarak basit bir web server oluşturmayı ve kablosuz ağ üzerinden bu modüle erişerek internet erişimi olan cihazlarımız vasıtasıyla bir aydınlatmayı nasıl açıp kapatabileceğimiz göstermeye çalışacağım. Yani basitçe bir akıllı ev uygulaması gerçekleştirmiş olacağım.

Bu uygulama serisi sonunda IOT-Internet of Things, yani nesnelerin interneti olarak da adlandırılan birbiri ile haberleşen akıllı cihazlara yönelik uygulamalara daha aşina olacağımızı hatta kendi akıllı ev sistemimizi bile kurabilecek hale geleceğimizi düşünüyorum. Umarım içeriği beğenmişsinizdir, youtube kanalıma abone olarak bana destek olabilirsiniz. Teşekkürler...


Gerekli Malzemeler:
1 adet arduino kontrol kartı
1 adet ESP01 modül
1 adet 5vDC röle
1 adet led
1 adet 220 ohm direnç
3 adet 1kOhm direnç
1 adet 16v 100uf kapasitör

Devre Şeması:






Arduino Kodu:
//ESP01 kullanarak Arduino ile Basit Webserver Kurulumu //Akıllı Ev Uygulamaları String agAdi="*****"; //Bağlanılacak modeme ait Ağ adı ve Şifresi String agSifresi="****"; #include <SoftwareSerial.h> //Software Serial kütüphanesi. 10,11 Rx, Tx olarak kullanmak için. SoftwareSerial esp(10, 11); boolean GOSTER= true; // Gelen cevapları yazdırmak için kullandığımız mantıksal değişken void setup() { Serial.begin(9600); //Seri port ile haberleşme başlatılıyor. Serial.println("Bağlantı Başlatılıyor"); esp.begin(9600); //ESP8266 ile seri haberleşme başlatılıyor. wifibaslat(); //Bu fonksiyon ile bağlantıyı yapıcaz. pinMode(12,OUTPUT); //12 ve 13üncü pinleri çıkış olarak tanımladık digitalWrite(12,LOW); pinMode(13,OUTPUT); digitalWrite(13,LOW); } void loop() { if (esp.available() > 0) { if(esp.find("+IPD,")) { delay(1000); // Seri bağlantıdan gelen tüm verinin tamamlanması için bekliyoruz. // bağlanan cihaz için bir bağlantı numarası yaratıyoruz ki bağlantıyı kapatırken gerekecek int connectionId = esp.read()-48; // Neden -48 çünkü ASCII kodlarında 0 48. karakterden başlıyor. esp.find("pin="); // gelen mesaj içerisinde imleci "pin=" ifadesini bulduğu yere konumlandırıyoruz int pinNumber = (esp.read()-48)*10; // Gelen pin numarası 2 haneli olduğundan ilk haneyi alıp 10 ile çarparsak 10lar basamağını almış oluruz. pinNumber += (esp.read()-48); // birler basamağını alıyoruz ve onlar basamağı ile birleştiriyoruz. boolean leddurum=digitalRead(pinNumber); //o anda 12 ve 13 pinin durumu LOW mu HIGH mı ona bakıyoruz digitalWrite(pinNumber, !leddurum); // bir üst satırdaki bilgiye göre tersini yazıyoruz //Bu kısımda oluşturacağımız server için basit bir HTML sayfası yaratıyoruz. Bağlanan cihazlar bu sayfayı görecek. String metin = "<head> Arduino ve ESP01 ile WebServer Kurulumu </head>"; metin += "<br><a href=?pin=12><button type='button'>12</button></a>"; //2 adet buton tanımladık. Linkleri pin=12 ve 13 bilgisini gönderiyor. metin += "<br><a href=?pin=13><button type='button'>13</button></a>"; String cipsend = "AT+CIPSEND="; //bu komut TCP get metodu ile bilgi göndermek için cipsend += connectionId; cipsend += ","; cipsend += metin.length(); //gönderilecek mesajın uzunluğunu almamız gerek cipsend += "\r\n"; sendData(cipsend,1000,GOSTER); //sendData fonksiyonu ile verileri ESP'ye gönderip cevabını Serial ekrana yazdırıyoruz. //önce bağlantı komutunu gönderdik, sonrasında HTML kodlarını ilettik sendData(metin,2000,GOSTER); // Bağlantıyı kapatmamız gerekiyor. String closeCommand = "AT+CIPCLOSE="; closeCommand+=connectionId; // ilgili bağlantıyı kapatacağız closeCommand+="\r\n"; sendData(closeCommand,1000,GOSTER); // kapatma komutunu gönderdik. } } } String sendData (String komut, const int timeout, boolean GOSTER) { String cevap = ""; //cevapkarı tutacağımız değişken. esp.print(komut); //arduinıodan ESPye komut gönderiyoruz. long int time = millis(); //şu anki zamanı aldık. while( (time+timeout) > millis()) //timeoutta belirtilen kadar bekliyoruz. { while(esp.available()>0) //ESPden gelen veri var mı? { char c = esp.read(); //varsa karakter karakter oku ve C değişkenine al. cevap+=c; //her alınan karakteri cevaba ekle. } } if(GOSTER) //GOSTER true ise cevapları serial ekrana yazdır. { Serial.print(cevap); } return cevap; //dönen cevabı yazdır. } void wifibaslat() { sendData("AT+RST\r\n", 2000, GOSTER); //ESP8266 modülü önce bir resetleyelim. //delay(1000); String baglan ="AT+CWJAP="+agAdi+","+agSifresi+"\r\n"; sendData(baglan, 2000, GOSTER); //WiFi ağına bağlanalım. delay (3000); sendData("AT+CWMODE=1\r\n", 1500, GOSTER); //ESP8266 WiFi mode 1 olarak yani istasyon olacak çünkü evin wifi ağına bağlanacağız. //eğer ESP'ye bağlanacak olsaydık o zaman mode 2 seçecektik. Ancak bu durumda tüm cihazları ev ağından koparıp esp ağına bağlamak gerekir ki bu çok kullanışlı olmaz. delay (1500); sendData("AT+CIFSR\r\n", 1500, GOSTER); //ESP'nin IP adresini öğreniyoruz. delay (1500); sendData("AT+CIPMUX=1\r\n", 1500, GOSTER); //Birden çok bağlantıya izin verdik. delay (1500); sendData("AT+CIPSERVER=1,80\r\n", 1500, GOSTER); //80 portu üzerinden iletişim kurulacak. }

Yorumlar

  1. abi html kodları nerede

    YanıtlaSil
    Yanıtlar
    1. Html kodları arduino kodunun içerisinde, esp8266 sunucu modunda olduğu için web sayfasını da kendisi üretiyor, yani ip adresine girdiğinde açılan html sayfası arduino kodlarında yazılı bulunmaktadır.

      Sil

Yorum Gönder

Bu blogdaki popüler yayınlar

QTR-8A Kızılötesi Çizgi Sensörü Kullanımı ve Basit PID Çizgi İzleyen Robot Yapımı

A4988 Step Motor Sürücü Kartı ile NEMA Step Motor Kullanımı

Arduino ile ESP8266 Kullanımı ve İnternet Erişimi Serisi -1 (İnternet Üzerinden Veri Çekme)