Raspberry Pi Pico: I2C verbinden und testen

I2C oder I²C (I-Quadrat-C) ist die Abkürzung für Inter-Integrated Circuit. Das ist ein synchroner serieller Zweidraht-Bus der Firma Philips Semiconductors. Der Zweidraht-Bus verwendet bidirektionale Daten- und Taktleitungen und wird typischerweise für die Kommunikation zwischen Komponenten auf der selben Platine oder zwischen Platinen benutzt.

Bei der Datenübertragung zwischen Komponenten muss oft mit parallelen Bussen oder Signalleitungen gearbeitet werden, was erheblichen Verkabelungsaufwand bedeutet. Auf einer Platine wird dadurch viel Platz verschwendet. Der I2C reduziert den Aufwand, die Fehlerhäufigkeit und den Platzbedarf auf ein Minimum.

Geräte mit dem I2C verbinden

Der Raspberry Pi Pico hat mehrere I2C-Busse, die statt der digitalen GPIOs konfiguriert werden können. Hierbei ist die Belegung der GPIOs zu beachten, da es auch noch Doppelbelegungen mit SPI und UART gibt.

Der I2C kennt zwei Leitungen. Eine für die Daten, SDA genannt. Die andere ist die Taktleitung, SCL genannt. Desweiteren benötigen die beteiligten Geräte eine Betriebsspannung und eine Verbindung zu Ground (GND).

I2C testen (scannen)

Der folgende Programmcode zum Testen bzw. Scannen des I2C ist sehr einfach. Zuerst werden die GPIO-Pins für I2C und der I2C initialisiert. Und dann wird der I2C-Scan gestartet und das Ergebnis auf dem Display ausgegeben.

# Bibliotheken laden
from machine import Pin, I2C

# Initialisierung I2C
i2c = I2C(0, sda=Pin(20), scl=Pin(21))

# I2C-Bus-Scan ausgeben
print(i2c.scan())

Das Ergebnis ist ein Array mit den Adressen (dezimale Schreibweise) der Geräte, die mit diesem I2C-Bus verbunden sind.

I2C-Geräte mit Adresse anzeigen

Der folgende Programmcode zum Testen bzw. Scannen des I2C-Busses ein wenig komplexer. Allerdings liefert er zusätzliche Informationen.
Zuerst werden die GPIO-Pins für I2C und der I2C initialisiert. Und dann wird der I2C-Scan gestartet und das Ergebnis auf dem Display ausgegeben.

# Bibliotheken laden
from machine import Pin, I2C

# Initialisierung I2C-Pins
i2c_sda = Pin(20)
i2c_scl = Pin(21)

# Initialisierung I2C
i2c = I2C(0,sda=i2c_sda,scl=i2c_scl,freq=100000)

# I2C-Bus-Scan
print('Scan I2C Bus...')
devices = i2c.scan()

# Scanergebnis ausgeben
if len(devices) == 0:
    print('Kein I2C-Gerät gefunden!')
else:
    print('I2C-Geräte gefunden:', len(devices))
    for device in devices:
        print('Dezimale Adresse:', device, '| Hexadezimale Adresse:', hex(device))

Das eigentliche Scan-Ergebnis ist ein Array mit den Adressen der Geräte, die mit diesem I2C-Bus verbunden sind. Die dezimale Schreibweise der Adresse ist bei der Initialisierung der I2C-Geräte selten hilfreich. Deshalb wird zusätzlich noch in die hexadezimale Schreibweise umgerechnet.

Hinweis: Die hexadezimale Adresse wird benötigt, wenn man das Gerät am I2C initialisieren will.

Anwendungen mit dem I2C

Was kann man mit dem I2C alles machen? Grundsätzlich geht es immer darum, externe Komponenten mit dem Raspberry Pi Pico zu verbinden.

Weitere verwandte Themen:

Teilen:

Programmieren mit dem Raspberry Pi Pico
Online-Workshop

Programmieren mit dem Raspberry Pi Pico

Online-Workshop mit einer Einführung ins Physical Computing mit Leuchtdioden, Taster und Temperatursensor.

  • Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython ohne Vorkenntnisse
  • Optimaler Einstieg, um eigene Ideen zu verwirklichen und Steuerungen zu programmieren
  • Inklusive Elektronik-Set mit einem Raspberry Pi Pico, Zubehör und elektronischen Bauteilen

Mehr Informationen Am Online-Workshop teilnehmen

Programmieren mit dem Raspberry Pi Pico
Online-Workshop

Programmieren mit dem Raspberry Pi Pico

Online-Workshop mit einer Einführung ins Physical Computing mit Leuchtdioden, Taster und Temperatursensor.

  • Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython ohne Vorkenntnisse
  • Optimaler Einstieg, um eigene Ideen zu verwirklichen und Steuerungen zu programmieren
  • Inklusive Elektronik-Set mit einem Raspberry Pi Pico, Zubehör und elektronischen Bauteilen

Mehr Informationen Am Online-Workshop teilnehmen

Elektronik-Fibel

Elektronik einfach und leicht verständlich

Die Elektronik-Fibel ist ein Buch über die Grundlagen der Elektronik, Bauelemente, Schaltungstechnik und Digitaltechnik.

Das will ich haben!