TUTO : mise à l'heure Raspberry pi avec GPS

Bonjour,

il existe déjà un article décrivant comment mettre à l'heure le Raspberry pi en utilisant les données GPS , mais je vous propose ici une autre méthode, plus simple à mon sens.

Tout d'abord, je précise que j'ai essayé cette méthode pour récupérer l'heure dans les trames NMEA de mon transpondeur AIS EMTRAK B100 mais sans succès. J'utilise donc, en parallèle du transpondeur AIS, un petit GPS USB. Ce GPS ne sert donc uniquement qu'à la mise à l'heure du Raspberry car OpenCPN et autres utilisent les données venant du transpondeur AIS. Ce petit GPS USB à 20 euros pourra servir en secours en cas de panne de l'AIS.

  • Ouvrez une console de ligne de commande
  • Branchez le GPS USB
  • Tappez la commande : dmesg | tail , vous devriez obtenir un résultat similaire à ceci :


$ dmesg | tail
...
[22625.034377] usb 1-1.1: new full-speed USB device number 9 using ehci_hcd
[22625.128637] cdc_acm 1-1.1:1.0: ttyACM0: USB ACM device

Ici, on voit que c'est le fichier /dev/ttyACM0 qui correspond au GPS USB.
La commande suivante affichera les trames NMEA transmises par le GPS :

$ cat /dev/ttyACM0
$GPRMC,191745.80,V,,,,,,,160314,,,N*7B
$GPVTG,,,,,,,,,N*30

  • Le programme git est normalement installé par défaut dans Raspberry pi OS, sinon tapez : sudo apt-get install git
  • Copiez le contenu du github du programme gpsdate avec la commande suivante : git clone https://github.com/adamheinrich/gpsdate
  • Rendez-vous dans le répertoire créé : cd ./gpsdate
  • Compilez le programme : make all
  • Lancez le programme avec la commande suivante : sudo ./gpsdate /dev/ttyACM0

Vous obtiendrez un résultat similaire à ceci :

$ sudo ./gpsdate /dev/ttyACM0
Local time was: 2014-03-16 20:19:06 (CET)
GPS time is: 2014-03-16 19:19:07 (UTC)
Successfully updated local time.

Comment ça marche :
Parmi les trames NMEA produites par le GPS, la trame $GPRMC contient l'heure et la date UTC. Dès qu'il va trouver une de ces trames dans le fichier /dev/ttyACM0, le programme gpsdata va relever la date et l'heure et les renseigner à l'horloge système. Si vous avez correctement défini votre fuseau horaire dans les préférences système, l'horloge du bureau devrait vous afficher votre heure locale. Vous pouvez choisir de lancer le programme gpsdata manuellement ou également utiliser le programme cron pour qu'il le lance automatiquement régulièrement.

Sources :
www.f5uii.net[...]epteur/
github.com[...]gpsdate
www.cedricaoun.net[...]183.pdf

L'équipage
08 juil. 2020
09 juil. 2020
0

Yes !
La seule chose qui me manquait d'openplotter ; la mise à l'heure !

Merci !


09 juil. 2020
0

Salut,
cool que tu aies vu le post, j'allais t'envoyer un mp, je me rappelais que tu avais ça en cours toi aussi.


09 juil. 202009 juil. 2020
0

Dans OpenPlotter 2.0 il y a la mise à l'heure GPS: Signalk -> Admin -> Plugins -> Mise à l'heure (à peu près, cité de mémoire)

(et je crois qu'il y avait l'option aussi dans OpenPlotter 1.0, mais à un autre endroit)


