Le bus de données i2c permet d’échanger des données numériques entre un capteur (ou un actionneur) et un mini-PC tel que le Raspberry Pi. Le bus i2c est très répandu également sur les micro-contrôleurs (Arduino, ESP8266, ESP32).
Tutoriel actualisé le 1er mai 2020
Par défaut (sécurité), le bus i2c n’est pas activé sur la distribution Raspbian. On peut l’activer directement depuis les préférences du système ou depuis le Terminal à l’aide de l’utilitaire de configuration raspi-config.
Sommaire
Si vous avez choisi d’installer Raspbian Buster avec une interface graphique, ouvrez le menu Préférences
puis lancez Pi Configuration
.
On active le bus I2C en cliquant sur Enable. Cliquez sur OK pour enregistrer la modification. Redémarrez Raspbian pour activer le bus I2C.
Activer le bus i2c avec l’outil raspi-config
Pour des projets qui ne nécessitent pas d’interface graphique (projets robotique à base de Raspberry Pi Zero par exemple), le bus I2C est géré à l’aide de l’utilitaire raspi-config sur Raspbian.
Connectez-vous en SSH (lire ce tutoriel pour apprendre comment faire) ou ouvrez un Terminal puis lancez l’outil de configuration de Raspbian.
sudo raspi-config
Choisissez l’option (5) Interfacing Options
Puis dans la liste l’option (P5) I2C. Activez en choisissant YES. No pour désactiver.
Il est nécessaire de redémarrer le Raspberry Pi pour prendre en compte la modification.
sudo reboot
Installer les outils i2c
Tout d’abord, faites une mise à jour du système.
sudo apt update sudo apt upgrade -y
Une fois le système mis à jour, lancez l’installation les outils permettant de communiquer avec les périphériques i2c en Python (python-smbus) et les outils de diagnostic (i2c-tools).
sudo apt-get install -y python-smbus i2c-tools
L’installation terminée, on peut déjà tester si les modules sont bien chargés
pi@raspberrypi:~ $ lsmod | grep i2c_ i2c_bcm2835 6433 0 i2c_dev 6642 0
Vous devez le module i2c_bcm2708 (ou i2c_bcm2835 sur le Raspberry Pi Zero W), c’est que les modules ont été correctement chargés.
Broches i2c sur le GPIO du Raspberry
Les broches i2c se trouvent sur les broches 3 (SDA) et 5 (SCL).
Si vous débutez avec le Raspberry Pi, je vous conseille de vous procurer un adaptateur pour breadboard (T-Cobber) sur lequel les broches sont déjà repérées. La broche 1 du GPIO est symbolisée par un carré.
Brancher et tester un périphérique i2c au Raspberry Py
Pour éviter toute détérioration de votre Raspberry Pi, il est impératif d’éteindre le système avec la commande sudo halt et débrancher l’alimentation électrique.
Pour illustrer ce tutoriel, j’ai capteur de luminosité BH1750 (GY-302 de CJMCU) présenté dans cet article. N’importe quel autre capteur i2c pourra faire l’affaire. Par défaut, le BH1750 possède l’adresse 0x23.
Vérifier l’adresse du périphérique avec i2cdetect
La commande i2cdetect permet de connaitre l’adresse du périphérique sur le bus i2c. Le bus i2c permet de connecter jusqu’à 255 appareils. En fonction de la version du Raspberry Pi, la commande est différente. Pour les Pi 3 et Pi 2 (modèles A, B, B+) et le Pi Zero, exécutez
sudo i2cdetect -y 1
Pour les anciens modèles, exécutez
sudo i2cdetect -y 0
En cas d’erreur, vous obtiendrez le message suivant
Error: Could not open file `/dev/i2c-0' or `/dev/i2c/0': No such file or directory
Voici ce que vous devriez obtenir. Le BH1750 se trouve bien à l’adresse prévue.
pi@raspberrypi:~ $ sudo i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- 23 -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
Voilà, tout est prêt pour utiliser des capteurs i2c dans vos programmes python, C++ ou Node-RED.
Avez-vous aimé cet article ? [Total: 1 Moyenne: 5]