Modifications

Sauter à la navigation Sauter à la recherche
Ligne 1 : Ligne 1 :  
{{Arduino-I2C-Intro-NAV}}
 
{{Arduino-I2C-Intro-NAV}}
 +
 +
== Le minimum d'anglais ==
 +
Dans le monde technique il est difficile de se passer de l'anglais. Cette documentation est certes en français mais reconnaître les 4 mots clés suivants sera certainement utile.
 +
 +
* Master = Maître (celui qui tient le fouet et organise son petit monde à sa guise)
 +
* Slave = Esclave (celui qui obéit sans discuter... sinon coup de fouet assuré  ;-) )
 +
* Read/Reader = Lire/Lecture
 +
* Write/Writer = Ecrire/Ecriture
    
== Communiquer en coordination ==
 
== Communiquer en coordination ==
Ligne 20 : Ligne 28 :  
=== Concepts importants ===
 
=== Concepts importants ===
 
Pour réguler le dialogue, il faut comprendre quelques concepts simples.
 
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.  
+
Les assimiler vous permettra de comprendre plus facilement les tenants et les aboutissants du bus I2C.
   −
Ces concepts sont :
+
S'il y a plusieurs informations de premiers plans, les concepts suivants restent certainement les plus importants:  
 
* Le concept de "maître et esclave"
 
* Le concept de "maître et esclave"
 +
* Le principe d'adressage (adresse unique pour chaque esclave).
 
* Le concept de régulation de communication comme "Master Reader" et "Master Writer"
 
* Le concept de régulation de communication comme "Master Reader" et "Master Writer"
   Ligne 43 : Ligne 52 :  
''Exemple à titre indicatif issus de notre tutoriel sur [[ADF-LED-BACKPACK|les contrôleurs LEDs]]''   
 
''Exemple à titre indicatif issus de notre tutoriel sur [[ADF-LED-BACKPACK|les contrôleurs LEDs]]''   
   −
=== L'adressage ===
+
== 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.
 
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.
+
Sur un bus I2C, le maître envoi un ordre du genre: "Hep, Numéro 3, lecture de 6 octets!" (''pour lire la 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.
 
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".
+
=== L'adressage Logiciel ===
 +
C'est le cas le plus simple, celui d'un module programmable comme Arduino, Rapsberry Pi, MBed, etc.
 +
 
 +
En effet, un Arduino se programme et s'il est raccordé sur un bus en tant qu'esclave alors il peut choisir n'importe quelle adresse valide.
 +
 
 +
Cette adresse est "encodée" dans le programme.
 +
 
 +
=== L'adressage Matériel ===
 +
Pour les composants pré-assemblés (comme les senseurs I2C) ne sont pas "programmable" comme un Arduino.
 +
 
 +
Les composants disposent donc d'une adresse prédéfinie qu'il est généralement possible de la modifier sensiblement en soudant/pontant des "jumpers".
    
[[Fichier:ADF-LED-BACKPACK-ARD-01.jpg|300px]]<br />  
 
[[Fichier:ADF-LED-BACKPACK-ARD-01.jpg|300px]]<br />  
Ligne 57 : Ligne 76 :  
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
   −
=== Une seul esclave à la fois? ===
+
== Communiquer... avec un 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.
    +
== Faire communiquer ==
 
=== Arduino et réseaux de senseurs ===
 
=== Arduino et réseaux de senseurs ===
 
Il est possible de connecter un Arduino et plusieurs senseurs sur un réseau I2C.  
 
Il est possible de connecter un Arduino et plusieurs senseurs sur un réseau I2C.  
Ligne 71 : Ligne 91 :  
Certains senseurs dit "intelligents" ou "évolués" nécessitent plusieurs opérations avant d'obtenir la réponse attendue... dans ce cas, un concept plus évolué comme celui du "registre" est utilise.
 
Certains senseurs dit "intelligents" ou "évolués" nécessitent plusieurs opérations avant d'obtenir la réponse attendue... dans ce cas, un concept plus évolué comme celui du "registre" est utilise.
   −
=== Des Arduinos ensembles ===
+
=== Des Arduino ensembles ===
 
Il est bien entendu possible de connecter plusieurs Arduino sur un seul bus I2C (chacun disposant d'une adresse I2C unique).
 
Il est bien entendu possible de connecter plusieurs Arduino sur un seul bus I2C (chacun disposant d'une adresse I2C unique).
   Ligne 89 : Ligne 109 :     
Pour être précis, le nom complet de ce concept est "Master Reader/Slave Sender" (le maître lit et les esclaves envoient/parlent).
 
Pour être précis, le nom complet de ce concept est "Master Reader/Slave Sender" (le maître lit et les esclaves envoient/parlent).
 +
 +
{{ambox | text = L'acquisition de donnée (lecture) se présente sous la forme '''d'une demande de lecture en précisant la taille de la réponse'''. Le maître doit donc savoir quel est la taille de la réponse attendue... ce qui est prévisible puisqu'il sait quel est le type de senseur à l'adresse #3 et que par conséquent il sait aussi quelle réponse il obtiendra! (''voir "protocole" ci-dessous'')}}
    
== Le concept "Master Writer" ==
 
== Le concept "Master Writer" ==
Ligne 113 : Ligne 135 :  
Cela se présentait sous la forme:  
 
Cela se présentait sous la forme:  
   −
  ''le maître envoi un ordre du genre: "Hep, Numéro 3, lecture de 6 octets!" (''pour lire la température'') et le numéro 3 répond docilement en renvoyant la température mesurée.''
+
  Le maître envoi un ordre du genre: "Hep, Numéro 3, lecture de 6 octets!" (''pour lire la température'')<br />et l'esclave numéro 3 répond docilement en renvoyant la température mesurée.
    
Il va de soit que "''lecture de température!''" n'est pas le message envoyé tel quel sur le bus I2C et que l'esclave ne répond pas "17.5°C" sous cette forme.
 
Il va de soit que "''lecture de température!''" n'est pas le message envoyé tel quel sur le bus I2C et que l'esclave ne répond pas "17.5°C" sous cette forme.
29 917

modifications

Menu de navigation