I2C-Hacking-Bus-Multiple

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

Introduction

Dédoubler le bus I2C!!!! C'est quoi cette histoire loufoque?

Oui, c'est possible. Comme Arduino n'utilise pas de système d'exploitation, nous avons un énorme avantage... C'est notre Arduino étant le maître du bus (voir nos autre tuto I2C), c'est notre appel de fonction I2C qui lancera l'émission des données sur le bus I2C.

Il n'y a donc rien qui circule sur le bus I2C si Arduino n'en fait pas de demande I2C spécifique.

Le principe du Hack

Ha ha! Génial... s'il n'y a rien qui circule sur le bus... rien ne nous empêche d'enlever les deux fils de notre Bus I2C pour les brancher sur un autre bus en parallèle puis de relancer notre programme.

Le données circulent alors sur le 2ième bus... (le premier étant inactif)

La mise en oeuvre

Dans la réalité, nous n'allons pas nous amuser à retirer et rebrancher des fils... nous allons utiliser un composant qui fera cela à demande pour nous.

Nous pourrons ainsi contrôler ("aiguiller") les signaux I2C entre les différents sous Bus I2C que nous allons monter.

Le 74HC138

Le 74HC138 est un décodeur qui accepte une adresse 3 bits (A0, A1 et A3) et qui active l'une des 8 sorties (Y0 à Y7) correspondante.

La sortie Y0 à Y7 activée passe à LOW... et toutes les sorties sont mutuellement exclusives. Vous ne risquez pas d'avoir deux sorties actives en même temps.

La sortie Yx et activée uniquement si le module est est activé (ligne Enable). Le 74HC138 dispose de 3 entrées d'activation enable; deux d'entre-elles (E1 et E2) sont active à LOW et la troisième (E3) est active à HIGH.

Toutes les sorties sont maintenues à HIGH sauf si E1 & E2 sont à LOW ET E3 est à HIGH. Ces multiples lignes d'activation facilite beaucoup l'utilisation des 74HC138 en parallèle; de 1-à-32 (décodeur de 5 lignes à 32 lignes) avec 4 74HC138.

Une particularité de ce composant est qu'il est super rapide... une aubaine pour le transport de notre signal I2C.

74HC138-01.jpg 74HC138-02.jpg

74HC138-03.jpg

  • H: Niveau Haut
  • L: Niveau bas (0v)
  • X: Le niveau n'a aucune influence

Fiche technique (NXP.com, pdf, anglais)

Montage

Les amoureux de "retour vers le futur" (le films) se souviennent certainement du tableau de bord de la Dolorean.

Hé bien, figurez vous qu'AdaFruit en à fait un petit projet... histoire de se distraire (voir cette source, AdaFruit, anglais).

I2C-Hacking-Bus-Multiple-01.jpg
Crédit: AdaFruit Industries www.adafruit.com

Il est possible de reconstruire un tel tableau à l'aide d'afficheur 4x7 segment I2C.

Le HIC, c'est qu'il n'y a pas assez d'adresses configurable sur l'afficheur (3bit = 8 adresses) disponible pour brancher TOUS les afficheurs nécessaires (9) sur le bus I2C!

I2C-Hacking-Bus-Multiple-01a.jpg
Crédit: AdaFruit Industries www.adafruit.com

Cependant, grâce au 74HC138, nous allons pouvoir réaliser un "aiguilleur" pour notre bus I2C.

I2C-Hacking-Bus-Multiple-02.jpg
Crédit: AdaFruit Industries www.adafruit.com

Principe de fonctionnement

  1. La ligne de donnée SDA est distribuée sur toutes les lignes du bus I2C. Les différents composants I2C ne lirons les données qui passent que s'ils reçoivent un signal d'horloge I2C (SCL).
  2. Le signal d'horloge est envoyé vers l'une ou l'autre des lignes des sous-bus I2C à l'aide du 74HC138.
  3. Les broches "select" (A0 & A1) du 74HC138 sont commandées par Arduino... ce qui permet de sélectionner l'une des 3 sorties Y0, Y1 ou Y3.
  4. En passant le signal d'Horloge sur les broches E1 & E2 (Enable inversé), on active la sortie Yx (elle aussi inversée).
    Pour résumé... le signal SCL (d'horloge I2C) sera reproduit sur la ligne Y0 ou Y1 ou Y2 en fonction de l'adresse sélectionnée sur les lignes d'adresses A0 et A1.

Voila comment il est possible de dupliquer un bus I2C :-)

Le projet Time Machine

Vous pouvez consulter le projet (code inclus) sur le blog d'AdaFruit.


Réalisé par Meurisse D. pour MCHobby.be.

Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.

L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.