HOWTO · Arduino

Sélection des broches pour I2c sur un Arduino Uno

Cet article détaillera la broche requise pour le bus de communication I2C.

Sur cette page

Sur un Arduino Uno, reliez la ligne SDA d’un appareil I2C à A4 et sa ligne SCL à A5. Reliez les masses de l’appareil et de la carte, alimentez l’appareil conformément à ses besoins, puis initialisez le bus dans un sketch Arduino avec la bibliothèque Wire. Les marquages et la disposition peuvent varier selon la carte : vérifiez ceux de votre Uno avant de réaliser le câblage.

Broches I2C de l’Arduino Uno

Sur l’Uno, SDA correspond généralement à A4 et SCL à A5. Certaines références de broches désignent aussi ces signaux par PC4 (SDA) et PC5 (SCL) ; sur l’Uno, les repères analogiques A4 et A5 sont les points de connexion pratiques. Certaines cartes Uno comportent également des broches marquées SDA et SCL. Ces repères transportent les mêmes signaux du bus : ils ne constituent pas un second bus I2C.

Rôle de SDA et SCL

I2C utilise deux lignes de signal. SDA transporte les données série entre le contrôleur et les appareils connectés, tandis que SCL transporte le signal d’horloge qui synchronise les échanges. Tous les appareils du bus sont reliés aux mêmes lignes SDA et SCL. Suivez les repères pour associer chaque signal à la bonne broche : inverser les deux lignes empêche les appareils de communiquer comme prévu.

Câbler un appareil I2C à l’Arduino Uno

Carte hors tension, reliez la broche A4/SDA de l’Uno à la broche SDA de l’appareil, et A5/SCL à sa broche SCL. Reliez GND sur l’Uno à GND sur l’appareil afin qu’ils partagent une référence commune. Raccordez l’entrée d’alimentation de l’appareil uniquement à une tension acceptée par ce module. Ne supposez pas que tous les appareils I2C acceptent 5 V : vérifiez leurs marquages ou leur documentation et, si leur tension logique n’est pas compatible avec l’Uno, utilisez un convertisseur de niveau adapté.

Les lignes I2C nécessitent généralement des résistances de rappel. De nombreux modules en intègrent déjà ; consultez donc d’abord leur documentation ou leur circuit. Si le bus ne dispose pas de résistances de rappel adaptées, ajoutez-en une entre SDA et l’alimentation logique du bus, et une autre entre SCL et cette alimentation. Une valeur d’environ 4,7 kΩ constitue un point de départ courant, mais pas une règle universelle : la vitesse du bus, le câblage et les appareils influent sur la valeur appropriée. Évitez d’ajouter plusieurs résistances de rappel de faible valeur sans vérifier le circuit dans son ensemble.

Initialiser I2C avec la bibliothèque Wire

L’IDE Arduino inclut la bibliothèque Wire pour I2C. Ajoutez-la au sketch avec #include <Wire.h>, puis appelez Wire.begin(); dans setup() pour initialiser l’Uno en tant que contrôleur du bus. Cette étape initialise le bus ; à elle seule, elle ne lit pas un capteur et ne confirme pas qu’un appareil est connecté. Le code propre à l’appareil doit utiliser l’adresse I2C ainsi que la séquence de registres ou de commandes indiquées dans sa documentation.

Dans un sketch Arduino, la ligne concernée est Wire.begin();. Cet exemple dépend du matériel et n’a pas été exécuté par l’hôte : le paquet fourni ne contient aucun résultat d’exécution pour une chaîne d’outils Arduino ou un Uno connecté. Un programme qui utilise Wire.h nécessite également le cœur Arduino et la configuration de la carte.

Vérifier les repères de la carte et dépanner les connexions

Si un appareil ne répond pas, vérifiez les points suivants dans l’ordre :

  1. Vérifiez que SDA est relié à SDA (A4 sur l’Uno) et SCL à SCL (A5) ; corrigez tout croisement de fils.
  2. Vérifiez que les masses de l’Uno et de l’appareil sont reliées et que l’appareil reçoit la tension d’alimentation spécifiée.
  3. Vérifiez la présence des résistances de rappel et assurez-vous qu’elles sont reliées à une tension logique tolérée par les deux appareils. Ne considérez pas 4,7 kΩ comme une valeur fixe adaptée à tous les bus.
  4. Consultez la documentation de l’appareil pour vérifier son adresse et la séquence de communication. Wire.begin() démarre le bus, mais ne sélectionne pas l’adresse d’un appareil.
  5. Lisez les repères de broches propres à la carte. Si elle comporte des broches SDA/SCL, utilisez-les comme les mêmes signaux I2C ; ne déduisez pas sa disposition à partir d’une autre révision de l’Uno.