Étape 5: programme
Il a quelques lignes turques, certains d'entre euxGPS VERISI HAZIR DEGIL === >>> données GPS ne sont pas prêtes
KoordinatBilgisiGonder === > SendGPSData
ENLEM === >>> LATITUDE
BOYLAM === >>> LONGITUDE
HIZ === >> Vitesse
========================================== CODE===================================================
#include
#include
#include
TinyGPS gps ;
SoftwareSerial gsmSerial(10,11) ;
SoftwareSerial gsmSerial(3,2) ;
SoftwareSerial ss(5,6) ;
Dim inData = "" ;
inputAvailable booléen = false ;
String recievedNumber = "" ;
String gpsMesajIcerik = "" ;
int callback_counter = 0 ;
int indexofMsgStr = 0 ;
flotteur plat, flon, fkmph ;
unsigned long âge ;
char okunanKarakter = ' *' ;
float flat_store = 0.0 ;
float flon_store = 0.0 ;
avertisseur sonore int = 7 ;
void setup()
{
pinMode (vibreur, sortie) ;
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 maintes et maintes
{
while(gsmSerial.available())
{
inputAvailable = true ;
okunanKarakter = (char) gsmSerial.read() ;
inData += okunanKarakter ;
Si (okunanKarakter == «, ») {}
rupture ;
}
}
if(inputAvailable)
{
inputAvailable = false ;
processData() ;
inData = "" ;
}
}
Sub printGPSDATA()
{
GPS.f_get_position (plat, flon & age) ;
Si (plat > 0.0)
flat_store = plat ;
Si (flon > 0.0)
flon_store = flon ;
fkmph = gps.f_speed_kmph() ; la vitesse en km/hr
}
void TAKEGPSDATA() {}
Serial.println ("---> TAKEGPSDATA") ;
gps_valid booléen = false ;
SS.Listen() ;
Delay(1000) ;
pour (int i = 0; i < 200; i ++)
{
if(!gps_valid)
{
tandis que (ss.available())
{
char c = ss.read() ;
Si (gps.encode(c)) / / une nouvelle phrase valide est venu ?
{
printGPSDATA() ;
gps_valid = true ;
rupture ;
}
}
Delay(5) ;
}
}
gsmSerial.listen() ;
Delay(1000) ;
Serial.println ("<---TAKEGPSDATA") ;
}
void processData() {}
Serial.println(inData) ;
if(IsRinging())
{/ / telefon caliyor
Serial.println ("telefon caliyor") ;
indexofMsgStr = inData.indexOf("05") ;
recievedNumber = inData.substring (indexofMsgStr, indexofMsgStr + 11) ;
Serial.Print ("reçu nombre =") ;
Serial.println(recievedNumber) ;
if(IsAdminNumber())
{
Serial.println ("admin ok!") ;
TAKEGPSDATA() ;
if(gpsDataOk())
{
KoordinatBilgisiGonder() ;
}
d’autre
{
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) ;
}
Sub 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 DEGIL HAZIR") ;
gsmSerial.print(flat_store,6) ;
gsmSerial.print("-") ;
gsmSerial.println(flon_store,6) ;
gsmSerial.write(26) ;
}
int IsRinging()
{
Si (inData.indexOf("CLIP:") > = 0)
{
Return 1 ;
}
d’autre
{
return 0 ;
}
}
int IsAdminNumber()
{
if(recievedNumber.Equals("05558237477"))
{
Return 1 ;
}
d’autre
{
if(recievedNumber.Equals("05073674078"))
{
Return 1 ;
}
d’autre
{
if(recievedNumber.Equals("05323375412"))
{
Return 1 ;
}
d’autre
{
if(recievedNumber.Equals("05398523288"))
{
Return 1 ;
}
d’autre
{
if(recievedNumber.Equals("05532766541"))
{
Return 1 ;
}
d’autre
{
return 0 ;
}
}
}
}
}
}
int gpsDataOk()
{
Si ((plat > 0,0) & & (flon > 0.0))
{
Return 1 ;
}
d’autre
{
return 0 ;
}
}
callback() Sub
{
callback_counter ++ ;
Si (callback_counter > = 80)
{
Serial.Print ("rappel ok!") ;
callback_counter = 0 ;
TAKEGPSDATA() ;
}
}
Sub fastbuzzer()
{
pour (int i = 0; i < 10; i ++)
{
digitalWrite (sonnerie, HIGH) ; allumer la LED (HIGH est le niveau de tension)
Delay(100) ; Attendez une seconde
digitalWrite (sonnerie, faible) ; éteindre la LED en rendant la tension basse
Delay(100) ;
}
}