Boitier de signalisation de points d'intérêt

From Eric

Jump to: navigation, search

Contents

Objectifs

Officiellement, il s'agit de réaliser un petit montage permettant de déterminer la proximité d'un "point d'intérêt" (quel qu'il puisse être...) et de le signaler. Officieusement, il s'agit aussi d'utiliser le récepteur GPS que j'ai sur les bras depuis quelques mois...

Les fonctions initiales de l'appareil sont les suivantes :

  • Signaler la proximité du véhicule d'un point d'intérêt (POI). La signalisation s'effectue au moyen d'un haut-parleur (bip!) et d'un écran.
  • Afficher les coordonnées GPS du véhicule ainsi que le nombre de satellites en vue.

On peut imaginer d'autres fonctions :

  • Stocker périodiquement la position du véhicule,
  • Signaler la proximité d'un POI par un bip pouvant être capté sur la bande FM.

Le récepteur GPS dispose d'une sortie série. L'écran est un modèle classique 2 lignes de 16 caractères. Le stockage des données de localisation (points d'intérêt et position du véhicule) s'effectue sur une carte SD.

Réalisation

Le montage est constitué de trois parties principales :

  • une carte à Atmega8
  • un récepteur GPS RoyalTek RGM-3600
  • une carte SD destinée à recevoir les coordonnées des POIs

Deux cartes ont été réalisées.

La carte à Atmega (version 1)

La carte a Atmega n'a rien d'original. Elle comporte un régulateur 5V destiné à alimenter le récepteur GPS et le microcontroleur, et ne alimentation 3.3V destinée à alimenter la carte SD.

La carte utilise un Atmega328. En effet, le recours aux calculs en virgule flottante consomme quasiment toute la flash d'un Atmega8, et il faut encore de l'espace pour intégrer FatFS. (Concernant les options d'édition de liens à utiliser, voir la rubrique dédiée à l'Atmega32, section "Utilisation des flottants".)

Le résultat est le suivant :
Affichage poi simple.jpg

Le récepteur GPS RoyalTek RGM-3600

Voici une photo du récepteur GPS :

Royaltek rgm3600 photo.jpg

Ce récepteur est alimenté en 5V. Il dispose d'une interface série au niveau RS232 (et non TTL...) dont voici le brochage

Royaltek rgm3600 connector.jpg

A noter que RX signifie "Réception par le récepteur GPS". De la même manière, "TX" signifie "transmission par le récepteur GPS".

Afin de pouvoir recevoir les données en provenance du RoyalTek (qui les émet à 19200 Bps), l'Atmega est configuré à 8MHz sur son oscillateur interne. A 1Mhz (fréquence par défaut), le bit rate souffre d'une trop grande erreur et la communication ne fonctionne pas.

Une fois alimenté, le récepteur envoie périodiquement des messages NMEA. Pour pouvoir être connectés aux broches RX et TX de l'Atmega, les signaux de niveaux RS232 doivent être convertis en signaux TTL. C'est le rôle d'un MAX233. Le MAX233 est une version "améliorée" du fameux MAX232 en ce sens qu'il n'a besoin d'aucun composant externe (hors une capa. de découplage d'alimentation).

La carte SD

Système de fichier ou pas ?

Deux possibilités :

  • ne pas mettre en oeuvre de système de fichier, ce qui simplifie l'écriture du logiciel embarqué mais pose problème pour accéder au contenu de la carte à partir d'un PC ;
  • mettre en oeuvre un système de fichier simple et reconnu par un PC, tel le FAT32.

J'opte pour la deuxième solution, notamment parce qu'il existe une bibliothèque FAT32 libre destinée aux microcontroleurs (AVR, LPCXXX, etc.) : FATFS. Je l'ai déjà utilisé pour réaliser mon [lecteur MP3 à base de PIC32MX].

L'utilisateur n'a qu'à écrire les quelques routines d'accès en lecture et écriture à la carte (niveau matériel). C'est d'autant plus simple que la bibliothèque vient avec quelques exemples, notamment pour la plateforme AVR. Si on utilise la carte en écriture, il est de bon ton de disposer d'une horloge temps-réel. Ca tombe bien car la trame GPS GPGGA comporte justement une indication de temps UTC.

L'adaptation des niveaux

La carte SD est alimentée en 3.3V alors que l'Atmega est alimenté en 5V : une conversion de niveau est nécessaire. On trouvera dans la rubrique intitulé interconnexion 5V / 3.3V diverses techniques pour réaliser cette conversion.

Dans une première version, dans le sens 5V vers 3.3V, j'ai utilisé la technique d'écrêtage, à savoir une diode banchée entre la sortie de l'Atmega et le °3.3V au travers d'une résistance de 1K. Dans le sens inverse, on espère que les signaux 3.3V issus de la carte SD seront bien perçus comme des niveau haut par l'Atmega.

Cette technique ne fonctionne pas car la régulation 3.3V est incapable "d’absorber" les pics de tension induits par l'écrêtage.

Dans une deuxième version, j'ai utilisé à nouveau une diode et une résistance, mais câblées de telle façon que le niveau haut soit obtenu par une résistance de pull-up (10K) et le niveau bas (600mV) par l'Atmega.

C'est à ce stade des opération que j'ai détruit l'Atmega328... Ne disposant pas de 328 de rechange, j'ai utilisé un ATmega8 pour simplement faire l'acquisition de la trame GPS de localisation (GGA), faire la conversion des coordonnées en radians.


Conclusions

(A compléter)

Références

  • Le standard Fat32 est disponible sur le site de Microsoft, ici.
  • Le fonctionnement d'une carte SD est décrit par l'auteur de FatFS, ici
Personal tools