Vous êtes ici : Accueil > Technique > Projet Arduino - Calcul de locator en temps réel
Publié : 19 mars 2011

Projet Arduino - Calcul de locator en temps réel

Description du projet Mettre en pratique le module Arduino pour calculer en temps réel le QTH Locator en fonction des informations issues un GPS.

Étape n°1 - l’Arduino peut-il faire ça ?

Pour cela rien de mieux que d’essayer de commencer par le programme de calcul du QTH Locator. C’est la partie que j’ai identifié comme étant la plus complexe.
Le programme, pour l’instant, se contente de traiter des coordonnées GPS fixes, le but étant simplement de vérifier son bon fonctionnement.
A des fins de ré-utilisabilité, j’ai séparé le traitement de la chaîne du GPS de celle du calcul du QTH locator.
Voici le programme principal accompagné de la librairie "Locator", c’est du "made in maison" :-)

Programme principal
Librairie Locator

Il faut également récupérer deux librairies indispensables au programme :
- TinyGPS, pour les données GPS, fournie par le site Arduiniana
- LCD4bit_Mod, fournie par le fabricant de l’écran LCD DFRobot
Elle sont aussi téléchargeables ci-dessous.

Librairie TinyGPS10
Librairie LCD4Bit_mod

Étape n°2 - acquisition des données du GPS

La plupart des GPS envoient les données via une communication en RS-232 donc cela reste très simple à exploiter.
Ci-contre on peut voir que je suis passé par une platine d’essai uniquement pour alimenter le GPS, la connexion RS-232 est directe. Je n’ai câblé que le TX du GPS et la masse.
Pour afficher les données, j’ai utilisé HyperTerminal avec la configuration suivante
- Vitesse : 4800 bauds
- Bits de données : 8
- Bit de parité
- Contrôle du flux : Aucune
Le fichier HyperTerminal est directement disponible ici (pour le port COM2)

Le branchment RS-232 et l’alimentation du GPS
Vérification de la forme des signaux
Données brutes en provenance du GPS

Je sais désormais qu’il me faut traiter les trames GPGSA, GPRMC, GPGSV et GPGGA. C’est sur cette dernière que je vais me concentrer car elle contient les coordonnées mais aussi la vitesse et l’altitude ; tout ce dont j’ai besoin.

Étape n°3 - Conversion des niveaux RS-232 en niveaux TTL

Les modules Arduino sont tout à fait capables de gérer une communication série mais seulement avec des niveaux électriques TTL, soit 0 ou 5V. Il faut donc :
- soit convertir les signaux
- soit utiliser un GPS qui fourni les signaux TTL, ce n’est pas mon cas
Pour rappel, le RS-232 utilise une tension de -3V à -15V pour l’état logique 1 et de +3V à +15V pour l’état logique 0.
Le montage est extrêmement simplifié car il ne s’agit même pas d’une communication bidirectionnelle.
On a deux possibilités :
- montage à transistors (exemple sur cette page)
- utilisation d’un circuit dédié comme le MAX232 (exemple sur cette page)
Personnellement, j’ai opté pour la version à transistor avec un 2SC1815 de récupération.

Étape n°4 - assemblage final et essais

Le convertisseur RS-232 vers TTL est monté sur de la platine d’expérimentation. A la mise sous tension, il n’y a pas eu de surprises, ça fonctionne comme il se doit. Bon c’est sûr qu’à l’arrêt dans le shack ce n’est pas très impressionnant.

Terminé et opérationnel
Convertisseur RS-232 vers TTL

Et voilà une bidouille de plus de terminé.

73’s
Jean-Michel

2 Messages