Electronique > Réalisations > Générateurs > Générateur GPS/NMEA 001

Dernière mise à jour : 04/12/2016

Présentation

Ce générateur à base de PIC 16F628A permet de délivrer des trames NMEA-0183. Je l'ai développé pour faciliter les tests en simulation d'un système de réception de données GPS/NMEA, mais il peut aussi bien sûr être utilé en phase de prototypage.

generateur_gps_nmea_001_pcb_3d_a

Moins encombrant qu'un récepteur GPS, plus rapide à démarrer et utilisable dans un abri anti-atomique. Mais moins "temps réel" et moins évolué que des outils de simulation logiciels complets tel que SatGen, c'est sûr. Voir aussi page Afficheur GPS/NMEA 001.

Avertissement

Le schéma que je présente ici délivre des trames au format TTL (0V / +5 V). Pour une utilisation avec un circuit doté d'un port RS232 standard, il convient d'ajouter une interface TTL/RS232, avec un MAX232 par exemple. S'il s'agit de vérifier la bonne marche d'un microcontrôleur (ce pourquoi je l'ai fait) point besoin d'interface additionnelle, on peut relier directement la sortie du générateur de trames à l'entrée Rx du microcontrôleur décodeur - à condition bien évidement de respecter les niveaux électriques imposés par l'alimentation générale des deux parties (dans mon cas c'était du +5 V partout).

Schéma

Beaucoup de bla-bla sur le schéma, mais au final pas beaucoup de composants autour du PIC.

generateur_gps_nmea_001

Types de trame
Le type de trame est défini par la position des quatre microswitches DSW1 reliés aux lignes RB4 à RB7 du PIC. Quand ces lignes sont en l'air (switches DSW1 ouverts) leur état logique est porté à l'état haut par les pullup internes du PIC.

Sur le schéma ci-avant, les quatres interrupteurs DSW1 sont fermés, le générateur délivre donc des trames GGA. Quand tous les interrupteurs sont ouverts (lignes RB4 à RB7 à l'état haut) alors la pression de SW1 provoque l'envoi d'une série complète de trames qui correspondent à l'état d'un récepteur GPS pas encore "fixé".

generateur_gps_nmea_001_term_001
Série complète de trames obtenue en un coup

L'envoi des données peut se faire de deux façons :
- au coup par coup, par une pression brève sur le bouton-poussoir SW1;
- en mode continu, toutes les secondes, si SW1 est maintenu pressé (ou court-circuité par un interrupteur).
Quel que soit le mode adopté, les trames qui se suivent diffèrent entre elles, le but étant de vérifier si le récepteur/décodeur fonctionne bien. Comme on ne peut pas non plus stocker 5000 trames différentes dans le 16F628A, on tourne forcément en boucle au bout d'un moment. Si le besoin s'en fait sentir à l'avenir, je remplacerai le 16F628A par un 16F648A ou autre pavé de taille respectable. La valeur de checksum placée à la fin de chaque trame (après le caractère "*") est valide, sauf pour une (et une seule) trame de la série. C'est bien sûr voulu, le but étant de vérifier si cette trame invalide est bien rejetée par le récepteur/décodeur (dans le cas bien sûr où le checksum est utilisé, ce qui n'est pas obligatoire mais vivement conseillé). Les trames émises en ASCII par ce générateur ont la forme suivante (exemple pour une trame GGA) :
$GPGGA,064036.289,4836.5375,N,00740.9373,E,1,04,3.2,200.2,M,,,,0000*0E[13][10]
Les valeurs entre crochets sont des caractères non imprimables qui correspondent ici au classique couple CR+LF ($0D+$0A).
Remarque : le checksum est obtenu en faisant un "ou exclusif" (XOR) entre chaque caractère émis entre les symboles "$" et "*".
Il n'y a pas un très grand nombre de trames différentes (limite du PIC, que je pourrais remplacer par un 16F648A) mais cela suffisaitt pour mes tests.

Vitesse de transmission des trames (baudrate)
La vitesse de transmission est définie à la mise sous tension du système, et dépend de l'état logique appliqué aux lignes RA1 et RA2 du PIC.
Oui, je sais qu'on peut aller plus vite et qu'il reste des broches libres sur le PIC ;-)

Logiciel du PIC

Fichier binaire compilé *.hex à flasher dans le PIC disponible dans l'archive zip ci-après
Générateur GPS-NMEA 001 - 16F628A - (04/12/2016)
Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à utiliser, merci de consulter la page PIC - Sources.

Circuit imprimé

Non réalisé.

Historique

04/12/2016
- Première mise à disposition.