Le Raspberry Pi, lorsqu'il n'est pas relié au réseau internet ne peut pas synchroniser son horloge (date et heure). Ainsi pour un Raspberry Pi isolé, la synchronisation de la date et de l'heure peut se réaliser par la synchronisation par satellites GPS. Sur cet exemple nous utilisons un récepteur GPS avec une connexion USB.

Le récepteur GPS

N'importe quelle tête GPS conviendra, dans la mesure où celui-ci envoi des données au standard NMEA. L'heure et la date sont mises à disposition dans la trame GPRMC Dans notre cas, nous utilisons un modèle VK-162, disponible chez Banggood

Réception des données GPS

Vous pouvez tester si vous recevez les trames NMEA, en utilisant cat et CTRL-C pour quitter:

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

Pour information, la trame GPRMC se décode comme cela.

 $GPRMC,hhmmss.ss,A,llll.ll,a,yyyyy.yy,a,x.x,x.x,ddmmyy,x.x,a*hh
1    = UTC of position fix
2    = Data status (V=navigation receiver warning)
3    = Latitude of fix
4    = N or S
5    = Longitude of fix
6    = E or W
7    = Speed over ground in knots
8    = Track made good in degrees True
9    = UT date
10   = Magnetic variation degrees (Easterly var. subtracts from true course)
11   = E or W
12   = Checksum

Installation du logiciel de mise à l'heure

Télécharger le programme en utilisant git (si vous ne l'avez pas déjà installer le avec la commande sudo apt-get install git):

git clone https://github.com/adamheinrich/gpsdate

Installer le programme en vous rendant dans le repertoire en tapant les commandes suivantes:

cd gpsdate
make all
Maintenant vous pouvez utiliser gpsdate pour mettre à jour l'heure du système. Simplement avec la commande:

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

Mises à jour automatique de l'heure

Pour que le système se mette à jour quotidiennement, nous allons ajouter une commande dans le fichier CRON

sudo crontab -e

Actualisation de l'horloge système tous les jours à 23h30, ajouter la ligne suivante:

30 23 * * * /home/pi/gpsdate/gpsdate /dev/ttyACM0
Vous pouvez quitter en utilisant CTRL-X, O (ou Y si vous êtes en anglais) puis Entrée.