Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Suivi GPS instantané pour Arduino MKR GSM 1400 par SMS

Composants et fournitures

Arduino MKR GSM 1400 × 1

À propos de ce projet

Note : Ce tutoriel pourrait être obsolète, veuillez aller ici pour une version plus récente.

Le but de ce projet est de montrer comment utiliser la localisation cellulaire de l'Arduino MKR GSM 1400. Pour ce faire, nous avons implémenté une application simple qui permet de récupérer la latitude et la longitude du MKR GSM lorsqu'un SMS avec une lettre de sécurité est reçu. Le numéro de l'expéditeur est récupéré à partir du SMS reçu et une réponse est créée avec le lien Google Maps approprié complété par les coordonnées données par les services de localisation fournis par le module u-blox.

Ce dont vous avez besoin

Le projet est basé sur un Arduino MKR GSM 1400, une antenne, un pack batterie LiPo, un smartphone, et une carte SIM data.

Configuration matérielle

Ce projet ne nécessite rien de spécial. Connectez l'antenne à la carte, insérez la carte SIM et connectez la batterie LiPo au connecteur JST.

La batterie LiPo est optionnelle, mais elle permet de faire face aux pics de courant que le module GSM pourrait nécessiter dans des conditions particulières de mauvaise couverture.

Suivi GPS instantané pour Arduino MKR GSM 1400 par SMS

Comment ça fonctionne

Ce projet utilise la bibliothèque MKRGSM pour gérer les messages SMS et la géoréférenciation basée sur les cellules.

Lorsqu'un SMS est reçu, le contenu est vérifié pour savoir s'il contient la lettre « L ». Ce n'est que dans ce cas que le sketch procède à la localisation et à la transmission SMS. Avec cette solution, n'importe quel numéro peut demander la localisation du système, mais seule la personne qui connaît le mot de passe (la « lettre secrète ») recevra une réponse. C'est cette ligne qui fait la vérification : if (c != 76) et 76 est le code ASCII de « L ». Vous pouvez changer la valeur pour changer la lettre reconnue.

Le module GSM n'a pas de récepteur GPS, mais le fabricant dispose d'une base de données de la localisation de chaque cellule du réseau GSM et fournit donc des coordonnées pour chaque ID de cellule fourni. Ce système est assez précis en zones urbaines, où chaque cellule couvre une petite zone. En zones rurales, la couverture de chaque cellule est beaucoup plus grande et la localisation fournie est avec une approximation plus grossière.

Pour créer le lien pour Google Maps, nous utilisons une URL standard où nous concaténons simplement les valeurs Long et Lat appropriées à la fin. Cette URL ressemble à « https://www.google.com/maps/place/<LAT>, <LONG> ». La position affichée sur la carte sera celle où la cellule est physiquement basée ; notre carte se trouve dans le rayon couvert par la cellule.

Le Sketch

Voici une description détaillée du Sketch ; la première section de code est utilisée pour inclure les bibliothèques requises par l'application.

MKRGSM inclut toutes les fonctionnalités de connexion GSM, de localisation et de gestion SMS, disponibles via les objets GSMClient, GPRS, GSM et GSMLocation. Les API de gestion SMS sont disponibles via l'objet GSM_SMS. L'en-tête ArduinoLowPower importe les API qui permettent la gestion de basse consommation des modules de la carte.

Si vous téléchargez le code depuis le Web Editor, vous trouverez un fichier arduino_secrets.h qui inclut les données sensibles comme PIN, APN, utilisateur et mot de passe. Sur le Web Editor, vous devez remplir les données sensibles dans l'onglet Secrets.

// Inclure la bibliothèque GSM
#include <MKRGSM.h>
#include "ArduinoLowPower.h"

char PINNUMBER[] = SECRET_PINNUMBER;
char GPRS_APN[] = SECRET_GPRS_APN;
char GPRS_LOGIN[] = SECRET_GPRS_LOGIN;
char GPRS_PASSWORD[] = SECRET_GPRS_PASSWORD;

// Initialiser les instances de la bibliothèque
GPRS gprs;
GSM gsmAccess;
GSM_SMS sms;
GSMLocation location;

La fonction measureLocation() interroge le module pour récupérer les coordonnées par le réseau cellulaire. Si de nouvelles coordonnées sont disponibles, elle les assigne à la variable globale, sinon elle redemande pendant 45 secondes. Si aucune mesure ne respecte les contraintes de précision, elle retourne les dernières bonnes valeurs.

