Paso 5: programa
tiene unas líneas turcas, algunas de ellasGPS VERISI HAZIR DEGIL === >>> datos GPS no están listos
KoordinatBilgisiGonder === > SendGPSData
ENLEM === >>> latitud
BOYLAM === >>> longitud
HIZ === >> velocidad
========================================== CODE===================================================
#include
#include
#include
TinyGPS gps;
SoftwareSerial gsmSerial(10,11);
SoftwareSerial gsmSerial(3,2);
SoftwareSerial ss(5,6);
Cadena inData = "";
Boolean inputAvailable = false;
String recievedNumber = "";
String gpsMesajIcerik = "";
int callback_counter = 0;
int indexofMsgStr = 0;
flotador, flon, fkmph;
edad largo sin firmar;
char okunanKarakter = ' *';
Float flat_store = 0.0;
Float flon_store = 0.0;
zumbador de int = 7;
void setup()
{
pinMode (zumbador, salida);
Serial.Begin(9600);
SS.Begin(9600);
gsmSerial.begin(9600);
Timer1.Initialize(8388480); saniye yaklasik 8.3
Timer1.attachInterrupt(callback);
Delay(2000);
gsmSerial.listen();
Serial.println("Basla");
Delay(1000);
gsmSerial.listen();
fastbuzzer();
}
void loop() / / ejecuta una y otra vez
{
while(gsmSerial.Available())
{
inputAvailable = true;
okunanKarakter = (char) gsmSerial.read();
inData += okunanKarakter;
Si (okunanKarakter == ',') {}
rotura;
}
}
if(inputAvailable)
{
inputAvailable = false;
processData();
inData = "";
}
}
void printGPSDATA()
{
GPS.f_get_position (plano y flon & edad);
Si (plano > 0.0)
flat_store = plana;
Si (flon > 0.0)
flon_store = flon;
fkmph = gps.f_speed_kmph(); velocidad en km/hr
}
void TAKEGPSDATA() {}
Serial.println ("---> TAKEGPSDATA");
Boolean gps_valid = false;
SS.Listen();
Delay(1000);
para (int i = 0; i < 200; i ++)
{
if(!gps_valid)
{
mientras (ss.available())
{
char c = ss.read();
¿Si (gps.encode(c)) / / llegó una nueva frase válida?
{
printGPSDATA();
gps_valid = true;
rotura;
}
}
Delay(5);
}
}
gsmSerial.listen();
Delay(1000);
Serial.println ("<---TAKEGPSDATA");
}
void processData() {}
Serial.println(inData);
if(IsRinging())
{/ / Telefono caliyor
Serial.println ("telefon caliyor");
indexofMsgStr = inData.indexOf("05");
recievedNumber = inData.substring (indexofMsgStr, indexofMsgStr + 11);
Serial.Print ("número =");
Serial.println(recievedNumber);
if(IsAdminNumber())
{
Serial.println ("admin ok!");
TAKEGPSDATA();
if(gpsDataOk())
{
KoordinatBilgisiGonder();
}
otra cosa
{
HazirDegilBilgisiGonder();
}
}
}
}
void KoordinatBilgisiGonder() {}
gpsMesajIcerik = "AT + CMGS = \" ";
gpsMesajIcerik += "+ 9";
gpsMesajIcerik += recievedNumber;
gpsMesajIcerik += "\" ";
gsmSerial.println("AT+CMGF=1");
Delay(2000);
gsmSerial.println(gpsMesajIcerik);
Delay(1000);
gsmSerial.print ("ENLEM =");
gsmSerial.println(flat_store,6);
gsmSerial.print ("BOYLAM =");
gsmSerial.println(flon_store,6);
gsmSerial.print ("HIZ =");
gsmSerial.print(fkmph);
gsmSerial.println ("km/saat");
gsmSerial.println ("LINK =");
gsmSerial.print ("http://maps.google.com/?ie=UTF8 & hq = & ll =");
gsmSerial.print(flat_store,6);
gsmSerial.print(",");
gsmSerial.print(flon_store,6);
gsmSerial.print ("& z = 20");
gsmSerial.write(26);
}
void HazirDegilBilgisiGonder()
{
gpsMesajIcerik = "AT + CMGS = \" ";
gpsMesajIcerik += "+ 9";
gpsMesajIcerik += recievedNumber;
gpsMesajIcerik += "\" ";
gsmSerial.println("AT+CMGF=1");
Delay(2000);
gsmSerial.println(gpsMesajIcerik);
Delay(1000);
gsmSerial.println ("GPS VERISI HAZIR DEGIL");
gsmSerial.print(flat_store,6);
gsmSerial.print("-");
gsmSerial.println(flon_store,6);
gsmSerial.write(26);
}
int IsRinging()
{
Si (inData.indexOf("CLIP:") > = 0)
{
retorno 1;
}
otra cosa
{
return 0;
}
}
int IsAdminNumber()
{
if(recievedNumber.Equals("05558237477"))
{
retorno 1;
}
otra cosa
{
if(recievedNumber.Equals("05073674078"))
{
retorno 1;
}
otra cosa
{
if(recievedNumber.Equals("05323375412"))
{
retorno 1;
}
otra cosa
{
if(recievedNumber.Equals("05398523288"))
{
retorno 1;
}
otra cosa
{
if(recievedNumber.Equals("05532766541"))
{
retorno 1;
}
otra cosa
{
return 0;
}
}
}
}
}
}
int gpsDataOk()
{
Si ((plano > 0.0) & & (flon > 0.0))
{
retorno 1;
}
otra cosa
{
return 0;
}
}
void callback()
{
callback_counter ++;
Si (callback_counter > = 80)
{
Serial.Print ("devolución de llamada ok!");
callback_counter = 0;
TAKEGPSDATA();
}
}
void fastbuzzer()
{
para (int i = 0; i < 10; i ++)
{
digitalWrite (zumbador, HIGH); Encienda el LED (alto es el nivel de voltaje)
Delay(100); Espere un segundo
digitalWrite (zumbador, LOW); Apagar el LED por lo que la tensión baja
Delay(100);
}
}