Zurück

Pico I2C Scanner: Geräte auf dem Bus finden

Einleitung

I2C (Inter-Integrated Circuit) ist ein weit verbreitetes Kommunikationsprotokoll, das es Mikrocontrollern ermöglicht, mit Sensoren, Displays und anderen Peripheriegeräten über nur zwei Leitungen zu kommunizieren: SDA (Daten) und SCL (Takt). Aber beim Prototyping kennt man oft die genaue Adresse eines neuen I2C-Geräts nicht. Hier kommt ein I2C-Scanner ins Spiel. Er testet jede mögliche Adresse auf dem Bus und meldet, welche antworten.

In diesem Tutorial bauen wir einen I2C-Scanner für den Raspberry Pi Pico mit dem Velxio-Browser-Simulator. Du lernst, wie du eine einfache Schaltung mit zwei Anzeige-LEDs aufbaust, den Scan-Code in Arduino C++ schreibst und die Ergebnisse interpretierst. Keine Hardware nötig – nur dein Browser!

Schaltplan des pico-i2c-scanners auf der Velxio-Simulator-Leinwand

Schaltungsaufbau

Unsere Schaltung ist minimal, aber lehrreich. Wir verwenden zwei LEDs, um während des Scans visuelles Feedback zu geben:

Beide LEDs teilen sich eine gemeinsame Masseverbindung zum GND.1-Pin des Pico. Der I2C-Bus selbst verwendet die Standard-Pins: SDA = GP4 und SCL = GP5. Es werden keine externen Pull-Up-Widerstände benötigt, da die internen Pull-Ups des Pico von der Wire-Bibliothek aktiviert werden.

Um diese Schaltung in Velxio aufzubauen:

  1. Öffne die Komponentenauswahl über die Symbolleiste der Leinwand. Velxio Komponentenauswahl-Modal zum Durchsuchen von Teilen nach Kategorie
  2. Füge ein Raspberry Pi Pico-Board hinzu.
  3. Füge zwei LEDs (blau und grün) aus der Kategorie Ausgabe hinzu.
  4. Verdrahte sie wie beschrieben: GP12 → blaue LED-Anode, GP10 → grüne LED-Anode, beide Kathoden → GND.
  5. Verwende die Symbolleiste der Leinwand, um Komponenten zu zoomen und ordentlich anzuordnen. Velxio Symbolleiste der Leinwand über dem Simulations-Viewport

Code-Durchlauf

Jetzt tauchen wir in den Code ein. Öffne den Code-Editor in Velxio und füge den folgenden Sketch ein:

// 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);
}

Wie es funktioniert

Zum Kompilieren und Ausführen klicke auf die Schaltfläche Kompilieren in der Editor-Symbolleiste. Velxio Editor-Symbolleiste mit Kompilieren- und Ausführen-Steuerelementen

Wichtige Konzepte

Häufige Fallstricke & Debugging-Tipps

Vorgeschlagene Erweiterungen

Probier es selbst aus!

Bereit, den I2C-Bus zu scannen? Öffne das Live-Beispiel in Velxio und beginne zu experimentieren:

Starte den Pico I2C Scanner auf Velxio

Keine Downloads, kein Löten – nur reine Simulation. Ändere den Code, füge neue Komponenten hinzu und sieh die Ergebnisse sofort. Viel Spaß beim Scannen!


Teilen auf:
David Montero

Geschrieben von

David Montero

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

GitHub velxio.dev

Ähnliche Artikel


Vorheriger Artikel
Virtuelle DS1307 Echtzeituhr mit Raspberry Pi Pico I2C auslesen
Nächster Artikel
Pico Serial LED Steuerung: Baue deine erste Befehlschnittstelle