Dans de nombreux projets Arduino, les modules et capteurs I2C sont devenus incontournables : écrans LCD, horloges RTC, platine PCF8575, extensions diverses, etc…
Pour pouvoir les utiliser correctement dans un programme Arduino, il est indispensable de connaître leur adresse I2C.
Or, cette information n’est pas toujours clairement indiquée dans la documentation, et certains modules peuvent même changer d’adresse selon leur configuration.
Pour répondre à ce besoin, la section Modélisme de l’UAICF-Nevers-Vauzelles a réalisé un scanner I2C basé sur un Arduino Uno. Le projet est proposé en téléchargement et comprend :
- le programme Arduino,
- le schéma au format PDF,
- le schéma électronique réalisé avec Eagle,
- les fichiers Gerber permettant la fabrication d’un circuit imprimé (PCB).
Présentation
Ce projet a pour but de :
- détecter automatiquement les équipements connectés sur le bus I2C;
- afficher leur adresse I2C via le port série ou un écran LCD 16×2 ;
- fournir une solution fiable et réutilisable pour tous les projets Arduino ;
- proposer un circuit imprimé prêt à fabriquer.
Une fois l’adresse connue, il suffit de la reporter dans un autre programme Arduino utilisant le module concerné.
Un simulateur est proposé en ligne : https://wokwi.com/projects/452841896087981057
Pour le simulateur en ligne, il n’a pas été inséré le potentiomètre pour régler la luminosité de l’écran LCD 16×2. Un interrupteur a été positionné pour simuler la connexion ou pas d’un module I2C, ici un écran LCD 20×4. Pour cet exemple, le module I2C a l’adresse hexadécimale « 0x27 ».
Principe de fonctionnement
Le bus I2C fonctionne avec seulement deux lignes :
- SDA : données
- SCL : horloge
L’Arduino Uno interroge successivement toutes les adresses possibles du bus I2C (de 1 à 127).
Lorsqu’un équipement répond, son adresse est affichée dans le moniteur série ou sur l’écran LCD.
Le programme utilise la bibliothèque standard Wire, fournie avec l’IDE Arduino.
Matériel utilisé
La section Modélisme a créé une platine à connecter directement sur la carte Arduino UNO. Il est mis en oeuvre :
- une carte Arduino Uno ;
- un écran LCD 16×2 avec un potentiomètre pour régler l’affichage ;
- une LED est une résistance pour vérifier la mise sous tension de la carte ;
- différents connecteur pour relier le module I2C en fonction du type de module.
Utilisation
L’utilisation du scanner I2C est simple et ne nécessite que quelques étapes.
Téléverser le programme Arduino
- Ouvrir l’IDE Arduino
- Charger le programme du scanner I2C
- Sélectionner la carte Arduino Uno
- Choisir le port série correspondant
- Téléverser le programme dans l’Arduino
Une fois le téléversement terminé, l’Arduino est prêt à scanner le bus I2C.
Connecter le ou les modules I2C
Connecter le ou les équipements I2C sur le bus en respectant les polarités :
- SDA → ligne de données I2C
- SCL → ligne d’horloge I2C
- VCC → 5V
- GND → masse
Plusieurs connecteurs I2C sont proposés en fonction du module. Les bornes sont placées dans le même ordre.
Plusieurs modules peuvent être connectés simultanément sur le même bus I2C, à condition qu’ils aient des adresses différentes.
Ouvrir le moniteur série
- Ouvrir le moniteur série de l’IDE Arduino
- Régler la vitesse de communication à 9600 bauds
Les adresses des équipements détectés sur le bus I2C s’affichent automatiquement dans le moniteur série et sur l’écran LCD.
Fichiers Gerber
À partir du schéma et du routage sous Eagle, les fichiers Gerber ont été générés. Ces fichiers permettent :
- la fabrication du PCB par un fabricant professionnel
- l’auto-production du circuit imprimé
Les fichiers Gerber incluent :
- couches cuivre
- sérigraphie
- masque de soudure
- perçages
Le circuit est conçu pour être compact et facile à souder, même pour les débutants.

