Blog

← Retour

Plusieurs modules avec même adresse I2C sur Raspberry Pi

Connecter plusieurs modules ayant une même adresse I2C

Le bus I2C est prévu pour faire fonctionner 128 périphériques (7 bits d’adresses) . Cependant, lorsque l’adresse d’un module est « en dur » sur celui-ci et qu’il est impossible de la modifier, on ne peut pas relier plusieurs modules sur un même bus I2C.

Dans mon cas, des écrans OLED possèdent l’adresse 0x68, et il n’y a pas de jumpers à l’arrière du PCB pour en modifier l’adresse. On peut donc relier un seul et unique module par bus. Or je ouhaite connecter 5 modules à un raspberry dans le cadre du projet cerberus.

Heureusement, Il est possible sur raspberry pi de déclarer des bus I2C en plus de celui disponible de base (broches 3 et 5).

Choix de la Numérotation

Les bus 0 et 2 sont réservés.

Toujours déclarer en premier le bus avec le numéro le plus haut, et le bus 3 en dernier.

Par exemple pour 3 bus supplémentaires, l’ordre sera : 5 4 3

Mise en place des bus

sudo nano /boot/config.txt

Dans la section précédée par ce commentaire :

#Uncomment some or all of these to enable the optional hardware interfaces

Ajouter les lignes suivantes (numéro des pins en BCM):

dtoverlay=i2c-gpio,bus=5,i2c_gpio_delay_us=1,i2c_gpio_sda=5,i2c_gpio_scl=6
dtoverlay=i2c-gpio,bus=4,i2c_gpio_delay_us=1,i2c_gpio_sda=23,i2c_gpio_scl=24
dtoverlay=i2c-gpio,bus=3,i2c_gpio_delay_us=1,i2c_gpio_sda=17,i2c_gpio_scl=27

On aura donc :

  • bus 5 sur les GPIO BCM5 et BCM6
  • bus 4 sur les GPIO BCM23 et BCM24
  • bus 3 sur les GPIO BCM17 et BCM27
  • bus 1 sur les GPIO BCM2 et BCM3

Enregistrer, fermer, connectez vos modules sur les nouveaux bus et rebooter le raspberry.

Détection des nouveaux bus

Lancer la détection des bus I2C :

sudo i2cdetect -l

Si vous obtenez :

sudo: i2cdetect: command not found

Installez :

sudo apt-get install i2c-tools

 N’oubliez pas d’activer l’I2C :

sudo raspi-config  # puis choix 5 puis choix P5 et yes

 

Lister les périphériques sur les bus :

sudo i2cdetect -y 5
sudo i2cdetect -y 4
sudo i2cdetect -y 3
sudo i2cdetect -y 1


Les adresses des périphériques devraient s’afficher dans la grille sur les différents bus, sinon vérifier le cablage.

Remarque

Une autre solution est d’utiliser des multiplexeurs, mais la vitesse du bus est alors considérablement réduite. D’autant plus si le nombre de capteurs est important sur le système global. Privilégier l’usage des bus I2C virtuels, si des ports sont disponibles sur votre GPIO.

Source : lien

 

 

About

Le blog d'un passionné d'info et d'électronique. A propos de moi

Newsletter

Si vous souhaitez être avertis des nouveaux articles sur le site

Recent NEWS

Sortie du Raspberry Pi 4
Une nouvelle version gonflée en performances

Plusieurs modules avec même adresse I2C sur Raspberry Pi
Connecter plusieurs modules ayant une même adresse I2C

L'effet conducteur des résidus de flux de soudure
Les effets indésirables des résidus flux sur les circuits imprimés

Contact

SHFNET
Contact
shfnet.fr

Stay Connected

© SHFNET, 2019
Logo SHFNET