Retour

Scanner I2C Pico : Trouver des périphériques sur le bus

Introduction

I2C (Inter-Integrated Circuit) est un protocole de communication populaire qui permet aux microcontrôleurs de dialoguer avec des capteurs, des écrans et d’autres périphériques en utilisant seulement deux fils : SDA (données) et SCL (horloge). Mais lors du prototypage, on ne connaît souvent pas l’adresse exacte d’un nouveau périphérique I2C. C’est là qu’un scanner I2C devient utile. Il sonde toutes les adresses possibles sur le bus et rapporte celles qui répondent.

Dans ce tutoriel, nous allons construire un scanner I2C pour le Raspberry Pi Pico en utilisant le simulateur en ligne Velxio. Vous apprendrez à câbler un circuit simple avec deux LED indicatrices, à écrire le code de balayage en Arduino C++ et à interpréter les résultats. Aucun matériel nécessaire — juste votre navigateur !

Schéma du circuit du scanner I2C Pico sur le canevas du simulateur Velxio

Présentation du circuit

Notre circuit est minimal mais instructif. Nous utiliserons deux LED pour fournir un retour visuel pendant le balayage :

Les deux LED partagent une connexion de masse commune avec la broche GND.1 du Pico. Le bus I2C lui-même utilise les broches par défaut : SDA = GP4 et SCL = GP5. Aucune résistance de tirage externe n’est nécessaire car les résistances de tirage internes du Pico sont activées par la bibliothèque Wire.

Pour construire ce circuit dans Velxio :

  1. Ouvrez le sélecteur de composants depuis la barre d’outils du canevas. Fenêtre modale du sélecteur de composants Velxio parcourant les pièces par catégorie
  2. Ajoutez une carte Raspberry Pi Pico.
  3. Ajoutez deux LED (bleue et verte) depuis la catégorie Sortie.
  4. Câblez-les comme décrit : GP12 → anode LED bleue, GP10 → anode LED verte, les deux cathodes → GND.
  5. Utilisez la barre d’outils du canevas pour zoomer et disposer les composants proprement. Barre d'outils du canevas Velxio au-dessus de la fenêtre de simulation

Explication du code

Plongeons maintenant dans le code. Ouvrez l’éditeur de code dans Velxio et collez le sketch suivant :

// Raspberry Pi Pico — I2C Scanner
// Scans I2C bus (Wire / I2C0: SDA=GP4, SCL=GP5) for devices

#include <Wire.h>

void setup() {
  Serial.begin(115200);
  delay(500);
  Wire.begin(); // SDA=GP4, SCL=GP5 by default on Pico
  Serial.println("=== Pico I2C Scanner ===");
  Serial.println("Default I2C0: SDA=GP4, SCL=GP5");
  Serial.println();
}

void loop() {
  Serial.println("Scanning I2C bus...");
  int found = 0;

  for (byte addr = 1; addr < 127; addr++) {
    Wire.beginTransmission(addr);
    byte error = Wire.endTransmission();

    if (error == 0) {
      found++;
      Serial.print("  Device found at 0x");
      if (addr < 16) Serial.print("0");
      Serial.print(addr, HEX);

      // Identify known addresses
      switch (addr) {
        case 0x48: Serial.print(" (Temperature sensor)"); break;
        case 0x50: Serial.print(" (EEPROM)"); break;
        case 0x68: Serial.print(" (DS1307 RTC)"); break;
        case 0x27: Serial.print(" (LCD backpack)"); break;
        case 0x3C: Serial.print(" (SSD1306 OLED)"); break;
        default: break;
      }
      Serial.println();
    }
  }

  Serial.print("Scan complete. Found ");
  Serial.print(found);
  Serial.println(" device(s).");
  Serial.println();
  delay(5000);
}

Comment ça fonctionne

Pour compiler et exécuter, cliquez sur le bouton compiler dans la barre d’outils de l’éditeur. Barre d'outils de l'éditeur Velxio avec les contrôles de compilation et d'exécution

Concepts clés

Pièges courants et conseils de débogage

Extensions suggérées

Essayez par vous-même !

Prêt à balayer le bus I2C ? Ouvrez l’exemple en direct dans Velxio et commencez à expérimenter :

Lancez le scanner I2C Pico sur Velxio

Pas de téléchargement, pas de soudure — juste de la pure simulation. Modifiez le code, ajoutez de nouveaux composants et voyez les résultats instantanément. Bon balayage !


Partager sur :
David Montero

Écrit par

David Montero

Creator of Velxio, the open-source circuit and Arduino simulator.

GitHub velxio.dev

Articles liés


Article précédent
Lire une RTC DS1307 virtuelle avec le Raspberry Pi Pico en I2C
Article suivant
Contrôle de LED par liaison série sur Pico : créez votre première interface de commande