Arkadaşlar merhabalar. Daha önceki uygulamalarımızda ESP8266 WiFi modülü kullanarak Tweet atmış, sıcaklık verisini ThingSpeak kullanarak grafik haline getirmiştik. Şimdi ise biraz daha projevari bir çalışma yapacağız. Bu çalışmada ultrasonik sensör ile bir kapının açılıp açılmadığını kontrol edeceğiz ve kapının açılması durumunda telefonumuza “Hırsız Var!” şeklinde bir bildirim yollayacağız. Bitirdiğimizde projemiz aşağıdaki videodaki gibi olacak

Bu proje için kullanılacak malzemeler:

Ultrasonik Mesafe Sensörü Nasıl Çalışır?

Ultrasonik mesafe sensörünün çalışma mantığından biraz bahsetmek gerekirse, sensörümüz ilk önce bir yüksek frekansta (40 kHz) bir ses dalgası yayıyor ve daha sonra bu ses dalgası bir cisme çarpıp geri dönünceye kadar geçen süreyi tutuyor. Ses dalgası geri döndüğünde ise, Yol = Hız x Zaman formülü ile ne kadar uzaklıkta bir cisim olduğunu buluyor. Arduino ile ultrasonik mesafe sensörü kullandığımız diğer proje ve derslere blog’umuzdan ulaşabilirsiniz.

Pushetta Nedir?

Telefona bildirim göndermek için Pushetta uygulamasını kullanacağız. Uygulamaya www.pushetta.com bu adresten üye olup kanal açmamız gerekiyor. Uygulamanın çalışabilmesi için ayrıca cep telefonumuza yüklememiz gerekmekte. Cihazınıza uygun sürümü buradan indirebilirsiniz. Siteye girdikten sonra sağ üstte Singup butonuna tıklayıp kullanıcı adı, e-posta gibi bilgileri girdikten sonra üyeliği tamamlıyoruz. Üyeliğimiz ile giriş yaptıktan sonra ekrana aşağıdaki gibi bir menü olan bir sayfa gelecek.

pushetta ana menu

Bu menüde Channels kısmına tıklayıp, Add a Channel butonu ile yeni bir kanal oluşturuyoruz. Kanal oluştururken bilmeniz gereken şey Kind seçeneğini “Public” yaparsanız siz izin vermeden de başkaları kanala abone olup bildirim alabilecek; fakat “Private” seçeneğini işaretlerseniz sadece siz izin verirseniz başkaları kanala abone olarak bildirim alabilecektir. Kanal açtıktan sonra Dashboard menüsüne geliyoruz ve aşağıdaki gibi bir kod karşımıza çıkıyor. Bu kodu kaydediyoruz, bu kodu daha sonra Arduino programımız içerisinde kullanacağız.

pushetta api kod

Kanalı açtığımıza göre telefon uygulamamıza gelip arama bölümünden açtığımız kanalın ismini girerek takip etmemiz gerekli. Kanalı private şeklinde açtıysanız takip ettikten sonra ayrıca onaylamanız gerekecektir. Takip ettikten sonra kanalımızdan gelen her bildirimi alabileceğiz.

Bu kısma kadar geldiğimize göre devremize geçebiliriz.

devre_semasi

Üstteki devre şemasına göre devreyi kurduktan sonra geriye sadece Arduino kodu kalıyor.

NOT: Devreyi kurup Arduino’ya kod yüklemeye çalıştığınızda Arduino IDE hata verecektir. Bunun nedeni, Arduino’nun RX ve TX pinlerinin o an bağlı ESP modülümüze bağlı olmasından dolayıdır. Yükleme işleminden önce RX ve TX bağlantılarını söküp, kod yüklendikten sonra takarsanız bu sorunu yaşamazsınız.

Arduino programımız:

#define ag_ismi  "Wifi Ismi"
#define ag_sifresi "Wifi Sifresi"
#define SERVER "api.pushetta.com"
String API("2828e318e8357eb7285ff2962642b132de28b1b");
String CHANNEL("HirsizAlarmi");
int trigPin = 9; //ultrasonic sensörde kullanılan tetikleme pini
int echoPin = 8; //ultrasonic sensörde kullanılan yankı pini
int sure=0;      //ultrasonic sensörde yollanan ver alınan ses dalgası arasında geçen süre
int mesafe=0;    //sensörün ölçtüğü mesafe

void setup() {
  pinMode(trigPin, OUTPUT); 
  pinMode(echoPin, INPUT);
 Serial.begin(115200);
 Serial.println("AT");
 delay(5000);
 
  if(Serial.find("OK")){         //esp modülü ile bağlantıyı kurabilmişsek modül "AT" komutuna "OK" komutu ile geri dönüş yapıyor.
     Serial.println("AT+CWMODE=1"); //esp modülümüzün WiFi modunu STA şekline getiriyoruz. Bu mod ile modülümüz başka ağlara bağlanabilecek.
     delay(2000);
     String baglantiKomutu=String("AT+CWJAP=\"")+ag_ismi+"\",\""+ag_sifresi+"\"";
    Serial.println(baglantiKomutu);
    
     delay(5000);
 }
}

