Différences entre versions de « Arduino I2C Intro-Maître et esclave »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
Ligne 57 : Ligne 57 :
 
Notre tutoriel sur [[ADF-LED-BACKPACK|les contrôleurs LEDs]] explique aussi [[ADF-LED-BACKPACK-I2C-Adresse|comment calculer la nouvelle adresse]]. Vous pourrez consulter ce point plus tard lorsque vous serez familiarisé avec les concepts et premier montages I2C d'Arduino
 
Notre tutoriel sur [[ADF-LED-BACKPACK|les contrôleurs LEDs]] explique aussi [[ADF-LED-BACKPACK-I2C-Adresse|comment calculer la nouvelle adresse]]. Vous pourrez consulter ce point plus tard lorsque vous serez familiarisé avec les concepts et premier montages I2C d'Arduino
  
=== Précision ===
+
=== Une seul esclave à la fois? ===
 
En général, le maître s'adresse à un esclave en particulier. C'est le cas le plus courant et le plus usité sur Arduino.
 
En général, le maître s'adresse à un esclave en particulier. C'est le cas le plus courant et le plus usité sur Arduino.
  
Il n'empêche qu'un maître peut s'adresser à plusieurs esclaves en une seule opération (voir le concept "Master Writer" ci-dessous). Ce cas d'utilisation est plus rare.
+
Il n'empêche qu'un maître peut s'adresser à plusieurs esclaves en une seule opération (voir le concept "Master Writer" ci-dessous). Ce cas d'utilisation est plus rare.
  
 
=== Arduino et réseaux de senseurs ===
 
=== Arduino et réseaux de senseurs ===

Version du 9 mars 2013 à 20:07

Communiquer en coordination

