= RTC sur Raspberry Pi =

nan-cook   165 832 aiment

Raspberry Pi/RTC

Installer une horloge temps réel (RTC)

Une des particularités du Raspberry Pi est qu'il perd le nord, ou plutôt la date et l'heure, lorsque qu'on coupe l'alimentation. Pour prévenir cela, 2 options sont possibles :

  • connecter le Raspberry Pi à Internet et installer le package ntp (Network Time Protocol)
  • installer une module horloge temps réel aussi appelé RTC (Real Time Clock)

Pour la petite histoire, le coût d'une RTC semblait prohibitif aux yeux des designers du Raspberry Pi et ils ont donc fait l'impasse. Vous trouverez cependant des modules RTC additionnels entre 1,50 et 3 € pour les plus précis, prix livré de l'autre bout de la planète pour un achat à l'unité ! Il semble donc étrange que l'ajout d'une RTC en usine (une fraction du prix d'un module additionnel) ait pu sembler si extrême. En vérité, pour la grande majorité des utilisateurs, ça ne fait guère de différence qu'il y ait une RTC ou pas et j'aurais préféré cette explication à celle du coût.

Installation

J'ai personnellement choisi le module DS3231, plus précis dans le temps que le DS1307.

Allumez votre Raspberry Pi et entrez votre pseudo et le mot de passe : utilisez un compte administrateur ! Personnellement j'ai un peu tendance à me connecter comme "root"...

Assurez-vous que votre Rasberry Pi est bien à jour et chargez les paquets I2C nécessaires (j'utilise aptitude si ce n'est pas votre cas changez les commandes avec apt-get) :

aptitude update && aptitude dist-upgrade
aptitude install rpi-update
aptitude install i2c-tools libi2c-dev

Vous serez probablement appelé à faire un reboot ou deux : pas de panique ! C'est normal. Reconnectez-vous avec un compte administrateur.

Si c'est le premier module I2C que vous utilisez sur votre Raspberry Pi, il faut dire à ce dernier que vous voulez utiliser l'I2C qui est désactivé par défaut :

  • éditez le fichier modules : sudo nano /etc/modprobe.d/raspi-blacklist.conf
  • changez blacklist i2c-bcm2708 en #blacklist i2c-bcm2708
  • sauvegardez le fichier : Ctrl O, Entrée puis Ctrl X

Mon fichier raspi-blacklist.conf ressemble à ça :

# blacklist spi and i2c by default (many users don't need them)
# blacklist spi-bcm2708
# blacklist i2c-bcm2708


  • éditez le fichier modules : sudo nano /etc/modules
  • ajoutez i2c-dev dans le fichier (ou supprimez le #)
  • ajoutez rtc-ds1307 dans le fichier (ou supprimez le #, et, oui c'est bien ds1307 qu'il faut saisir même avec une RTC ds3231)
  • sauvegardez le fichier : Ctrl O, Entrée puis Ctrl X

Mon fichier modules ressemble à ça :

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.

snd-bcm2835
i2c-dev
rtc-ds1307


Par prudence, éteignez votre Raspberry pi avant de connecter le module :

shutdown -h now

et retirez l'alimentation.

Il est temps de connecter le module au Raspberry Pi. Ce module fonctionne sur le bus I2C. Les broches de ce bus sont disponibles sur le connecteur à 26 broches du Raspberry Pi. Il faut brancher les points suivants :

  • 1. la broche SDA du module à la broche SDA0 (n° 3) du connecteur GPIO du Raspberry Pi
  • 2. la broche SCL du module à la broche SCL0 (n° 5) du connecteur GPIO du Raspberry Pi
  • 3. la broche GND du module à la broche GND (n° 6) du connecteur GPIO du Raspberry Pi
  • 4. la broche VCC du module à la broche 3.3V (n° 1) du connecteur GPIO du Raspberry Pi

Vérifiez le câblage puis re-vérifiez. Vous pouvez allumer le Raspberry Pi maintenant en rebranchant l'alimentation puis connectez vous avec un compte administrateur.

Vérifiez que le module RTC est bien reconnu :

  • sudo i2cdetect -y 1 (ou -y 0 i vous avez une "vieille" version du Raspberry Pi)

Si tout va bien vous devriez voir quelque chose comme ça :

__- 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
00: __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __
10: __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __
20: __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __
30: __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __
40: __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __
50: __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __
60: __ __ __ __ __ __ __ __ 68 __ __ __ __ __ __ __
70: __ __ __ __ __ __ __ __

68 est l'adresse à laquelle se trouve le module RTC sur le bus I2C. En théorie on peut mettre plein de modules sur le bus I2C mais en pratique on est souvent limité par ce que peut fournir le Raspberry Pi comme courant.

On charge le module rtc-ds1307

modprobe rtc-ds1307

puis on fait en sorte que la RTC soit prise en charge lors du boot en éditant le fichier /etc/rc.local :

  • Raspberry V1 ajoutez les 2 lignes suivantes :

echo ds3231 0x68 > /sys/class/i2c-adapter/i2c-'''0'''/new_device
/sbin/hwclock -s

  • Raspberry V2 ajoutez les 2 lignes suivantes :

echo ds3231 0x68 > /sys/class/i2c-adapter/i2c-'''1'''/new_device
/sbin/hwclock -s

et on fait un peu de ménage (j'avais installé NTP avant d'avoir une RTC)

update-rc.d -f fake-hwclock remove
update-rc.d -f ntp remove

On redémarre le Raspberry Pi, on se reconnecte et on met la RTC à l'heure (ne recopiez pas verbatim, mettez les bonnes date et l'heure !) :

shutdown -r now
hwclock -r
rm -f /etc/localtime
ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtime # à adapter à votre situation
hwclock --set --date "22 Mar 2002 13:17:48"
/sbin/hwclock --systohc


Au prochain boot, si tout s'est bien passé i2cdetect doit vous indiquer "UU" à l'adresse 0x68 et la date et l'heure doivent être correctes.

__- 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
00: __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __
10: __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __
20: __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __
30: __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __
40: __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __
50: __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __
60: __ __ __ __ __ __ __ __ UU __ __ __ __ __ __ __
70: __ __ __ __ __ __ __ __

Voilà, c'est fini !



Sites Officiels : Mairie  | Office du Tourisme

Autres : Contacts  | Chine  | WWII  | Divers

Ce site n'utilise que les cookies strictement nécessaires à son fonctionnement. Aucun cookie d'analyse n'est enregistré.
L'intégralité du site est soumis au Code de la propriété intellectuelle. Aucune reproduction, totale ou partielle n'est autorisée sans accord préalable.
Le téléchargement "en masse" des pages de ce site est interdit. No "mass" downloading of pages allowed.