Synchronisez la date et l’heure de votre Raspberry PI avec un GPS

Le temps et le Raspberry PI

Le Raspberry PI ne dispose pas d’horloge interne. A chaque arrêt, la date et l’heure sont sauvegardées dans un fichier qui est lu au prochain démarrage.

Si vous ne disposez pas de connexion internet, vous ne pourrez pas mettre à jour la date et l’heure de votre Raspberry.

En réalité, vous pourrez toujours forcer une date et une heure, mais elle sera approximative. L’intérêt du GPS est de disposer d’une reference de temps fiable.

(Lorsque l’on dispose d’une connexion internet, le système est mis à jour grâce aux serveurs de temps NTP)

Mode opératoire : Installation d’un GPS sur le port série du Raspberry PI

Matériel utilisé : Un GPS fabriqué par U-Blox : BN 880
1/ Désactivez la console série du Raspberry PI via le menu de configuration du Raspberry PI
2/Connectez-vous au Raspberry PI en SSH (ou VNC si vous préférez)
Pour SSH : ssh [nom de l’utilisateur]@[adresse ip du raspberry]
Ex : ssh pi@192.168.1.34
3/ Sur le PI 3, le bluetooth utilise le port série, il faut désactiver le bluetooth (d’autres options sont possibles mais non testées)
Il faut permuter les E/S des deux UART. Pour cela, ajoutez à /boot/config.txt : dtoverlay = pi3-disable-bt
Puis supprimer : console=serial0,115200  dans cmdline.txt
=> Si tout va bien en faisant un ls -l /dev vous devriez retrouver un port serial0 qui pointe vers ttyAMA0.
4/ Connectez le GPS sur le port série (UART)
TX du BN-880 vers RX du Raspberry
RX du BN-880 vers TX du Raspberry

 

5/ Installez la dernière version de gpsd sur le raspberry (la couche logicielle qui permet de récupérer les trames GPS et de fournir des service GPS à des applications = Essentiel)
Récupérez les sources sur Releases GPSD
NE PAS utiliser les anciennes versions qui sont encore sur les dépôts (via apt-get install), car des bugs empêchent le bon fonctionnement avec ce type de gps (les données ne sont pas valides = donc on ne peut rien faire)
Apres décompression du dossier, ouvrez le fichier build.txt pour installer gpsd en suivant les instructions.
Apres avoir installé gpsd, vous devriez pouvoir afficher ceci :
en lançant la commande : gpsmon
 
6/ Créez un script de mise à jour de la date et l’heure :
Depuis la console, créez un fichier avec l’extension sh.
Ex : nano synchrogps.sh
Copiez / collez le contenu :
date -s ’01/01/2014 00:01′
sleep 1
pkill ntpd
pkill gpsd
gpsd -b -n -D 2 /dev/ttyAMA0
sleep 2
GPSDATE=`gpspipe -w | head -10 | grep TPV | sed -r ‘s/.* »time »: »([^ »]*) ».*/\1/’ | head -1`
echo $GPSDATE
date -s « $GPSDATE »
/usr/sbin/ntpd
 
7/ Tests
Déconnectez le raspberry du réseau de façon à l’empêcher de se connecter à un serveur NTP pour sa mise à jour de la date et de l’heure.
Éteindre le raspberry pendant quelques minutes
Connectez un écran, un clavier, une souris, démarrez le raspberry sans réseau.
Dans un terminal, exécutez :
ex : sudo bash syncgps.sh
Vous devriez avoir ceci :

 SOURCES :

Comments are closed.