void loop()
{
  digitalWrite(trigPin, LOW); //önce trig pinini LOW yapıyoruz ki daha sonra göndereceğimiz sinyali temiz bir şekilde gönderelim
  delayMicroseconds(5);       //5 mikrosaniye bekliyoruz
  digitalWrite(trigPin, HIGH); //daha sonra trig pinini HIGH yapıp bir ses dalgası yolluyoruz.
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  sure = pulseIn(echoPin, HIGH); //echo pini ile yolladığımız ses dalgasının kaç saniyede geri döndüğünü hesaplıyoruz. 
  mesafe = (sure/2) / 29.1;      // burada kullandığımız formül YOL = HIZ x ZAMAN formülü. Ses hızı sabit 331km/saat birim dönüştürmesi yapılınca yandaki formül geliyor.
    if (mesafe >= 50 || mesafe <= 0){   //mesafe 50cm den büyük, 0 cm'den küçük ise mesafeyi 0 yapmasını söylüyoruz. 
    mesafe=0;                       
  }
  if(mesafe < 20 && mesafe > 10){ //mesafe 10 ila 20 cm arasında ise uygulamaya veri yolla
    veriPushetta(CHANNEL,"HIRSIZ VAR!");
  }
  
}

//Pushetta uygulamasına veri yollama
void veriPushetta(String CHANNEL,String text) {

  Serial.println(String("AT+CIPSTART=\"TCP\",\"") + SERVER + "\",80"); //server'a bağlanma
  
  delay(3000);
 String   deneme =("POST /api/pushes/");
    deneme+= (CHANNEL);
    deneme+= ("/ HTTP/1.1");
    deneme+= ("\r\n");
    deneme+= ("Host: ");
    deneme+= (SERVER);
    deneme+= ("\r\n");
    deneme+= ("Authorization: Token ");
    deneme+= (API);
    deneme+= ("\r\n");
    deneme+= ("Content-Type: application/json");
    deneme+= ("\r\n");
    deneme+= ("Content-Length: ");
    deneme+= (text.length() + 46);
    deneme+= ("\r\n\r\n");
    deneme+= ("{ \"body\" : \"");
    deneme+= (text);
    deneme+= ("\", \"message_type\" : \"text/plain\" }");
    deneme+= ("\r\n\r\n");
    
    Serial.print("AT+CIPSEND=");
 delay(100);
 Serial.println(deneme.length());
 // Sorun oluşmadıysa veriyi gönder.
 if(Serial.find(">")){
 Serial.println(deneme);
 Serial.println("AT+CIPCLOSE=0");
 delay(100);

 }
 else{
 Serial.println("AT+CIPCLOSE=0");
 }
    
  }

Üstteki kodu Arduino’ya yüklemeden önce aşağıda yer alan bilgileri kendimizinkiler ile değiştirmemiz gerekiyor. Channel kısmına oluşturduğumuz kanalın ismini girmemiz gerekiyor.

#define ag_ismi  "Wifi Ismi"
#define ag_sifresi "Wifi Sifresi"
#define SERVER "api.pushetta.com"
String API("2828e318e8357eb7285ff2962642b132de28b1b");
String CHANNEL("HirsizAlarmi");

Eğer yollayacağımız bildirimin ne olduğunu değiştirmek istersek aşağıdaki satırda “HIRSIZ VAR!” cümlesini değiştirmemiz yeterli.

veriPushetta(CHANNEL,"HIRSIZ VAR!");

