Stap 5: programma
het heeft een paar Turkse lijnen, sommigen van henGPS VERISI HAZIR DEGIL === >>> GPS-gegevens IS niet klaar
KoordinatBilgisiGonder === > SendGPSData
ENLEM === >>> LATITUDE
BOYLAM === >>> lengte
HIZ === >> snelheid
========================================== CODE===================================================
#include
#include
#include
TinyGPS gps;
SoftwareSerial gsmSerial(10,11);
SoftwareSerial gsmSerial(3,2);
SoftwareSerial ss(5,6);
InData koord = "";
Boole inputAvailable = false;
RecievedNumber koord = "";
GpsMesajIcerik koord = "";
int callback_counter = 0;
int indexofMsgStr = 0;
zweven plat, flon, fkmph;
niet-ondertekende long leeftijd;
char okunanKarakter = ' *';
zweven flat_store = 0,0;
zweven flon_store = 0,0;
int zoemer = 7;
VOID Setup
{
pinMode (zoemer, OUTPUT);
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 / / run over en voorbij
{
while(gsmSerial.available())
{
inputAvailable = true;
okunanKarakter = gsmSerial.read() (char);
inData += okunanKarakter;
Als (okunanKarakter == ',') {}
breken;
}
}
if(inputAvailable)
{
inputAvailable = false;
processData();
inData = "";
}
}
VOID printGPSDATA()
{
GPS.f_get_position (flat, flon, & leeftijd);
Als (vlakke > 0.0)
flat_store = plat;
Als (flon > 0.0)
flon_store = flon;
fkmph = gps.f_speed_kmph(); snelheid in km/hr
}
ongeldig TAKEGPSDATA() {}
Serial.println ("---> TAKEGPSDATA");
Boole gps_valid = false;
SS.listen();
delay(1000);
for (int i = 0; ik < 200; i ++)
{
if(!gps_valid)
{
terwijl (ss.available())
{
char c = ss.read();
Als (gps.encode(c)) / / kwam een nieuwe geldige zin?
{
printGPSDATA();
gps_valid = true;
breken;
}
}
delay(5);
}
}
gsmSerial.listen();
delay(1000);
Serial.println ("<---TAKEGPSDATA");
}
ongeldig processData() {}
Serial.println(inData);
if(IsRinging())
{/ / telefon caliyor
Serial.println ("telefon caliyor");
indexofMsgStr = inData.indexOf("05");
recievedNumber = inData.substring (indexofMsgStr, indexofMsgStr + 11);
Serial.Print ("nummer ontvangen =");
Serial.println(recievedNumber);
if(IsAdminNumber())
{
Serial.println ("admin ok!");
TAKEGPSDATA();
if(gpsDataOk())
{
KoordinatBilgisiGonder();
}
anders
{
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()
{
Als (inData.indexOf("CLIP:") > = 0)
{
return 1;
}
anders
{
keren 0;
}
}
int IsAdminNumber()
{
if(recievedNumber.equals("05558237477"))
{
return 1;
}
anders
{
if(recievedNumber.equals("05073674078"))
{
return 1;
}
anders
{
if(recievedNumber.equals("05323375412"))
{
return 1;
}
anders
{
if(recievedNumber.equals("05398523288"))
{
return 1;
}
anders
{
if(recievedNumber.equals("05532766541"))
{
return 1;
}
anders
{
keren 0;
}
}
}
}
}
}
int gpsDataOk()
{
Als ((vlakke > 0.0) & & (flon > 0.0))
{
return 1;
}
anders
{
keren 0;
}
}
VOID callback()
{
callback_counter ++;
Als (callback_counter > = 80)
{
Serial.Print ("terugbellen ok!");
callback_counter = 0;
TAKEGPSDATA();
}
}
VOID fastbuzzer()
{
for (int i = 0; ik < 10; i ++)
{
digitalWrite (zoemer, hoge); de LED inschakelen (HIGH is het spanningsniveau)
delay(100); wachten op een tweede
digitalWrite (zoemer, laag); de LED uitschakelen door de spanning laag
delay(100);
}
}