Comme précisé, le bus I2C est utilisé pour permettre à un Arduino de communiquer:

  1. Avec des senseurs (un réseau de senseurs).
  2. Avec des autres Arduino (les Arduino communiquent directement ensembles via le bus I2C).
  3. Avec un ou plusieurs systèmes plus évolués (par exemple,
    un Raspberry Pi... dans ce cas, c'est Arduino qui offre des services au Raspberry).

Un exemple tangible

Imaginez que vous êtes dans une pièce ou tout le monde parle à tords et à travers... et que vous essayez de communiquer avec une personne se trouvant à l'autre bout de cette même pièce. Il ne faut pas être devin pour se rendre compte que la tâche sera compliquée, la compréhension difficile voire peut être le communication totalement impossible dans de telles conditions.

C'est pareil avec un bus I2C. Si tous les senseurs se mettent à émettre des informations à n'importe quel moment et sans aucune retenue, toutes ces informations ("comme des personnes qui parlent") présentent en même temps sur le même bus I2C ("dans une même pièces") empêcheront simplement de capter l'information du senseur avec lequel on désire communiquer ("de comprendre la personne avec l'on désire communiquer").

Concepts importants

Pour réguler le dialogue, il faut comprendre quelques concepts simples. Les assimiler vous permettra d'assimiler plus facilement les tenants et les aboutissants du bus I2C.

Ces concepts sont :

  • Le concept de "maître et esclave"
  • Le concept de régulation de communication comme "Master Reader" et "Master Writer"

Le maître et les esclaves

Pour faciliter la communication, ont met en place une relation de type Maître/Esclave(s) ("Master/Slave" en anglais).

Le principe est simple a comprendre, le Maître donne les ordres que les esclaves exécutent (sans poser de question).

Le Maître s'adresse à l'esclave, donne un ordre que l'esclave exécute. L'esclave fournira (mais pas nécessairement) la réponse à l'ordre.

C'est pareil pour le bus I2C... il y a un Maître (généralement Arduino) qui envoi ses ordres a un des esclaves du bus (généralement les senseurs, sélectionné par son "adresse I2C").

L'esclave (le senseur) exécute l'ordre et renvoient une réponse. Notez qu'il y a généralement une réponse, mais cela n'est pas forcément nécessaire pour certains types d'esclaves.

Voici un exemple démontrant l'utilisation d'un Maître (Arduino) et plusieurs esclaves (les afficheurs) sur un même Bus I2C.

ADF-LED-BACKPACK-MULTI-02.jpg
Exemple à titre indicatif issus de notre tutoriel sur les contrôleurs LEDs

L'adressage

L'adressage sert à identifier chacun des des éléments sur un bus I2C. Lorsque vous branchez un composant, il dispose généralement d'une adresse. Cette adresse est une valeur numérique qui identifie le composant sur le bus.

Sur un bus I2C, le maître envoi un ordre du genre: "Hep, Numéro 3, lecture de température!" et le numéro 3 (qui serait un senseur de température) répond docilement en renvoyant la température mesurée.

Il va de soit qu'il ne faut qu'un seul "numéro 3" qui répondent en même temps sur le bus. C'est pour cela que cette adresse est importante et qu'elle doit aussi être unique sur le bus.

Les composants disposent d'une adresse prédéfinie qu'il est généralement possible de la modifier sensiblement en soudant des "jumpers".

ADF-LED-BACKPACK-ARD-01.jpg
L'exemple issus des contrôleurs LED d'AdaFruit et présentant les "jumpers" A0, A1 et A2 permettant de modifier l'adresse de l'esclave.

Notre tutoriel sur les contrôleurs LEDs explique aussi comment calculer la nouvelle adresse. Vous pourrez consulter ce point plus tard lorsque vous serez familiarisé avec les concepts et premier montages I2C d'Arduino

Une seul esclave à la fois?

En général, le maître s'adresse à un esclave en particulier. C'est le cas le plus courant et le plus usité sur Arduino.

Il n'empêche qu'un maître peut s'adresser à plusieurs esclaves en une seule opération (voir le concept "Master Writer" ci-dessous). Ce cas d'utilisation est plus rare.

Arduino et réseaux de senseurs

Il est possible de connecter un Arduino et plusieurs senseurs sur un réseau I2C.

Arduino sera le Maître et les senseurs seront les Esclaves. Lorsque l'on s'adresse à un réseau de senseur, il faut utiliser le concept "Master Reader" décrit ci-dessous).

Des Arduinos

Il est bien entendu possible de connecter plusieurs Arduino sur un seul bus I2C (chacun disposant d'une adresse I2C unique).

Dans ce cas, un des Arduino est le Maître du bus I2C et tous les autres sont les esclaves.

Le concept "Master Reader"

Ce concept se traduit littéralement par le "Maître lit". Il est le plus couramment utilisé.

Dans ce concept, le Maître s'adresse a un esclave de son choix et envoi une commande/demande à l'esclave à laquelle il attends une réponse!

Ce concept est pratique pour collecter les informations de différents senseurs.

Pour être précis, le nom complet de ce concept est "Master Reader/Slave Sender" (le maître lit et les esclaves envoient/parlent) .

Le concept "Master Writer"

Le "maître écrit". Ce concept est plus rarement utilisé mais convient bien à des applications spécifiques.

Dans ce concept, le maître écrit/envoi des informations vers de multiples esclaves. Ce concept est bien pratique pour commander différents actionneurs ou répartir des ordres vers les différents éléments physiques (comme, par exemple, les servos moteurs I2C d'un robots).

Bien entendu, dans ce cas de figure, le Maitre n'attend pas réponse de la part des esclaves.

Cette méthode de dialogue présente l'avantage de faire l'économie du temps de transmission et de traitement de la réponse (ce qui peut être important dans certains cas de figure).

Pour être précis, le nom complet de ce concept est "Master Writer/Slave Receiver".


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

Contient également quelques images et exemples d'Arduino.cc, droits et copyrights sur ces ressources restant bien évidement à Arduino.cc.

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.