40 Yorumlar

  1. Gerçekten çok güzel olmuş , teşekkürler.
    Mobil mesaj sisteminde , GSM sheild kullanılarak daha uygun fiyata getirebilir sistem.
    ücretli sms servisleri biraz cep yakıcı olabiliyor 😀

  2. iyi günler kardeşim devreyi dediğin gibi yaptım mesaj falan gelmedi ilgili yerleride değiştirdim wifi adresini wifi şifresini kanal adını falan benim telefonuma mesaj gelmedi
    yardımcı olurmsusunuz

  3. herşeyi hallettim, ama tek bir skıntım var. kodu arduino’ya yüklerken String baglantiKomutu=String(“AT+CWJAP=\””)+ag_ismi+”\”,\””+ag_sifresi+”\””; ksımında hata veriyor. ağ_ismi yazan yere ağ ismimi, şifre yazan yerede şiferemi yazıyorum. Ama hata veriyor. bi el atarsanız… 😀

    • evet ne kadar saçma bir hata yaptığımı zor yoldan öğrendim. Burası tamam ama şimdide pushetta aracılığıyla telefonuma veri yollayamıyorum. sensörüm sorunsuz çalışıyor, wifi ismi wifi şifresi, kanal adı, apı key hepsi tamam. kod burdakinin aynısı. telefonumda bağlı açtığım kanala. ama bir türlü bildirim gelmiyor….

      • Aynı projeyi bende yapıyorum ve aynı hatayı alıyorum nasıl çözdüğünüzü söylerseneniz çok sevinirim

    • Söylediğiniz gibi Arduino UNO’nun RX ve TX sinyal seviyeleri 5V’tur. Fakat ESP8266’nın sinyal seviyesi 3.3V olduğundan arada lojik seviye dönüştürücü kullanmamız gerekir.

  4. veriPushetta(CHANNEL,”HIRSIZ VAR!”); kod satırı hatalı diyor? scope’ta tanımlı değil, burada bir yanlışlık yok mu

  5. Arduino:1.6.13 (Windows 10), Kart:”Arduino/Genuino Uno”

    D:\BD\hp\arduino karışık\arduino kodları\pushetta_ile_telefona_wifi_uzerinden_bildirim_mesafe\pushetta_ile_telefona_wifi_uzerinden_bildirim_mesafe.ino: In function ‘void setup()’:

    D:\BD\hp\arduino karışık\arduino kodları\pushetta_ile_telefona_wifi_uzerinden_bildirim_mesafe\pushetta_ile_telefona_wifi_uzerinden_bildirim_mesafe.ino:31:22: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    D:\BD\hp\arduino karışık\arduino kodları\pushetta_ile_telefona_wifi_uzerinden_bildirim_mesafe\pushetta_ile_telefona_wifi_uzerinden_bildirim_mesafe.ino: In function ‘void loop()’:

    pushetta_ile_telefona_wifi_uzerinden_bildirim_mesafe:58: error: ‘veriPushetta’ was not declared in this scope

    D:\BD\hp\arduino karışık\arduino kodları\pushetta_ile_telefona_wifi_uzerinden_bildirim_mesafe\pushetta_ile_telefona_wifi_uzerinden_bildirim_mesafe.ino: In function ‘void veriPushetta(String, String)’:

    D:\BD\hp\arduino karışık\arduino kodları\pushetta_ile_telefona_wifi_uzerinden_bildirim_mesafe\pushetta_ile_telefona_wifi_uzerinden_bildirim_mesafe.ino:101:20: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    exit status 1
    ‘veriPushetta’ was not declared in this scope

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.
    buradaki kodu biraz değiştirdim ama çalışıyordu aynı kodu şimdi tekrar atmaya çalışıyorum arduinoya bu hatayı alıyorum “veriPushetta(CHANNEL,”HIRSIZ VAR!”);” buradaki veri pushetta kısmını sildiğimde sorunsuz atıyor kodu ancak bildirim gelmiyor bu seferde
    LÜTFEN YARDIMCI OLURMUSUNUZ !

  6. bu projeyi gps modülü kullanarak konum bilgisi vermesini sağlamak için ne gibi değişiklikler yapılabilir bitirme projemde kullanıcam yardımcı olursanız sevinirim..

  7. Merhaba her şeyi yapmama rağmen telefonuma mesaj gelmiyor bir çok yöntem denedim olmadı yardımcı olur musunuz?

  8. Hocam ben bunu ardunio ya yüklüyorum mesaj da atıyor ama harici güç ile baglayınca (güç kablosu) mesaj göndermiyor anca usb ile bilgisayara baglamam gerek sebebi nedir

    • Merhabalar, nasıl hallettiniz acaba. Ne yaparsam yapayım arduino usb ile bağlıyken mesaj atmayı başaramadım. Yardımcı olabilirseniz sevinirim.

  9. Hocam bir türlü mesaj gitmiyor. Her şey doğru. Modüller sağlam . Sıkıntı nerde bulamadım bir yardım ederseniz çok mutlu olurum.

  10. Merhaba her şeyi yaptım ama serial ekran da da AT+CWMODE=3
    AT+CWJAP=”eren”,”554541123Asd”
    AT+CIPSTART=”TCP”,”api.pushetta.com”,80
    AT+CIPSEND=241
    AT+CIPCLOSE=0
    bunlar çıkıyor ama olmuyor sebebi nedir?

  11. Her şey doğru olmasına rağmen telefoba mesaj gelmiyor lütfen cevap verin nasıl çözdünüz bu sorunu 21 mayıs tarihinde bu projeyi ödev olarak teslim etmemiz gerek

  12. hocam iyi günler nodemcu esp8266 ile belirli bir internet sitesinden başka bir nodemcu esp8266 ile gönderdiğim veriyi geri alıp seri porta yazdıran bir proje üzerinde çalışıyorum ancak veri almada sorunlar yaşıyorum yardımcı olabilir misiniz?????

  13. Merhaba. Herşeyi doğru yaptık ancak mesaj alamıyoruz. Pushetta indirip kanalımızı oraya da ekledik. Sebebi ne olabilir acil yardım lütfen projeyi teslim etmemiz lazım

CEVAP VER

Please enter your comment!
Please enter your name here