Accueil > Matériel, Raspberry > Activer la prise en charge du bus I2C

Activer la prise en charge du bus I2C

Le bus I2C est un bus de communication série qui permet de relier plusieurs composants entre eux. Les échanges ont toujours lieu entre un seul maître et un (ou tous les) esclave(s), toujours à l’initiative du maître (jamais de maître à maître ou d’esclave à esclave). Cependant, rien n’empêche à un composant de passer du statut de maître à esclave et réciproquement.

La connexion est réalisée par l’intermédiaire de 2 lignes :

  • SDA (Serial Data Line) : ligne de données bidirectionnelle,
  • SCL (Serial Clock Line) : ligne d’horloge de synchronisation bidirectionnelle.
  • Cependant, il ne faut pas oublier la masse qui doit être commune aux équipements sans laquelle ça ne fonctionnerait pas.

Il existe 5 vitesses de transmission :

  • « Standard mode » ≤ 100 kbit/s,
  • « Fast mode » ≤ 400 kbit/s,
  • « Fast plus mode » ≤ 1 Mbit/s,
  • « High-speed mode » ≤ 3,4 Mbit/s,
  • « Ultra-fast mode » ≤ 5 Mbit/s.

Le bus étant synchrone, le maître impose l’horloge via la ligne SCL.

Voilà pour la présentation du bus I2C; maintenant regardons ce qu’il y a à effectuer côté Raspberry.

Par défaut sur la dernière Raspbian, le bus I2C n’est pas pris en charge; il est nécessaire d’effectuer quelques étapes pour activer le bus I2C :

1/ Editer le fichier /etc/modprobe.d/raspi-blacklist.conf :

image

Mettre en commentaire la ligne concernant i2C, comme à l’écran puis sauvegarder le fichier.

2/ Editer le fichier /etc/modules :

image

Ajouter la ligne ‘i2c-dev’ et sauvegarder le fichier. Cela permet de prendre en compte I2C après chaque redémarrage.

3/ Ensuite il faut installer le module I2C et également le module python qui permet de gérer le bus I2C en effectuant les commandes suivantes :

apt-get update
apt-get install i2c-tools
apt-get install python-smbus

4/ Ajouter l’utilisateur ‘pi’ au groupe ‘i2c’ si nécessaire (pour ma part je travaille en tant que root) :

adduser pi i2c

5/ Redémarrer en tapant la commande ‘reboot’.

Pour tester la prise en charge du bus I2C, taper la commande suivante :

image

On ne voit aucun périphérique car je n’ai rien de branché.

Attention pour le modèle révision B (512 Mo), le périphérique utilisé est /dev/i2c-1 donc il faut utiliser le port 1 (- y 1); pour l’ancienne génération de Raspberry (256 Mo), le périphérique utilisé est /dev/i2c-0 donc il faut utiliser le port 0.

Les ports d’E/S GPIO utilisés pour la communication I2C seront les suivants :

Numéro de PIN

Référence

3 GPIO 0 – SDA
5 GPIO 1 – SCL
6 GND

J’ai commandé un module de température qui utilise le port I2C; un prochain article montrera comment utiliser ce bus en Python.

Publicités
Catégories :Matériel, Raspberry Étiquettes : , ,
  1. Aucun commentaire pour l’instant.
  1. No trackbacks yet.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :