戻る

Pico I2C スキャナー:バス上のデバイスを検出する

はじめに

I2C(Inter-Integrated Circuit)は、マイクロコントローラがセンサー、ディスプレイ、その他の周辺機器とわずか2本の配線(SDA(データ)とSCL(クロック))で通信できる、人気のある通信プロトコルです。しかし、プロトタイピング中は、新しいI2Cデバイスの正確なアドレスがわからないことがよくあります。そんなときに便利なのがI2Cスキャナーです。バス上のすべての可能なアドレスをプローブし、応答があったものを報告します。

このチュートリアルでは、Velxio のブラウザ内シミュレーターを使用して、Raspberry Pi Pico 用のI2Cスキャナーを構築します。2つのインジケーターLEDを使った簡単な回路の配線方法、Arduino C++でのスキャンコードの書き方、結果の解釈方法を学びます。ハードウェアは不要で、ブラウザだけでOKです!

Velxio シミュレーターキャンバス上の pico-i2c-scanner の回路図

回路の解説

私たちの回路は最小限ですが、教育的です。スキャン中に視覚的なフィードバックを与えるために、2つのLEDを使用します。

両方のLEDは、PicoのGND.1ピンへの共通グランド接続を共有します。I2Cバス自体はデフォルトのピン SDA = GP4SCL = GP5 を使用します。WireライブラリによってPicoの内部プルアップが有効になるため、外部プルアップ抵抗は必要ありません。

Velxioでこの回路を構築するには:

  1. キャンバスツールバーから コンポーネントピッカー を開きます。 カテゴリ別に部品を参照する Velxio コンポーネントピッカーモーダル
  2. Raspberry Pi Pico ボードを追加します。
  3. 出力カテゴリから2つのLED(青と緑)を追加します。
  4. 説明の通りに配線します:GP12 → 青色LEDアノード、GP10 → 緑色LEDアノード、両方のカソード → GND。
  5. キャンバスツールバー を使用して、コンポーネントをズームおよび整列させます。 シミュレーションビューポート上の Velxio キャンバスツールバー

コードの解説

それではコードを見ていきましょう。Velxioでコードエディターを開き、次のスケッチを貼り付けます:

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

仕組み

コンパイルして実行するには、エディターツールバーの コンパイル ボタンをクリックします。 コンパイルと実行のコントロールがある Velxio エディターツールバー

主要な概念

よくある落とし穴とデバッグのヒント

推奨される拡張機能

自分で試してみよう!

I2Cバスをスキャンする準備はできましたか?Velxioでライブサンプルを開いて、実験を始めましょう:

Velxio で Pico I2C スキャナーを起動する

ダウンロードもはんだ付けも不要、純粋なシミュレーションだけです。コードを変更し、新しいコンポーネントを追加して、結果を即座に確認できます。ハッピースキャニング!


共有:
David Montero

執筆者

David Montero

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

GitHub velxio.dev

関連記事


前の記事
Raspberry Pi Pico I2Cで仮想DS1307 RTCを読み取る
次の記事
PicoシリアルLED制御:初めてのコマンドインターフェース構築