Volver

Escáner I2C para Pico: Encuentra Dispositivos en el Bus

Introducción

I2C (Inter-Integrated Circuit) es un protocolo de comunicación popular que permite a los microcontroladores comunicarse con sensores, pantallas y otros periféricos usando solo dos cables: SDA (datos) y SCL (reloj). Pero cuando estás prototipando, a menudo no conoces la dirección exacta de un nuevo dispositivo I2C. Ahí es donde un escáner I2C resulta útil. Sondea todas las direcciones posibles en el bus e informa cuáles responden.

En este tutorial, construiremos un escáner I2C para la Raspberry Pi Pico usando el simulador en navegador Velxio. Aprenderás a cablear un circuito simple con dos LEDs indicadores, escribir el código de escaneo en Arduino C++ e interpretar los resultados. ¡Sin necesidad de hardware, solo tu navegador!

Diagrama del circuito del escáner I2C para Pico en el lienzo del simulador Velxio

Explicación del Circuito

Nuestro circuito es mínimo pero instructivo. Usaremos dos LEDs para proporcionar retroalimentación visual durante el escaneo:

Ambos LEDs comparten una conexión común a tierra con el pin GND.1 de la Pico. El bus I2C en sí mismo usa los pines predeterminados: SDA = GP4 y SCL = GP5. No se necesitan resistencias de pull-up externas porque las resistencias de pull-up internas de la Pico son habilitadas por la librería Wire.

Para construir este circuito en Velxio:

  1. Abre el selector de componentes desde la barra de herramientas del lienzo. Selector modal de componentes de Velxio navegando por piezas por categoría
  2. Añade una placa Raspberry Pi Pico.
  3. Añade dos LEDs (azul y verde) desde la categoría de Salida.
  4. Conéctalos como se describe: GP12 → ánodo del LED azul, GP10 → ánodo del LED verde, ambos cátodos → GND.
  5. Usa la barra de herramientas del lienzo para hacer zoom y organizar los componentes de forma ordenada. Barra de herramientas del lienzo de Velxio sobre la ventana de simulación

Explicación del Código

Ahora vamos a sumergirnos en el código. Abre el editor de código en Velxio y pega el siguiente 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);
}

Cómo Funciona

Para compilar y ejecutar, haz clic en el botón compilar en la barra de herramientas del editor. Barra de herramientas del editor de Velxio con controles de compilación y ejecución

Conceptos Clave

Errores Comunes y Consejos de Depuración

Extensiones Sugeridas

¡Pruébalo Tú Mismo!

¿Listo para escanear el bus I2C? Abre el ejemplo en vivo en Velxio y empieza a experimentar:

Inicia el Escáner I2C para Pico en Velxio

Sin descargas, sin soldaduras, solo simulación pura. Modifica el código, añade nuevos componentes y ve los resultados al instante. ¡Feliz escaneo!


Compartir en:
David Montero

Escrito por

David Montero

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

GitHub velxio.dev

Artículos relacionados


Artículo anterior
Leer un RTC DS1307 virtual con Raspberry Pi Pico I2C
Artículo siguiente
Control LED por Serie con Pico: Construye tu Primera Interfaz de Comandos