Fabien83:Oui dans OpenPlotter mais pas dans Raspberry pi OS. Pour mon utilisation en tout cas, OpenPlotter est trop fourni en programmes et fonctionnalités et je préfère un Raspberry pi OS plus simple avec juste OpenCPN et xyGrib (et la mise à l'heure via GPS).·le 09 juil. 12:15
BMayer (LauBen):Comme Fabien. De plus, j'utilise un RPi 2. Raspbian + kplex + (qtVlm / opencpn) y fonctionne sans pb. Openplotter avait du mal... ·le 09 juil. 12:44
stelian:Désolé j'avais mal lu le message "La seule chose qui me manquait d'openplotter" et j'ai interprété "la seule chose qui me manquait sur openplotter...". Ceci étant dit je trouve que OpenPlotter2 est bien plus léger que le 1... Perso j'ai fait plutôt le chemin inverse: j'étais parti sur Raspbian, puis migré sur openplotter...·le 09 juil. 17:07
09 juil. 2020
0

pour ceux qui font de l'astro, l'heure atomique des GPS n'est pas l'heure UTC.


Fabien83:Bonjour, tu as plus d'infos là-dessus ? Je trouve ça un peu curieux.... ·le 09 juil. 16:45
09 juil. 2020
0

Tiens c'est curieux...

Quelles sont les conditions qui nécessitent une mise à l'heure de Pi!?
Quelle version du Pi?

J'ai justement installé le miens hier soir, un Pi4 4Go,Raspbian à jour. Connecté wifi, c'est le premier truc qu'il a fait tout seul comme un grand...


Now:Oui, il se mets à l'heure si il est connecté à internet par WiFi, comme n'importe quel ordinateur, mais sur un bateau, il n'y a pas internet, et donc pas d'heure.·le 09 juil. 15:16
Fabien83:Oui moi aussi j'ai du wifi à bord mais seulement quand je suis en côtier. Une fois hors portée réseau, plus de quoi recaler l'heure sur le Raspberry. ·le 09 juil. 16:47
BMayer (LauBen):Si tu n'as pas de wifi, tu n'as pas l'heure. Les RPi n'ont pas de composant pour stocker (et rafraîchir) l'heure quand ils sont hors tension·le 09 juil. 16:50
Tdr:Haa, ba voila une info qu'elle est interessante.

Merci·le 10 juil. 11:33


09 juil. 2020
2

Merci pour ce tuto.

J'avais installé un petit composant "real time clock" sur le mien, car je n'étais pas parvenu non plus à lui faire prendre l'heure sur les trames NMEA de l'AIS BM track qui sert aussi de GPS.

C'est un peu moins cher qu'un GPS supplémentaire et installé en interne sur les GPIO du Pi (donc un câble de moins) De plus, le GPS doit être installé de façon à bien capter (ce qui n'est pas un soucis sur un bateau en polyester, mais pas forcement immédiat selon ou est le Pi) mais bon, ça ne fait pas GPS de secours et en plus l'heure du GPS est forcément bien plus fiable.


Fabien83:Bonjour Now, tu es donc exactement dans le même cas de figure que moi, pas moyen d'avoir une trame GPRMC complète dans ce que sort l'EMtrak B100. Je ne comprends pas d'où vient le problème. A moins de faire de grandes traversées, en effet une horloge avec une pile doit largement suffire. Bonne idée. ·le 09 juil. 16:54
09 juil. 2020
0

Personnellement, vu que mon récepteur/transmetteur AIS (que j'ai pas encore d'ailleurs) peut être allumé ou éteint (vu la conso électrique supplémentaire, je préfère l'allumer uniquement quand j'ai besoin d'AIS), j'ai choisi de ne pas me baser sur l'AIS pour avoir les données GPS sur mon PI.

Donc mon GPS principal est un GPS USB. Le PI utilise ce GPS pour la carto et le renvoie aussi à la VHF ASN.


09 juil. 2020
0

Je suis l'auteur de l'article initial sur la synchro horaire avec gpsd/ntpd. L'idée à l'époque était de faire avec des briques systemes "reconnues" mais c'est vrai que c'est une bonne usine à gaz. La solution du petit script à faire tourner périodiquement est plutot interessante. Cela dit, j'utiliserais plutot gpsd en source (si le script le permet) plutot que le port serie direct, car gpsd est capable d'agreger plusieurs sources gps (par exemple un gps usb en plus du gps de l'ais) et produit une couche d'abstraction bienvenue en cas de changement de gps ou de branchement sur un autre port.
L'inconvénient des rtc à trois sous, c'est qu'elles dérivent beaucoup, et que donc, soit il faut les remettre à l'heure régulierement, soit il leur faut une source de synchro , et dans ce cas on retombe sur le probleme initial.


Fabien83:Bonjour, merci pour ce retour et merci pour ton article. En effet, la solution avec gpsd me semble également plus robuste mais je cherchais une solution plus simple à mettre en œuvre et qui suffit amplement dans mon cas de figure (un petit GPS USB que j'avais déjà dans un tiroir et qui reste maintenant branché à demeure). Je pense qu'une petite horloge est intéressante également mais seulement si on se connecte de temps en temps à internet pour la recaler régulièrement. ·le 09 juil. 22:54
Now:Oui, j'avais oublié de le dire, mais je me connecte de temps en temps à internet, via mon téléphone en point d'accès, soit pour faire une mise à jour, soit pour rechercher une doc, ou même pour aller sur H&O , ça suffit à recaler l'heure.
J'avais essayé aussi avec GPSD mais je ne sais plus pourquoi, ça n'avait pas été stable, c'est à dire que ça marchais et puis un jour plus ( sans doute après une mise à jour) et ça ne voulais plus même en reprenant tout du début, mais je n'ai jamais eu le temps approfondir, et donc je n'ai jamais su pourquoi, ·le 09 juil. 23:23
BMayer (LauBen):ATCFrog : Comme toi, je préfère réutiliser de l'existant, donc utiliser ton article. Mais les distributions nous appris à nous méfier, les passages jessy -> stretch -> buster ontchaune eu leur lots de changements / d'incompatibilités, par exemple sur les process de mise à l'heure :-) La simplicité de cet outil est bien séduisante... Et ce sera plutôt kplex que gpsd pour moi :-D·le 09 juil. 23:25
10 juil. 2020
1

Bonsoir, Si jamais la méthode proposée ne marche pas chez quelqu'un, ça arrive, j'en partage une autre qui a marché sur deux Pi de générations différentes sur lesquels j'ai essayé:

  1. suivre ces instructions. terenez.com[...]-temps/

puis pour que cela se lance automatiquement:

  1. suivre uniquement les instructions du dernier paragraphe "Automatiser le tout", de cette page, surement le tuto de ATCFrog. www.hisse-et-oh.com[...]ire-gps

10 juil. 2020
0

En marge du sujet :
Déçu par l'usure des piles et la dérive des composants RTC pour RPi, je m'étais habitué à saisir l'heure à la main dans une console.
En bon fainéant, cela m'a vite ... gonflé.
Vous trouverez dans github.com[...]ateTime un ch'tit bout de programme en Python qui affiche une interface graphique pour saisir date et heure, et mettre à l'heure, juste en regardant une montre :-D .
Faudra que je fasse un peu de doc, notamment pour expliquer comment le lancer automatiquement, au démarrage de la framboise.


10 juil. 2020
0

Merci. Très utile, Stretch met l'horloge CMOS à zéro à chaque démarrage. Dommage que je n'ai pas pensé plus tôt à utiliser l'horloge du gps !


10 juil. 2020
0

Salut,

Personnellement je viens juste de finir une configuration basée sur GPSD et sur Chronyd (chrony est un logiciel similaire à ntpd).

Cela fonctionne par internet quand l'ordinateur de bord est connecté via le partage de connexion du téléphone, et par le GPS quand ce n'est pas le cas.

Je peux partager mes fichiers de configuration si certains sont intéressés!


Goj:c'est bien cela. Avec ntpd je n'y arrivais pas. Avec chronyd j'y suis arrivé du premier coup.·le 12 juil. 01:30
11 juil. 2020
0

Pour ma part je privilégierai une solution du type de celle de atcfrog, à base de gpsd et ntp + chron (ou chrony). Sur le papier semble peut être usine à gaz, mais en réalité plus sain qu'un ./github dont on ne connait ni l'origine ni le mainteneur.
Gpsd est solide et éprouvé, et à passé sans sourciller la transition vers systemd (ce que kplex n'a pas encore tout à fait terminé proprement, mais cela reste mon avis).


BMayer (LauBen):kplex ecrit et lit des logs du nmea qui passe :-) Pas eu de pb pour avoir kplex au boot, bien que je ne l'utilise plus ainsi, j'ai désormais des scripts qui le lance de diverses façons à la demande. J'ai regardé en diagonale le code de gpsdate sur github, ça a l'air secure. Je crois que c'est c que je vais utiliser...·le 11 juil. 01:22
12 juil. 202012 juil. 2020
0

Pourquoi cette méfiance vis à vis de github ? J'espère que BMayer, qui a un github lui aussi, ne le prend pas mal 😁 Aussi je pense que beaucoup de programmes sont sur github avant de se retrouver sur les dépôts une fois matures. Dans le cas de ce programme gpsdate, il ne fait que lire les trames nmea et changer l'heure et date système. Un script bash pourrait très bien faire la même chose. Ça ne me semble pas trop risqué. Sur une machine aussi légère que la mienne (RPi 2), et avec un GPS USB dédié juste faire la mise à l'heure, je trouve plus léger et beaucoup plus simple de lancer ce petit programme manuellement quand je veux faire la mise à l'heure plutôt que d'avoir gpsd et ntpd qui tournent en permanence (et dont l'installation est plus longue).
Cette solution est très peu connue et peut je pense offrir une alternative fiable dans des cas de figures similaires au mien (vieux RPi et besoin d'une mise en œuvre simple). Je ne pense pas qu'il y ait une solution moins bonne que l'autre ou moins fiable que l'autre, ça dépend du cas de figure. Si plusieurs gps, si changement de port par exemple alors la solution d'ATCFrog est plus indiquée.


BMayer (LauBen):Fabien83, c'est très proche de ce que je pense faire. Le GPS est allimentée (via un fusible) dès que les coupes batteries sont sur ON. Quand la framboise est allumée, détection existence de ttyUSB0. Quand OK, alors gpsdate, qui laissera le port disponible après l'avoir utilisé. Quand la navigation démarre lancement manuel de kplex, qui verrouillera le port pour son usage. Après, c'est fin de nav. :-)·le 12 juil. 11:23
Fabien83:Impeccable ! Content que ça te soit utile.·le 12 juil. 11:50

Votre réponse

Merci de contribuer aux réponses sur HISSE ET OH !

Merci de vérifier de bien répondre au sujet. Fournisser des détails sur votre réponse et partager votre expérience et vos recherches !

Mais éviter de …

  • Demander de l'aide ou de répondre à une autre question (utiliser les commentaires dans ce cas).
  • Porter un jugement et manquer de respect dans votre réponse.
  • Pour plus d'information, consulter la FAQ et la Charte de HISSE ET OH !

Déposer un fichier ici ou Cliquer pour envoyer