// Variables globales utilisées pour la gestion de la localisation
String GSMlatitude = "0.000000";
String GSMlongitude = "0.000000";

// Cette fonction utilise les API de localisation pour obtenir les coordonnées de l'appareil
// et met à jour la variable globale si toutes les exigences sont satisfaites
void measureLocation() {
  unsigned long timeout = millis();
  while (millis() - timeout < 45000) {
    if (location.available() && location.accuracy() < 300 && location.accuracy() != 0) {
      GSMlatitude = String(location.latitude(), 6);
      GSMlongitude = String(location.longitude(), 6);
      break;
    }
  }
}

La fonction connectNetwork() utilise les API gsmAccess.begin et gprs.attachGPRS pour connecter la carte au réseau de données. Sont utilisées les données d'identification pin, apn, user et pass assignées par les déclarations dans arduino_secrets.h.


// La fonction connectNetwork() est utilisée pour la connexion de données de la carte
void connectNetwork() {
  bool status = false;
  // Définir le timeout global des commandes AT. Cela permet de récupérer
  // d'un gel de communication UART entre le module SAMD et le module u-blox.
  gprs.setTimeout(100000);
  gsmAccess.setTimeout(100000);
  
  // Démarrer la connexion GSM
  while (status == false) {
    if ((gsmAccess.begin(PINNUMBER) == GSM_READY) & 
        (gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD) == GPRS_READY)) {
      status = true;
    } else {
      delay(1000);
    }
  }
}

La section setup permet d'initialiser tous les objets utilisés par le sketch. La fonction connectionNetwork() est appelée pour établir la connexion de données et démarrer la structure de localisation.


// Section de code utilisée pour initialiser la connexion de données et l'objet de localisation
void setup() {
  connectNetwork();
  location.begin();
}

La dernière section de code est la fonction loop où sont implémentées la gestion des SMS et la mesure de localisation. Chaque fois qu'un nouveau SMS est disponible, la carte répond à l'expéditeur avec un SMS contenant les coordonnées de la carte. Pour réduire la consommation, le module est arrêté et la carte entre en sommeil profond pendant 60 secondes.


void loop() {
  int c;
  String response;
  String messager = "";
  
  measureLocation();
  unsigned long timeout = millis();
  
  while (millis() - timeout < 5000) {
    if (sms.available()) {
      // Vérifier si un SMS est disponible
      char senderNumber[20] = {"0"};
      sms.remoteNumber(senderNumber, 20); // Obtenir le numéro distant
      int c = sms.read();
      
      if (c != 76) { // 76 = 'L' en ASCII
        sms.flush();
        break;
      }
      
      // Concaténer le message à envoyer au numéro distant
      String txtMsg = "https://www.google.com/maps/place/" + GSMlatitude + "," + GSMlongitude;
      
      // Envoyer le message
      sms.beginSMS(senderNumber);
      sms.print(txtMsg);
      sms.endSMS();
      break;
    }
  }
  
  // Éteindre le module GSM pour obtenir la plus basse consommation pendant le sommeil
  gsmAccess.shutdown();
  LowPower.sleep(60000); // Activer le mode basse consommation pendant 60 secondes
  
  // Réactiver le module et se reconnecter au réseau de données
  connectNetwork();
}

Comment l'utiliser

Configurez le matériel comme expliqué ci-dessus, personnalisez le sketch avec vos identifiants d'accès, chargez le sketch sur la carte, et attendez que la connexion soit établie avec le réseau GSM. Cela peut prendre 30 secondes.

Une fois la connexion établie, envoyez simplement un SMS au numéro de la SIM du MKR GSM avec un « L » comme texte : cela lancera le processus de localisation et la carte répondra avec un SMS contenant le lien Google Maps avec la position demandée.

Code

Arduino

Processus de fabrication

  1. Pourquoi un design légèrement plus grand peut accélérer l'innovation et réduire les risques
  2. Intégrer votre station météo à CWOP : Guide pratique
  3. Maîtriser la Carte PSoC 6 Pioneer avec le Shield IoT Add-On : Guide du Développeur
  4. Comment implémenter les codes QR dans votre GMAO : Guide étape par étape
  5. Maximiser le ROI de vos investissements IoT : guide pratique
  6. Découvrez comment Techman Robot automatise la production : Webinaire sur cobots avancés et systèmes de vision
  7. 7 stratégies éprouvées pour réduire les coûts de production PCB
  8. Booster les opérations agricoles avec la maintenance proactive
  9. Maximiser la valeur : stratégies pour vendre ou réaffecter les engins lourds d'occasion