#include #include #include static const uint32_t GPSBaud = 9600; TinyGPSPlus gps; SoftwareSerial kapadokya(10,11); #define sGPS Serial char mesaj[] = " "; #define buzzer 12 double enlemMesaj; double boylamMesaj; String konum; String kapadokyaGelen=""; char konum2[255]; float evUzaklik=30; bool mesajDurum=true; bool aramaDurum=true; #define numara "+905528623364" #define numara2 "+905308316683" String mesaj1="Cocuk Evden Ayrildi!!"; const unsigned eepromAdres = 5; unsigned long sonZaman=0; int konumKayitIndex=0; float konumKayitTablosu[] = {}; const unsigned konumKayitTablosuSize = sizeof konumKayitTablosu / sizeof konumKayitTablosu[0]; void setup() { kapadokya.begin(9600); sGPS.begin(GPSBaud); vw_set_ptt_inverted(true); vw_set_rx_pin(2); vw_set_ptt_pin(7); vw_setup(1000); vw_rx_start(); pinMode(buzzer,OUTPUT); kapadokya.println("ATS0=1"); delay(2000); kapadokya.println("AT+DDET=1"); attachInterrupt(0,kontrol,CHANGE); } void loop() { static const double ev_enlem = 37.088882, ev_boylam = 37.422256; smartDelay(1000); uint8_t uydu=gps.satellites.value(); Serial.println(); Serial.print("Uydu: ");Serial.println(uydu); float enlem,boylam; unsigned long enboyHesap; enlem=gps.location.lat(); boylam=gps.location.lng(); enboyHesap=gps.location.age(); Serial.print("Enlem: ");Serial.println(enlem,6); Serial.print("Boylam: ");Serial.println(boylam,6); Serial.print("EnboyHesap: ");Serial.println(enboyHesap); float denizSeviyesi=gps.altitude.meters(); Serial.print("Deniz Seviyesi: ");Serial.println(denizSeviyesi); float hiz=gps.speed.kmph(); Serial.print("Hız: ");Serial.println(hiz); int yon=gps.course.deg(); Serial.print("Yön: ");Serial.println(yon); int yil=gps.date.year(); Serial.print("Yıl: ");Serial.println(yil); int ay=gps.date.month(); Serial.print("Ay: ");Serial.println(ay); int gun=gps.date.day(); Serial.print("Gün: ");Serial.println(gun); int saat=gps.time.hour(); Serial.print("Saat: ");Serial.println(saat); int dakika=gps.time.minute(); Serial.print("Dakika: ");Serial.println(dakika); int saniye=gps.time.second(); Serial.print("Saniye: ");Serial.println(saniye); /*evUzaklik = (float)TinyGPSPlus::distanceBetween( gps.location.lat(), gps.location.lng(), ev_enlem, ev_boylam)/1000; evUzaklik=evUzaklik*1000; Serial.print("Eve Uzaklik: ");Serial.println(evUzaklik);*/ if (millis() > 5000 && gps.charsProcessed() < 10){ Serial.println(F("No GPS data received: check wiring")); } enlemMesaj = enlem; boylamMesaj = boylam; konum = "www.google.com.tr/maps/place/" + String(enlemMesaj, 6) + "," + String(boylamMesaj, 6); konum.toCharArray(konum2, 100); delay(1000); if(evdeMi()==true && aramaDurum==true){ if(millis()-sonZaman>60000){ sonZaman=millis(); aramaYap(numara); delay(10000); } } if(evdeMi()==true && mesajDurum==true){ smsYolla(numara,mesaj1+konum2); delay(1000); smsYolla(numara2,mesaj1+konum2); delay(2000); mesajDurum=false; } smsOkuma(); } static void smartDelay(unsigned long ms) { unsigned long start = millis(); do { while (sGPS.available()) gps.encode(sGPS.read()); } while (millis() - start < ms); } void kontrol(){ uint8_t buf[VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN; if (vw_get_message(buf, &buflen)) { mesaj[0] = (char) buf[0]; Serial.println(mesaj[0]); if (mesaj[0] == '1') { Serial.println("Balkona yakın!!!"); digitalWrite(buzzer,HIGH); delay(50); } else if(mesaj[0]=='0') { Serial.println("Balkona uzak..."); digitalWrite(buzzer,LOW); delay(50); } delay(100); } } void smsYolla(String telefon,String mesaj){ kapadokya.print("AT+CMGF=1"); kapadokya.print ("\r"); kapadokyaGelen=serialOku(); kapadokya.print("AT+CMGS=\""+telefon+"\""); kapadokya.print ("\r"); kapadokyaGelen=serialOku(); kapadokya.print(mesaj); kapadokya.print ("\r"); kapadokya.write(char(26)); kapadokyaGelen=serialOku(); if (((kapadokyaGelen.indexOf("CMGS") ) != -1 ) ){ Serial.println("Mesaj Gönderildi."); }else{ Serial.println("Mesaj Gönderilmedi!!!"); } } String serialOku(){ int zaman=0; while(!kapadokya.available() && zaman<12000){ delay(13); zaman++; Serial.println("burdaaa"); } if(kapadokya.available()){ return kapadokya.readString(); } } bool evdeMi(){ if(evUzaklik>20){ return true; }else{ mesajDurum=true; aramaDurum=true; return false; } } void aramaYap(char* telefon){ kapadokya.print("ATD"); kapadokya.print(telefon); kapadokya.print(";\r\n"); } void smsOkuma(){ kapadokya.println("AT+CMGF=1"); kapadokyaGelen=serialOku(); kapadokya.println("AT+CMGR=1"); kapadokyaGelen=serialOku(); if(kapadokyaGelen.indexOf("CMGR:")!=-1){ kapadokyaGelen.toUpperCase(); String gelenNumara=kapadokyaGelen.substring(kapadokyaGelen.indexOf("UNREAD")+9,46); if(gelenNumara==numara || gelenNumara==numara2){ if(kapadokyaGelen.indexOf("KONUM")!=-1){ Serial.println("mesaj gonderebilirsin."); smsSil(); smsYolla(gelenNumara,konum2); } else if(kapadokyaGelen.indexOf("NTK")!=-1){ smsSil(); smsYolla(gelenNumara,"Arama Durduruldu"); aramaDurum=false; } else{ smsSil(); smsYolla(gelenNumara,"Tanimsiz SMS"); } } /*else{ Serial.println("numara tanımlı değil!!!"); smsYolla(numara,"Başka numara konum ogrenmek istiyor: "+gelenNumara); smsYolla(numara2,"Başka numara konum ogrenmek istiyor: "+gelenNumara); smsSil(); }*/ } } bool smsSil(){ kapadokya.println("AT+CMGDA=\"DEL ALL\""); if(serialOku().indexOf("OK")!=-1) return true; else return false; }