Skip to content
Leowrin edited this page Dec 19, 2021 · 11 revisions

Principe général

Le RaspberryPi est connecté à un capteur barométrique ainsi qu'à un module GPS. Le module GPS est utilisé pour enregistrer la position(N, E) et la vitesse du vélo, et le capteur barométrique est utilisé pour mesurer la variation d'altitude du vélo au cours du temps. Ces données sont enregistrées puis utilisées pour calculer le travail fournit par le cycliste, ainsi que la puissance délivrée à chaque instant.

Principe de fonctionnement

Un script python (logger.py) se lance au boot du RaspberryPi, il tourne en boucle infinie. Lorsque l'utilisateur met à terre le pin GPIO 16 (par défault), le programme enregistre les données GPS et barométriques toutes les secondes. Lorsque l'utilisateur déconnecte le pin du GND, le programme enregistre toutes les données sur un fichier logged_data.csv dans la structure suivante : /home/pi/bikecomputer/logs/<DATE>/logged_data.csv.

Une fois les données enregistrées, l’exécutable gps est lancé. C'est lui qui calcule toutes les informations nécessaires, tel que les déplacements, la puissance, l'énergie etc.. Il crée un fichier nommé computed_data.csv qui contient toutes les données nécessaires à la prochaine étape.

C'est finalement plotter.py qui est lancé, il met sous forme de graphe les données calculées à l'étape précédente.

Acquisition des données

Le RaspberryPi est connecté à un module GPS NEO-6M via protocole UART. La fréquence de transmission de base est de 1Hz, elle est gardée, car utile pour faciliter les calculs. Donc à chaque seconde, le RaspberryPi reçoit un message du NEO-6M (avec ou sans position GPS acquise) sous la norme NMEA 0183. Cela lui donne le tempo pour échantillonner la pression atmosphérique grâce au capteur barométrique BMP280, avec lequel il communique via protocole I2C. Le module GPS a donc un rôle d'horloge. Si un signal GPS est acquis, les degrés-minutes reçus sont convertis en degrés-décimaux. Ces degrés sont ensuite enregistrés avec la pression.

Fichiers enregistrés

logged_data.csv

variable latitude longitude altitude GPS pression
numéro de colonne [i] 0 1 2 3

(correspond à la matrice coordinates dans logger.py)

computed_data.csv

nom de variable dans le code C lv95X deltaX lv95Y deltaY deltaPos distance (altitude GPS)* deltaHGPS powergGPS workgGPS deltaHPres powergPres workgPres power sumEnergy altimetry
numéro de colonne 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

*n'est pas utilisée dans compute.c