Étape 6: Programmation de l’Arduino :
Voici les étapes pour installer la bibliothèque:-
- Télécharger la bibliothèque minuscule GPS pour l’Arduino. (lien)
- Extrayez le fichier zip dans le dossier: " Library/Documents/Arduino/libraries »
- Maintenant, vous verriez la bibliothèque sous "Esquisse--> Bibliothèque d’importation" dans l’IDE Arduino.
- Vous pouvez procéder à l’Arduino Uno de programmation.
Voici le code source de l’Arduino. Copiez le code ci-dessous et de le charger sur l’Arduino:-
Programme écrit pour le système mondial de suivi de voiture par Jayvis Gonsalves
#include < SoftwareSerial.h >
#include < string.h >
#include < TinyGPS.h >
SoftwareSerial Sim900Serial(2, 3) ;
mémoire tampon d’octets [64] ; recevoir des tableau buffer pour les données sur le port série
int count = 0 ; compteur pour tableau buffer
SoftwareSerial GPS(4, 5) ;
TinyGPS gps ;
unsigned long fix_age ;
long lat, lon ;
flotteur LAT, LON ;
Sub gpsdump (TinyGPS et gps) ;
bool feedgps() ;
void getGPS() ;
void setup()
{
Sim900Serial.Begin(19200) ; la vitesse de transmission SIM900
GPS.begin(9600) ; Vitesse de transmission pour le module GPS
Serial.Begin(9600) ; le taux de baud Serial port d’Arduino.
Delay(500) ;
Sim900_Inti() ;
}
void loop()
{
Sim900Serial.Listen() ;
Si (Sim900Serial.available()) / / If date provient du bouclier GSM)
{
while(Sim900Serial.available()) / / lecture de données en tableau de char
{
tampon [count] = Sim900Serial.read() ; écriture de données en tableau
if(Count == 64) briser ;
}
Serial.Write(buffer,Count) ; Si aucune transmission de données se termine, écrire le tampon au port série de matériel
Cmd_Read_Act() ; Lire la « commande » envoyée au SIM900 par SMS
clearBufferArray() ; appelez la fonction clearBufferArray pour effacer les données stockées du tableau
Count = 0 ; la valeur de compteur de boucle while à zéro
}
Si (Serial.available()) / / si les données sont disponibles sur le port de hardwareserial == > données provient de PC ou ordinateur portable
Sim900Serial.println(Serial.Read()) ; écrire sur le bouclier GPRS
}
void clearBufferArray() / / fonction pour effacer le tableau buffer
{
pour (int i = 0; j’ai < count; i)
{tampon [i] = NULL;} effacer tous les index du tableau avec commande NULL
}
Sub Sim900_Inti(void)
{
Sim900Serial.println ("à CMGF = 1") ; La valeur bouclier GSM mode sms
Serial.println ("à CMGF = 1") ;
Delay(500) ;
Sim900Serial.println ("AT CNMI = 2, 2") ;
Serial.println ("à CMGF = 1") ;
Delay(500) ;
}
Sub Cmd_Read_Act(void) //Function lit le SMS envoyé au bouclier de SIM900.
{
char buf2 [64] ;
pour (int i = 0; j’ai < count; i)
{buffer2[i]=char(buffer[i]);}
Si (strstr(buffer2,"INSTRUCTABLES")) //Comparing mot de passe entré avec mot de passe stocké dans le programme
{
Serial.println ("mot de passe authentifié.") ;
Serial.println ("envoi réponse SMS.") ;
SendTextMessage() ;
}
}
Sub SendTextMessage()
{
Sim900Serial.Print ("à CMGF = 1") ; Envoi de SMS en mode texte
Delay(100) ;
Sim900Serial.println ("AT CMGS = numéro de téléphone \"***\"");//The prédéfinis
Delay(100) ;
Sim900Serial.println ("Veuillez patienter pendant que le Module calcule la position"); //the contenu du message
Delay(100) ;
Sim900Serial.println (26 (char)); //the ASCII code du ctrl z est 26
Delay(100) ;
Sim900Serial.println() ;
int compteur = 0 ;
GPS.listen() ;
pour (;)
{
long lat, lon ;
unsigned long fix_age, heure, date, vitesse, cours ;
unsigned longs chars ;
phrases courtes non signées, failed_checksum ;
long Latitude et de Longitude ;
extrait/lat/long en 100000ths d’un degré
GPS.get_Position (lat, lon & fix_age) ;
getGPS() ;
Serial.Print ("Latitude:") ;
Serial.Print(lat/1000000,7) ;
Serial.Print (":: Longitude:") ;
Serial.println(LON/1000000,7) ;
Si (LAT == 0 & & LON == 0)
{
continuer ;
}
compteur ;
Si (compteur < 30)
{
continuer ;
}
Sim900Serial.Print ("à CMGF = 1") ; Envoi de SMS en mode texte
Delay(100) ;
Sim900Serial.println ("AT CMGS = numéro de téléphone \"***\"");//The prédéfinis
Delay(100) ;
Sim900Serial.Print ("Latitude:") ;
Sim900Serial.Print(lat/1000000,7) ;
Sim900Serial.Print (":: Longitude:") ;
Sim900Serial.println (1000000,7/LON); //the contenu du message
Delay(100) ;
Sim900Serial.println (26 (char)); //the ASCII code du ctrl z est 26
Delay(100) ;
Sim900Serial.println() ;
compteur = 0 ;
rupture ;
}
}
Sub getGPS()
{
bool NouvDonnées = false ;
unsigned long début = millis() ;
tandis que (millis() - start < 1000)
{
Si (feedgps ())
{
NewData = true ;
}
}
Si (newdata)
{
gpsdump(GPS) ;
}
}
bool feedgps()
{
tandis que (GPS.available())
{
Si (gps.encode(GPS.read()))
retourne la valeur true ;
} return 0 ;
}
Sub gpsdump (TinyGPS & gps)
{
GPS.get_Position (& lat et lon) ;
LAT = lat ;
LON = lon ;
{
feedgps() ;
}
}