L'I2C est un bus de données permettant la communication entre périphériques, il est utilisé par RaspiO'Mix+ pour l'horloge et le convertisseur analogique / numérique.
Informations traduites de Configuring I2C
Commençons par activer l'I2C en nous assurant que le fichier /etc/modules contienne i2c-bcm2708 et i2c-dev et que ces derniers ne soit pas mis en commentaire (précédé par un #)
Votre fichier devrait ressembler à cela :
$ cat /etc/modules # /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. i2c-bcm2708 i2c-dev [...]
Selon votre distribution, il est possible que le chargement du module i2c-bcm2708 soit bloqué, pour vous en assurer, vous devez ouvrir le fichier /etc/modprobe.d/raspi-blacklist.conf (si il existe sinon, sautez cette étape) et commenter la ligne blacklist i2c-bcm2708 si elle existe.
Vous devriez obtenir quelque chose comme cela :
$ cat /etc/modprobe.d/raspi-blacklist.conf # blacklist spi and i2c by default (many users don't need them) blacklist spi-bcm2708 #blacklist i2c-bcm2708 [...]
Si vous utilisez un kernel récent (supérieur à 3.18), vous devez modifier le fichier /boot/config.txt afin d'activer l'I2C grâce aux 2 lignes suivantes :
$ cat /boot/config.txt [...] dtparam=i2c1=on dtparam=i2c_arm=on [...]
À partir de là, un petit reboot s'impose, une fois effectué, vous pouvez tester l'I2C grâce à la commande i2cdetect (sudo apt-get install i2c-tools si elle n'est pas présente)
$ i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- 4a -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- 68 -- 6a -- -- -- 6e -- 70: -- -- -- -- -- -- -- --
Le test ci-dessus à été réalisé sur un RaspiO'Mix+ et nous indique la présence de 4 périphériques I2C :
La librairie Python Raspiomix à besoin de 2 dépendances pour fonctionner Rpi.GPIO et smbus, pour les installer, voici 2 solutions :
Via le gestionnaire de paquet pip :
$ sudo pip install RPi.GPIO smbus
Ou en utilisant les paquets Raspbian :
$ sudo apt-get install python3-rpi.gpio python3-smbus
Ensuite, téléchargez simplement le fichier Python suivant via GitHub : raspiomix.py et vous pouvez directement l'utiliser :
from raspiomix import Raspiomix r = Raspiomix() print "La tension est de %f Volt !" % r.readAdc(0)
Python n'est pas un passage oligatoire, vous pouvez parfaitement utiliser directement le shell pour piloter les entrées / sorties. Consultez par exemple l'article de Christophe Blaess à ce sujet : Les GPIO du Raspberry Pi.
Informations traduites de Set RTC Time
$ sudo modprobe rtc-ds1307
Si vous avez un RaspberryPi rev 1 :
$ echo ds1307 0x68 | sudo tee /sys/class/i2c-adapter/i2c-0/new_device
Si vous avez un RaspberryPi rev 2 :
$ echo ds1307 0x68 | sudo tee /sys/class/i2c-adapter/i2c-1/new_device
Lire l'horloge :
$ sudo hwclock -r
Écrire l'heure du système dans l'horloge :
$ sudo hwclock -w