[Tuto] Trianguler la position avec le SIM800L (Arduino)

Pour voir le montage et la prise en main de ce module SIM800L, vous pouvez suivre le tuto sur cette page: Tuto SIM800L – Montage et prise en main 

Le programme suivant affiche dans le moniteur série la position du module SIM800L (latitude,longitude),ainsi que l’heure GMT ,grâce à des commandes AT :

//Importation des librairies
#include <SoftwareSerial.h>
#include <String.h>
#define AT_DELAY  3000    // Delai après envoi commande AT

SoftwareSerial sim800l(9, 10);// RX, TX

String Message, tampon;
String Latitude, Longitude, Time;
//stockage des differentes commandes // Configure le mode positionnement
String AT_COMMAND[9] = {"AT+CGATT =1", "AT+SAPBR =3,1,\"CONTYPE\",\"GPRS\"", "AT+SAPBR =3,1,\"APN\",\"orange.m2m.spec\"",
                        "AT+SAPBR =3,1,\"USER\",\"orange\"", "AT+SAPBR =3,1,\"PWD\",\"orange\"",
                        "AT+SAPBR=1,1", "AT+SAPBR=2,1", "AT+CIPGSMLOC=1,1"
                       };
void setup() {      // début du setup
  sim800l.begin(9600);// Démarrage du modem
  Serial.begin(9600);// Initialisation de la communication série
  Serial.println("start ...");
}

void loop() {    // Début du loop
  delay(2000);
  for (int k = 0; k < 9; k++)
  {
    sim800l.println(AT_COMMAND[k]);//envoie de la commande AT
    delay(650);//délai de réponse
    Message = sim800l.readString();//lecture du retour du sim800l
    Serial.println(Message);// affichage dans le moniteur série des commandes AT + réponse
    if (k == 8)
    {
      Serial.println("##############################################################");
      
      Serial.print("Time: "); 
      //récupération des chaines de caractère correspondant à l'heure
      Time = Message.substring(Message.indexOf('/') + 7, Message.indexOf('/') + 15);
      //affichage dans le moniteur série
      Serial.println(Time);
      
      Serial.println("##############################################################");
      
      Serial.print("Latitude: ");
      Latitude = Message.substring(Message.indexOf("0,") + 11, Message.indexOf(',') + 19);
      Serial.println(Latitude);
      
      Longitude = Message.substring(Message.indexOf(':') + 4, Message.indexOf(',') + 9);
      Serial.print("Longitude: ");
      Serial.println(Longitude);
      
      Serial.println("##############################################################");
    }
  }
  sim800l.println( "AT+SAPBR =0,1");

exit(0);
}


Récapitulatif des AT commandes utilisées pour la localisation:

CommandesRéponsesInfo
AT+CGATTOK
Connexion au service GPRS
AT+SAPBR =3,1, »CONTYPE », »GPRS »OKConfiguration du support en GPRS
AT+SAPBR =3,1, »APN », »orange.m2m.spec »OKConfiguration de l’APN
AT+SAPBR =3,1, »USER », »orange »OKUser de l’APN
AT+SAPBR =3,1, »PWD », »orange »OKMot de passe de l’APN
AT+SAPBR=1,1OKOuverture du support
AT+SAPBR=2,1+SAPBR: 1,1, »IP »
OK
Vérification de la connexion
AT+CIPGSMLOC=1,1+CIPGSMLOC: 0,Longitude,Latitude,AAAA/MM/JJ,H:MIN:SECRécupération de la localisation et de l’heure
AT+SAPBR =0,1OKFermeture du support
  1. Merci beaucoup d’avoir poster votre solution j’ai fait la même erreur que vous et ca fait des semaine que je…

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *