Arduino GPS/GSM Tracker (2 / 5 étapes)

Etape 2: Logiciel a expliqué

Le code de l’Arduino est assez simple. En utilisant un couple de bibliothèques, le GPS et GPRS bouclier devient simple d’utiliser des objets. Cela permet d’économiser beaucoup de temps à analyser des chaînes GPS et de composer de longues chaînes de commande AT + pour le modem. Voici le code sans aucune peluches. Lire la suite par la suite pour une ventilation de ce que tout cela.

 #include <TinyGPS++.h> #include <GPRS_Shield_Arduino.h> #include <Wire.h> #include <SoftwareSerial.h> TinyGPSPlus gps; GPRS gsm(7,8,9600); int messageIndex = 0; char message[160]; char phone[16]; char datetime[24]; char latitude[12]; char longitude[12]; void setup() { Serial.begin(9600); pinMode(9, OUTPUT); digitalWrite(9,LOW); delay(100); digitalWrite(9,HIGH); delay(500); digitalWrite(9,LOW); delay(100); pinMode(13, OUTPUT); digitalWrite(13,LOW);} void loop() { while (Serial.available() > 0) { gps.encode(Serial.read());} messageIndex = gsm.isSMSunread(); if (messageIndex > 0) { gsm.readSMS(messageIndex, message, 160, phone, datetime); gsm.deleteSMS(messageIndex); if (String(message) == "xyzzy") { if (gps.location.isValid()) { strcpy(message, "http://www.bing.com/maps?"); strcat(message, "lvl=17&style=r&sp=point."); dtostrf(gps.location.lat(), 1, 6, latitude); strcat(message,latitude); strcat(message,"_"); dtostrf(gps.location.lng(), 1, 6, longitude); strcat(message,longitude); strcat(message,"_Golf+Cart_"); strcat(message,datetime);} else { strcpy(message, "I'm sorry, Dave, I'm afraid I can't do that.");} gsm.sendSMS(phone,message);}}} 

Si vous ne savez pas comment faire pour ajouter une bibliothèque pour votre outil de programmation Arduino, la meilleure documentation peut être trouvée sur le site d’Arduino à http://www.arduino.cc/en/guide/libraries#toc4

La bibliothèque TinyGPS ++ peut être trouvée à http://arduiniana.org/libraries/tinygpsplus/.

La bibliothèque GPRS bouclier peut être trouvée à https://github.com/Seeed-Studio/GPRS_SIM900.

Vous devez vous assurer que les câbles de données GPS sont supprimés de l’Arduino avant de télécharger votre croquis. Une fois le programme est téléchargé, mettez hors tension et remplacer les fils de données GPS.

Pour économiser la mémoire, je n’a pas déclaré chaque goupille comme une variable avec un nom de fantaisie, mais mettez les valeurs directement dans le code. Si vous souhaitez utiliser des broches différentes pour votre appareil GPRS, par exemple, vous modifieriez les broches à l’endroit du code où l’objet GPRS est créé. Voici le jeu.

Tout d’abord, nous déclarons nos bibliothèques et variables globales :

 #include <TinyGPS++.h>#include <APRS_Shield_Arduino.h>#include <Wire.h>#include <SoftwareSerial.h> 

Ensuite, créez une instance de tinygps ++ appelé « gps ».

 TinyGPSPlus gps; 

Ensuite, créez un objet GPRS, appelé « gsm » sur le port série de logiciel sur les broches 7 et 8 à 9 600 bps

 GPRS gsm(7,8,9600); 

Enfin, de déclarer tous les indices et les chaînes

 int messageIndex = 0; char message[160]; char phone[16]; char datetime[24]; char latitude[12]; char longitude[12]; 

La boucle de programme d’installation est assez clairsemée, principalement lors de l’initialisation du port série du matériel pour le GPS et puis tournant sur le bouclier GSM par impulsions momentanément broche 9. J’espère que vous vous êtes souvenu de souder le pad de cavalier. Enfin, j’ai désactiver la LED embarquée sur la broche 13 pour enregistrer jus et éventuellement utiliser pour indiquer une erreur à un moment donné dans l’avenir.

 void setup() { Serial.begin(9600); pinMode(9, OUTPUT); digitalWrite(9,LOW); delay(100); digitalWrite(9,HIGH); delay(500); digitalWrite(9,LOW); delay(100); pinMode(13, OUTPUT); digitalWrite(13,LOW);} 

Ainsi, le loop() est assez directe. À l’aide de la bibliothèque TinyGPS ++ enregistre une cargaison de codage, gère toutes les données GPS l’analyse avec seulement deux lignes de code.

 void loop() { while (Serial.available() > 0) { gps.encode(Serial.read());} 

Après cela, nous demandons à la bibliothèque de GPRS_SIM9000 de retirer tous les travaux à vérifier les messages non lus en lecture et en supprimant le premier nous trouver avec seulement quatre lignes de code. La fonction readSMS() charge également nos variables globales pour une utilisation ultérieure. Si il n’y a plus d’un message en attente, chacun va obtenir analysé sur les itérations subséquentes de la loop().

 messageIndex = gsm.isSMSunread(); if (messageIndex > 0) { gsm.readSMS(messageIndex, message, 160, phone, datetime); gsm.deleteSMS(messageIndex); 

Avec le message analysé et globals chargé, les textos entrants est ensuite comparé avec une chaîne spécifique, poursuit uniquement sur une correspondance exacte de notre mot magique. Sans match, nous revenons vers le haut de la boucle et démarrer le chargement de l’objet GPS avec de nouvelles données à nouveau. Modifier le texte à l’intérieur des guillemets si vous souhaitez utiliser un autre mot magique.

 if (String(message) == "xyzzy") { 

S’il existe une correspondance, nous faisons une autre ligne simple appel à notre objet GPS afin de déterminer si nous avons un bon fix sur notre position.

 if (gps.location.isValid()) { 

Si donc, nous répondrons avec une URL à Bing maps. Je préfère utiliser Google, mais je n’ai pas déterminé comment placer une épingle sur la carte avec juste un URL. En tout cas, créer l’URL est probablement le plus laid code dans la boucle. Il faut faire certains transtypage pour obtenir le nombre double précision retournées par l’objet GPS dans une chaîne, donc la fonction dtostrf() . Puis c’est la force brute juste concaténation de chaînes.

La fonction strcpy() définie la variable message au début de l’URL, puis la strcat() continue à ajouter des morceaux à la même variable message jusqu'à ce que nous avons fini. C’est le bloc à modifier si vous souhaitez utiliser un service de cartographie différente ou formater votre réponse de manière différente.

 strcpy(message, "http://www.bing.com/maps?"); strcat(message, "lvl=17&style=r&sp=point."); dtostrf(gps.location.lat(), 1, 6, latitude); strcat(message,latitude); strcat(message,"_"); dtostrf(gps.location.lng(), 1, 6, longitude); strcat(message,longitude); 

Le texte entre guillemets est le label qui apparaîtra sur votre objet de la carte. Il doit avoir le caractère de soulignement environnante et utiliser le caractère « + » en lieu et place des espaces. La ligne suivante ajoute l’horodatage de la demande initiale.

 strcat(message,"_Golf+Cart_"); strcat(message,datetime);} 

Si nous n’avons pas une difficulté, nous définir le contenu de la variable message à autre chose et envoyez-le le long avec le même nombre qui fait la demande et ferme tous les accolades.

 else { strcpy(message, "I'm sorry, Dave, I'm afraid I can't do that.");} gsm.sendSMS(phone,message);}}} 

C’est tout. Revenir en haut de la loop() et tout recommencer.

J’espère que c’est ce qui explique le code bien assez que quelqu'un de nouveau à la Arduinosphere peut comprendre et modifiez-le à leurs besoins. Ensuite, installation...

Articles Liés

Arduino GPS/GSM Tracker (chien de garde activé)

Arduino GPS/GSM Tracker (chien de garde activé)

Ce qui est un GPS / GLONASS ?Un appareil de suivi GPS est un appareil, normalement porté par un véhicule ou une personne, qui utilise le système de positionnement Global de déterminer et de suivre la localisation précise, mobile et donc celle de son
Arduino GPS iPhone Case - Construisez votre propre ! :)

Arduino GPS iPhone Case - Construisez votre propre ! :)

Hi All,C'est nous à nouveau sur les rails. Cette fois nous avons pensé à quelque chose de cool qui peut être utilisé comme un simple gadget qui peut impressionner les autres. Ce que nous avons ici est un ensemble de beauté de boucliers connecté à mon
Système de domotique à l’aide du module Arduino et GSM SIM900

Système de domotique à l’aide du module Arduino et GSM SIM900

Salut! Comme j'ai presque fini mes études à la faculté de génie, j'ai dû faire un projet de remise des diplômes et ma pensée était de faire une chose à couper le souffle (je sais que c'est hilarant: D) pour montrer à tout le monde que je suis un fabr
Arduino DIY Solar Tracker

Arduino DIY Solar Tracker

Bonjour NerdsLa semaine précédente, j'ai vu un instrcutable étonnant d'agréable et simple suiveur solaire Geo Bruce.Alors, j'ai pensé à faire mes propres et voici le résultat.Il est inspiré du travail de Geo Bruce.Étape 1: Éléments requis Certains él
GEO Data Logger : Arduino + GPS + SD + accéléromètre pour enregistrer, horodatage et les données des capteurs géo-tag

GEO Data Logger : Arduino + GPS + SD + accéléromètre pour enregistrer, horodatage et les données des capteurs géo-tag

mises à jour17 octobre 2013: J'ai publié un guide sur l'utilisation de votre téléphone Android pour accomplir une tâche similaire en s'appuyant sur votre Android appareil construit dans le GPS et les capteurs.6 février 2013: En vedette sur GeoAwesome
Arduino avec GSM et capteur PIR (anglais/arabe)

Arduino avec GSM et capteur PIR (anglais/arabe)

درس التحكم بالاردوينو عن طريق شبكة الجوالالمقدمة :يتيح لك هذا الدرس استخدام شبكة الجوال للتحكم بضوء الليد بالمنزل عن طريق ارسال رسالة نصية وايضا استخدام الاردوينو للاتصال الاتوماتيكي من المنزل لجوالك عند استشعار اي حركة في الغرفة لسماع نوع الاصوات في
Système de Navigation carte Arduino GPS

Système de Navigation carte Arduino GPS

Construit sur la base d'Arduino UNO, carte SD, GPS, TFT, système de navigation GPS carte consiste à obtenir les informations de position en temps réel via GPS, de l'envoyer à UNO pour calcul, selon les résultats de calcul et s'associa avec le fichier
Alerte de proximité GSM avec GPS lieu et l’heure

Alerte de proximité GSM avec GPS lieu et l’heure

Qu'est-ce que c'est?Un détecteur de mouvement de batterie qui rend compte de déclencher des événements par l'intermédiaire de SMS, ainsi que l'heure et le lieu, dérivé de GPS. Voici une vidéo d'elle en action :Où l'utiliser ?Je peux penser quelques c
[LinkIt on] GPS Tracker + tutoriel MediaTek Cloud Sandbox

[LinkIt on] GPS Tracker + tutoriel MediaTek Cloud Sandbox

Ce tutoriel est de montrer comment construire un base wifi GPS tracker avec MediaTek Cloud Sandbox et même sur l'application mobile.Étape 1: Prérequis : enregistrer un compte gratuit de MCS (MediaTek Cloud Sandbox)Allez sur le site officiel : https:/
Tracker GSM pour la localisation de la voiture

Tracker GSM pour la localisation de la voiture

Quoi s'agit-il ?Ce projet est une solution bon marché pour installer une voiture ou une moto suivi gadget. J'ai fait pour s'assurer que je peux toujours obtenir la position de ma voiture dans le cas où il obtient volé.Comment ça marche ?Vous avez ess
Tracker GPS framboise Pi

Tracker GPS framboise Pi

Dans ce tutoriel, je vais tenter de créer un tracker GPS en utilisant un pi framboise avec un dongle GPS et un peu de linux. Je n'écrivais pas la plupart du code utilisé tous je suis tout simplement faire est rassembler les ressources et en les metta
Contrôle à distance via GPRS/GSM SMS(Arduino)

Contrôle à distance via GPRS/GSM SMS(Arduino)

télécommande, surtout quand ce pas ethernet ou Wifi à l'extérieur, a été un très profond des choses dans le passé. Lorsque j'étais enfant, j'ai toujours l'image que j'ai un équipement qui permet de contrôler tous les appareils ménagers. Maintenant, c
Projet Arduino : Essai gamme LoRa Module RF1276 pour la Solution de suivi GPS

Projet Arduino : Essai gamme LoRa Module RF1276 pour la Solution de suivi GPS

Connexion : USB - sérieBesoin : Chrome navigateurBesoin: 1 méga X ArduinoBesoin: 1 X GPSBesoin: 1 X SD cardBesoin: 2 X LoRa Modem RF1276Fonction : Arduino envoyer GPS valeur à base principale - données de base magasin Main dans Dataino Lora Module se
Arduino Ublox GPS

Arduino Ublox GPS

Donc ce Geek vieux paresseux (S.A.J.) cherchait un GPS pour un projet Arduino. Eh bien, j'ai trouvé ce GPS UBLOX-NEO - 6M sur ebay :http://www.eBay.com/ITM/Ublox-Neo-6M-GPS-Module-with-EEPROM-and-built-in-Active-Atenna-APM2-5-APM2-0-com-/251548034492