Voltar

Scanner I2C Pico: Encontre Dispositivos no Barramento

Introdução

I2C (Inter-Integrated Circuit) é um protocolo de comunicação popular que permite que microcontroladores conversem com sensores, displays e outros periféricos usando apenas dois fios: SDA (dados) e SCL (clock). Mas, durante a prototipagem, muitas vezes você não sabe o endereço exato de um novo dispositivo I2C. É aí que um scanner I2C se torna útil. Ele testa todos os endereços possíveis no barramento e informa quais respondem.

Neste tutorial, vamos construir um scanner I2C para o Raspberry Pi Pico usando o simulador online Velxio. Você aprenderá a montar um circuito simples com dois LEDs indicadores, escrever o código de varredura em Arduino C++ e interpretar os resultados. Nenhum hardware necessário — apenas seu navegador!

Diagrama do circuito do scanner I2C Pico no canvas do simulador Velxio

Montagem do Circuito

Nosso circuito é mínimo, mas instrutivo. Usaremos dois LEDs para fornecer feedback visual durante a varredura:

Ambos os LEDs compartilham uma conexão comum de terra com o pino GND.1 do Pico. O barramento I2C em si usa os pinos padrão: SDA = GP4 e SCL = GP5. Não são necessários resistores de pull-up externos, pois os pull-ups internos do Pico são habilitados pela biblioteca Wire.

Para montar este circuito no Velxio:

  1. Abra o seletor de componentes na barra de ferramentas do canvas. Modal do seletor de componentes do Velxio navegando por peças por categoria
  2. Adicione uma placa Raspberry Pi Pico.
  3. Adicione dois LEDs (azul e verde) da categoria Saída.
  4. Conecte-os conforme descrito: GP12 → ânodo do LED azul, GP10 → ânodo do LED verde, ambos os cátodos → GND.
  5. Use a barra de ferramentas do canvas para ampliar e organizar os componentes de forma organizada. Barra de ferramentas do canvas do Velxio acima da viewport de simulação

Explicação do Código

Agora vamos mergulhar no código. Abra o editor de código no Velxio e cole o sketch a seguir:

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

Como Funciona

Para compilar e executar, clique no botão compilar na barra de ferramentas do editor. Barra de ferramentas do editor Velxio com controles de compilar e executar

Conceitos Principais

Armadilhas Comuns e Dicas de Depuração

Extensões Sugeridas

Experimente Você Mesmo!

Pronto para varrer o barramento I2C? Abra o exemplo ao vivo no Velxio e comece a experimentar:

Inicie o Scanner I2C Pico no Velxio

Sem downloads, sem solda — apenas simulação pura. Modifique o código, adicione novos componentes e veja os resultados instantaneamente. Boa varredura!


Compartilhar em:
David Montero

Escrito por

David Montero

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

GitHub velxio.dev

Artigos relacionados


Artigo anterior
Leia um RTC DS1307 Virtual com I2C no Raspberry Pi Pico
Próximo artigo
Controle de LED via Serial no Pico: Crie Sua Primeira Interface de Comandos