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

Herkese merhabalar. Bu yeni video serisinde sizlere ESP8266 modüllerini kullanarak arduino ile internete nasıl erişebileceğimizi ve internet üzerinden belirli verileri çekerek nasıl kullanabileceğimizi, topladığımız sensör verilerini internet üzerine nasıl aktarabileceğimizi ve web server üzerinden kontrol sağlayarak wifi'ye bağlı nesneleri nasıl kullanabileceğimizi göstermeye çalışacağım. Video serisinin ilk videosunda ThingSpeak web sitesini kullanarak herhangi bir internet sitesindeki canlı ve değişken bir veriyi nasıl yakalayıp arduinoya alabileceğimizi irdelemek istedim. Aldığımız bu veriyi projelerimizde çok değişik amaçlar ile kullanabilir ve lokal olarak oluşturduğumuz sistemleri internetle konuşur hale getirebiliriz.

Bir sonraki videoda ise senörlerden topladığımız verileri internet ortamında depolamayı ve farklı kaynaklara erişilebilir hale getirmeyi göstermeye çalışacağı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, kanalıma abone olarak bana destek olabilirsiniz. Teşekkürler...



Gerekli malzemeler:
  • 1 adet arduino kontrol kartı
  • 1 adet ESP8266 ESP-01 modüle
  • 1 adet 16v 100uf kondansatör
  • 3 adet 1K Ohm direnç
  • 1 adet I2C kontrollü 2x16 LCD ekran


Devre şeması:



Arduino Kodu:
//MUCİT PİLOT 2020 //ESP8266 kullanımı ve internetten veri çekme #include <SoftwareSerial.h> //Gerekli kütüphaneleri ekliyoruz. #include <Wire.h> #include <LiquidCrystal_I2C.h> String agAdi = "*************"; //Kablosuz Ağ adını buraya yazıyoruz. String agSifresi = "********"; //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. LiquidCrystal_I2C lcd(0x27, 16, 2); //(ekranın adresi, sütun sayısı, satır sayısı) void setup() { lcd.begin(); //LCD ekranı başlatıyoruz 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); lcd.clear(); //LCD ekranı temizledik lcd.home(); //Kursörü başa aldık } 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"); } lcd.home(); lcd.print("ALTIN CANLI GR"); lcd.setCursor(4, 1); lcd.print(altin()); 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=DOS4J9JD9IR1CADD"; 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=RHLEEPLGG17UK8TJ"; 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=GF15NKHSJR0PZOPJ"; 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+11); return (Nufus); } 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; }

Yorumlar

  1. Merhabalar Acaba Saat çekmek için kodda nasıl bir düzenleme yapmam gerekir

    YanıtlaSil
  2. Emeginiz için tesekkur ederim

    YanıtlaSil
  3. Hocam merhaba kodu yüklediğimde

    C:\Users\90535\Desktop\sketch_mar16a\sketch_mar16a.ino: In function 'String altin()':

    sketch_mar16a:77:3: error: 'sendData' was not declared in this scope

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

    ^~~~~~~~

    exit status 1

    'sendData' was not declared in this scope

    şeklinde bir hata alıyorum bu durumu nasıl çözebilirim

    YanıtlaSil
  4. Öncelikle merhaba devreyi kurup kodları yükledim lcd ekranıma sizin videodaki gibi değer gelmiyor onun yerine "api."ile başlayan cümle geliyor bunun nedeni nedir ve bu sorunu nasıl çözebilirim acaba ?

    YanıtlaSil

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ı