Multicopter SMS ile Konum Bilgilerini Öğrenme

Katılım
26 May 2017
Mesajlar
120
Tepkime puanı
50
Yaş
39
Konum
Tekirdağ
İlgi Alanı
Multikopter
Bu VIDEOYU görmek için izniniz yok. Giriş yap veya üye ol

Şimdilik modül test videosunu ekledim. Kod yazması yeni bitti.

Bağlantı Resmi
You must be registered for see images attach


Arduino'ya yüklenecek KOD:


C:
String gpsHamKod, islenmemis, enlem,boylam, koordinat, ns_secim, ew_secim, Arsp, Grsp;
char *ptr;
String googlelink = "https://www.google.com/maps?q=";

#include <SoftwareSerial.h>
SoftwareSerial gsm(10, 11);
HardwareSerial & gps = Serial;

void setup(){
gps.begin(9600);
gsm.begin(9600);
gsm.println("AT");
delay(200);
gsm.println("AT+CMGF=1");
delay(500);
gsm.println("AT+CMGD=1,4");
delay(500);
}

void loop() {
KoordinatAl();
  if(gsm.available()){
    Grsp = gsm.readString();
    Grsp.replace("\r\r\r\n","\r\n");
    Grsp.replace("\r\n\r\n","\r\n");
    Grsp.replace("OK\r\n","OK");
    Grsp.replace("\r\n","->");
    if (Grsp.indexOf("->+CMTI: \"SM\",")==0){
     int Mno = YeniMesajVar(Grsp);
     gsm.print("AT+CMGR=");
     gsm.print(Mno);
     gsm.print("\r\n");
     String okunan = Grsp = gsm.readString();
     okunan.replace("\r\r\r\n","\r\n");
     okunan.replace("\r\n\r\n","\r\n");
     okunan.replace("OK\r\n","OK");
     okunan.replace("\r\n","->");
     if (okunan.indexOf("->+CMGR: \"REC UNREAD\",\"")>=0){
      okunan.replace("\",\"","->");
      okunan.replace("->+CMGR: \"REC UNREAD","");
      int b1 = okunan.indexOf("->")+2;
      String telnoal = okunan.substring(b1);
      int b2 = telnoal.indexOf("->");
      String TelNo = telnoal.substring(2,b2);
      b1 = telnoal.indexOf("\"->")+3;
      b2 = telnoal.indexOf("->OK");
      String GelenMesaj = telnoal.substring(b1,b2);
      GelenMesaj.trim();
      if(GelenMesaj.indexOf("KONUMAT")>=0){
        String konumm = googlelink+koordinat;
        SmsGonder(TelNo,konumm);
        delay(3000);
      }
     }
    }
  }
}

void KoordinatAl(){
gpsHamKod= gps.readStringUntil('$');
islenmemis = gpsHamKod;
if(!gpsHamKod.indexOf("GNGGA")){
  gpsHamKod.replace("\r\n","");
  gpsHamKod.replace(",,",",BOSDATA,");
  int str_len = gpsHamKod.length() + 1;
  char char_array[str_len];
  gpsHamKod.toCharArray(char_array, str_len);
  ptr = strtok (char_array,",");
  ptr = strtok (NULL, ",");
  ptr = strtok (NULL, ",");
  enlem= String(ptr);
  ptr = strtok (NULL, ",");
  ns_secim = String(ptr);
  ptr = strtok (NULL, ",");
  boylam= String(ptr);
  ptr = strtok (NULL, ",");
  ew_secim=String(ptr);
  enlem = Hesapla(enlem);
  boylam= Hesapla(boylam);
  koordinat = enlem + "+" + boylam;
}
}

String Hesapla(String gelen){
  char *ptr2;
  int str_len2 = gelen.length() + 1;
  char char_array2[str_len2];
  gelen.toCharArray(char_array2, str_len2);
  ptr2 = strtok (char_array2,".");
  int say1 = atoi(ptr2);
  ptr2 = strtok (NULL, ".");
  float say2 = atof(ptr2);
  int say3 = (say1 / 100)*100;
  say1 = say1-say3;
  float say4 = (say2 / 100000);
  float sonuc = ((say1+say4)/60.0)+(say3/100);
  char buffers[15];
  String tem = dtostrf(sonuc, 5, 6, buffers);
  return tem;
}

int YeniMesajVar(String mesaj){
int m1 = mesaj.indexOf("->+CMTI: \"SM\",");
int m2 = mesaj.lastIndexOf("->");
int MesajNo = mesaj.substring((m1+14),m2).toInt();
return MesajNo;
}

void SmsGonder(String telnum,String smesaj){
gsm.print(F("AT+CMGS=\""));
gsm.print(telnum);
gsm.print(F("\"\r"));
gsm.print (smesaj);
gsm.write(26);
delay(500);
}
 
Son düzenleme: