jeudi 15 janvier 2015

Activation des pins I2C du Raspberry Pi

Avant la première utilisation d'un périphérique I2C sur le Raspberry Pi, une petite préparation est nécessaire:  il faut configurer le Raspberry Pi pour activer le protocole I2C.

Dans ce court article, je vous montre comment procéder.


1)  Édition du fichier /etc/modules

Puisque les privilèges de superutilisateur sont nécessaires pour pouvoir éditer ce fichier, on propose habituellement l'utilisation de l'éditeur de texte "nano":

sudo nano /etc/modules



Sauf que l'éditeur de texte "nano" semble avoir été mis au point par un homme de Néandertal qui désirait y consigner les résultats de sa plus récente chasse au mammouth!  On navigue dans le fichier au moyen des flèches du clavier, il faut faire contrôle-O ou F3 pour enregistrer les changements, puis contrôle-X ou F2 pour fermer le fichier... C'est à peu près aussi agréable qu'une visite chez le dentiste.  (Vérification faite, nano aurait plutôt été créé par Chris Allegretta en 1999, bien après la disparition des derniers mammouths.  Bon...)

Tout ça pour dire qu'on peut sans problème éditer ce fichier en mode graphique en utilisant Leafpad,  il faut simplement prendre la précaution de démarrer le logiciel avec les privilèges de superutilisateur.

Pour ce faire, vous commencez par ouvrir "LXTerminal", puis vous tapez:

gksu leafpad /etc/modules






Dans le fichier "modules", il faut ajouter ces deux lignes (à moins qu'elles n'y soient déjà):

     i2c-bcm2708
     i2c-dev


2)  Édition du fichier raspi-blacklist.conf

Il faut aussi s'assurer que le mode i2c n'apparaît pas dans la liste noire.  Les masochistes peuvent le faire avec nano:

sudo nano /etc/modprobe.d/raspi-blacklist.conf

...alors que ceux qui aiment profiter de la vie préféreront peut-être Leafpad, pourvu qu'il ait été ouvert en superutilisateur avec la commande gksu:

gksu leafpad /etc/modprobe.d/raspi-blacklist.conf


À l'intérieur du fichier, si ce n'est pas déjà fait, vous ajoutez le symbole "#" devant la ligne:

blacklist i2c-bcm2708

(si cette ligne n'apparaît pas dans le fichier, ou si le fichier raspi-blacklist.conf n'existe pas, tout est parfait!)


Si vous préférez, vous pouvez aussi faire ce précédent réglage au moyen de raspi-config (c'est pas le choix qui manque!):  vous faites alors "sudo raspi-config" , vous sélectionnez "8 Advanced Options", puis "A6 I2C").


3)  Installation de i2c-tools

sudo apt-get install python-smbus i2c-tools

4)  Redémarrage du Raspberry Pi

sudo reboot

5)  Vérifications

Suite au redémarrage, on peut vérifier que l'I2C fonctionne en tapant:

sudo i2cdetect -y 1

(ou "sudo i2cdetect -y 0" s'il s'agit du Raspberry Pi modèle A)

...qui vous retourne une réponse de ce genre:

Alors qu'aucun périphérique n'est branché:

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --  


Après branchement d'un accéléromètre MMA7455:

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- UU -- 1d -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --  


...ce qui indique que l'adresse I2C de mon accéléromètre (en hexadécimal) est 1D.

Suite à l'ajout d'un deuxième périphérique:  une horloge temps réel (RTC) DS1307:

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- UU -- 1d -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --    


On voit s'ajouter l'adresse I2C de l'horloge (68) ainsi que de la mémoire (EEPROM) qui lui est associée (50).

Vos périphériques I2C sont maintenant prêts à être utilisés!

Source

Yves Pelletier (Twitter: @ElectroAmateur)

Aucun commentaire:

Enregistrer un commentaire

Related Posts Plugin for WordPress, Blogger...