Formations à l'informatique et à l'électronique

Auteur : SD
Créé le : 23-06-2015

Arduino - GPS et Serveur WEB

Le shield GPS

Photo Aduino Uno avec Shield GPS Sparkfun

Dans cette première partie du TP nous allons utiliser le shield GPS uniquement (sans le shield Ethernet). Le shield GPS, comme le shield Xbee, utilise les lignes Rx et Tx (RS232) de l'Arduino.

Le Shield GPS, comme les autres Shield, est fournit avec un programme de démonstration (https://www.sparkfun.com/products/10710). Ce programme nécessite l'installation d'une librairie supplémentaire :

TinyGPS (http://arduiniana.org/libraries/tinygps/)

Installation de la librairie TinyGPS

  1. Télécharger le fichier TinyGPS-13.zip
  2. Dézipper le fichier
  3. Dans l'EDI Arduino, cliquer sur Croquis => Importer bibliothèque... => Add Library...
Capture d'écran Arduino Croquis Add Library
  1. Dans la boite de dialogue, ouvrir le dossier dézippé précédemment
  2. La librairie "TinyGPS" doit apparaitre dans l'EDI Arduino :
Capture d'écran Arduino Librairies intallées

Les librairies installées de cette manière sont automatiquement stockées dans le dossier : %USERPROFILE%\Documents\Arduino\libraries

Remarque :

Sous Windows, %USERPROFILE% est une variable d'environnement. Elle représente le chemin vers le dossier personnel de l'utilisateur courant (profile utilisateur). Sur un poste Windows 7 ce dossier est en général : C:\Users\NomDeL_Utilisateur

Il est possible de visualiser toutes les variables d'environnement d'un poste en tapant la commande set dans un invite de commandes.

Le programme de démonstration du shield GPS

Installer le Shield GPS sur la carte Arduino UNO et la connecter avec le câble USB à l'ordinateur.

Sur le Shield GPS l'interrupteur situé en dessous du bouton reset doit être placé sur ON et l'autre sur DLINE.

Télécharger le programme de démonstration : http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Dev/Arduino/Boards/gps_arduino_1_0.ino

Ouvrir ce programme dans l'EDI Arduino et le téléverser dans l'Arduino.

Ouvrir le moniteur série et régler sa vitesse de transmission sur 115 200 bauds.

Capture d'écran Arduino Vitesse Moniteur Série

Au bout de quelques instants, l'Arduino envoie les informations que le Shield GPS lui a envoyé (la LED rouge près de l'antenne GPS clignote) :

Capture d'écran Arduino Moniteur Série Données GPS

Explications sur le port série :

Le Shield GPS communique avec la carte Arduino avec un port série RS232. Il y a deux modes de fonctionnement :

Explications sur les parties du programme liées au port série émulé :

Explications des parties du programme liées au port série émulé du shield GPS

La librairie TinyGPS

La bibliothèque est simple à utiliser. On peut remarquer les appels des méthodes :

gps.f_get_position(&latitude, &longitude);
gps.crack_datetime(&year, &month, &day, &hour, &minute, &second, &hundredths);

Les & mis en évidence indiquent un passage de paramètres par référence.

Dans un appel de fonction "classique" (sans le &), ce sont les valeurs des variables qui sont transmises à la fonction. Ces valeurs sont dupliquées en mémoire. Par conséquent si la fonction (ou la méthode) modifie les variables, elle modifie en réalité la copie et les "vraies" variables ne sont donc pas modifiées. Avec un passage par référence (avec le &), ce sont les adresses des variables qui sont transmises à la fonction (ou à la méthode). Ainsi la fonction peut modifier les variables car elle connait leur adresse.

Le prototype d'une telle fonction est :

void get_position(long *latitude, long *longitude, unsigned long *fix_age = 0);

C'est l'étoile (*) qui indique ici que le paramètre reçu est l'adresse de la variable. On parle de pointeur.

Remarque : "unsigned long *fix_age =0" indique que ce paramètre est optionnel. Si il est omis sa valeur est fixée par défaut à 0.

Géolocalisation sur Google Map

Le but de cette partie est de générer automatiquement une page WEB indiquant sur Googlemap la position de notre GPS.

Ci-dessous, une capture d'écran du rendu attendu (j'ai triché un peu sur les coordonnées !) :

Ajouter le Shield Ethernet entre la carte Arduino et le Shield GPS.

En utilisant les travaux faits sur le Shield Ethernet et sur le Shield GPS, réaliser ce programme.

Indications :

Articles connexes

Premiers pas avec Arduino UNO
Arduino - Capteur de température 1-Wire DS18S20
Arduino - Capteur à ultrasons SRF-05
Arduino - Ports, CAN et Console
Arduino - Serveur Web
Arduino - Carte mémoire
Alternative à L'API Javascript Google Map

Vous avez apprécié cet article ? Partagez le !

Article connexe : Arduino - Serveur Web