Configuration logiciel

Activation de l'I2C

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

1. /etc/modules

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
[...]

2. /etc/modprobe.d/raspi-blacklist.conf

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
[...]

3. /boot/config.txt

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
[...]

4. Testons

À 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 :

0x4A
Le capteur de température optionnel (TMP100)
0x68
Horloge temps réel (DS1307)
0x6A
Convertisseur analogique / numérique 1 (MCP3424)
0x6E
Convertisseur analogique / numérique 0 (MCP3424)

Du côté de Python

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)

Utiliser les GPIO depuis la console

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.

Utilisation de l'horloge temps réel depuis la console

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