Antoine CAVARD

L'objectif de ce projet est d'enregistrer des trames NMEA brutes à partir d'une carte de réception GPS. J'ai fait le choix d'une interface minimaliste avec une diode rouge et un bouton poussoir. Ce programme aborde la programmation parallèle en python.


1 Matériel

1.2 Équipements

Ce dont vous aurez besoin :

knolling
Knolling

1.2 Le câblage du récepteur GPS au RPI

Il faut être attentif aux connexions RX et TX:

  • connectez la broche TX du GPS à la broche RX du RPI
  • connectez la broche RX du GPS à la broche TX du RPI

wiring
Câblage

1.3 Détail du schéma électronique

Valeur de la résistance pour le montage de la diode :
Il est couramment admis que les diodes standards fonctionnent bien avec une résistance 100 fois supérieure à la tension fournie. Donc j’utilise dans mon montage une résistance de 330ohm, pour une tension de 3.3v

Montage du bouton poussoir :
La résistance de tirage (pull-up), permet d’avoir une tension haute ou basse bien nette de sorte que le RPI puisse lire la valeur en entrée sans ambiguïté.

Le condensateur :
Lors d’un appui sur le bouton il y une création de signaux parasites induits, donc on ajoute un condensateur pour améliorer la qualité du signal du bouton poussoir. Quand on appuie sur le bouton, le condensateur se décharge de manière maîtrisée et ainsi le signal est filtré.

Résistances de protection limitation de courant : La broche GPIO 4 peut être initialisée dans le programme en tant que sortie ou en tant qu’entrée.
Le but de la résistance de protection est de protéger la broche GPIO si elle est définie accidentellement comme une sortie plutôt que comme une entrée.

schema.jpg Schéma

Nomenclature :

Réf schématique Description Valeur
J1 raspberry pi
J2 recepteur neo6m
SW1 bouton poussoir
D1 diode 5mm
C1 condensateur 100 nF
R1 resistance 10 kohm
R2 resistance 1 kohm
R3 resistance 330 ohm

2 Logiciel

2.1 Dépendances

  • python 2.7
  • python-serial

2.2 Installation

Pour lancer l’application au démarrage :

  • copier le fichier app.py dans le répertoire /home/pi/
  • creer un fichier raspberry-pi-gps-logger.service dans le répertoire /lib/systemd/system/
  • exécutez les lignes de commande suivantes : systemctl start raspberry-pi-gps-logger et systemctl enable raspberry-pi-gps-logger

Fichier raspberry-pi-gps-logger.service :

[Unit]
Description=Data recorder
After=multi-user.target

[Service]
Type=idle
ExecStart=/usr/bin/python /home/pi/app.py

[Install]
WantedBy=multi-user.target

2.3 Usage

  • au démarrage du programme la diode clignotement rapide, le programme attente une action sur le bouton poussoir.
  • un appui court sur le bouton poussoir :
    • déclenche l’enregistrement des trames NMEA, la diode reste allumée
    • ou met en pause l’enregistrement, la diode clignote lentement
  • un appui long sur le bouton poussoir arrête le programme
  • pour relancer le programme, vous devez redémarrer le Raspberry pi

Pour visualiser les données enregistrées, vous devez convertir le .nmea en .gpx
Vous pouvez utiliser la commande suivante :
gpsbabel -i nmea -f file-in.nmea -o gpx -F file-out.gpx

Remerciements

martinohanlon/pelmetcam/pelmetcam.py

Code source

Le code source est accessible sur Github : https://github.com/Pinaute/raspberry-pi-gps-logger/blob/master/app.py