Indietro

Scanner I2C per Pico: Trova Dispositivi sul Bus

Introduzione

I2C (Inter-Integrated Circuit) è un popolare protocollo di comunicazione che permette ai microcontrollori di dialogare con sensori, display e altre periferiche usando solo due fili: SDA (dati) e SCL (clock). Ma quando si prototipa, spesso non si conosce l’indirizzo esatto di un nuovo dispositivo I2C. È qui che uno scanner I2C torna utile. Esplora ogni possibile indirizzo sul bus e segnala quali rispondono.

In questo tutorial, costruiremo uno scanner I2C per il Raspberry Pi Pico usando il simulatore in-browser Velxio. Imparerai come cablare un semplice circuito con due LED indicatori, scrivere il codice di scansione in Arduino C++ e interpretare i risultati. Nessun hardware necessario — solo il tuo browser!

Schema circuitale dello scanner I2C per Pico sul canvas del simulatore Velxio

Spiegazione del Circuito

Il nostro circuito è minimale ma istruttivo. Useremo due LED per fornire feedback visivo durante la scansione:

Entrambi i LED condividono una connessione di massa comune al pin GND.1 del Pico. Il bus I2C stesso utilizza i pin predefiniti: SDA = GP4 e SCL = GP5. Non sono necessari resistori di pull-up esterni perché i pull-up interni del Pico sono abilitati dalla libreria Wire.

Per costruire questo circuito in Velxio:

  1. Apri il selettore componenti dalla barra degli strumenti del canvas. Finestra modale del selettore componenti Velxio che sfoglia parti per categoria
  2. Aggiungi una scheda Raspberry Pi Pico.
  3. Aggiungi due LED (blu e verde) dalla categoria Output.
  4. Collegali come descritto: GP12 → anodo LED blu, GP10 → anodo LED verde, entrambi i catodi → GND.
  5. Usa la barra degli strumenti del canvas per zoomare e disporre i componenti ordinatamente. Barra degli strumenti del canvas Velxio sopra il viewport di simulazione

Spiegazione del Codice

Ora immergiamoci nel codice. Apri l’editor di codice in Velxio e incolla il seguente sketch:

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

Come Funziona

Per compilare ed eseguire, clicca sul pulsante compile nella barra degli strumenti dell’editor. Barra degli strumenti dell'editor Velxio con controlli di compilazione ed esecuzione

Concetti Chiave

Insidie Comuni e Suggerimenti per il Debug

Estensioni Suggerite

Provalo Tu Stesso!

Pronto a scansionare il bus I2C? Apri l’esempio live in Velxio e inizia a sperimentare:

Avvia lo Scanner I2C per Pico su Velxio

Niente download, niente saldatura — solo pura simulazione. Modifica il codice, aggiungi nuovi componenti e vedi i risultati istantaneamente. Buona scansione!


Condividi su:
David Montero

Scritto da

David Montero

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

GitHub velxio.dev

Articoli correlati


Articolo precedente
Leggere un RTC DS1307 Virtuale con Raspberry Pi Pico I2C
Articolo successivo
Controllo LED Seriale su Pico: Crea la Tua Prima Interfaccia a Comandi