Raspberry Pi Pico: Troubleshooting I2C - Fehler, Probleme und Lösungen

Der I2C ist ein synchroner serieller Zweidraht-Bus. Er verwendet jeweils eine bidirektionale Daten- und Taktleitung und wird typischerweise für die Kommunikation zwischen unterschiedlichen Komponenten benutzt.

Wenn es bei der Programmausführung zu Fehlermeldungen kommt, die offensichtlich mit dem I2C und daran angeschlossenen Komponenten zu tun haben, dann muss man mehrere Fehlerquellen berücksichtigen und ausschließen.

  • Wird das Gerät mit Strom versorgt?
  • Sind die I2C-Leitungen mit dem Raspberry Pi Pico korrekt verbunden? Die Leitungen für SDA und SCL des I2C werden gerne mal vertauscht. Da solltest Du noch einmal einen Blick drauf werfen.
  • Sind die GPIO-Nummern im Programmcode richtig eingetragen? Gleich zwei Fehlerquellen können hier auftreten. Es sind die GPIO-Nummern zu verwenden und nicht die Pin-Nummer. Desweiteren können die GPIO-Nummern von SDA und SCL vertauscht sein.

I2C verbinden und programmieren

Um Probleme mit dem I2C, dessen Verkabelung und Konfiguration im Programmcode auszuschließen, kann man erstmal einen I2C-Scan durchführen, der die Adressen (in dezimaler Schreibweise) der Geräte, die mit diesem I2C-Bus verbunden sind anzeigt.

Fehlermeldung: „ValueError: bad SCL pin“

In der Kommandozeile erscheint die Fehlermeldung „ValueError: bad SCL pin“. Diese Fehlermeldung deutet an, dass die Verbindung zum I2C-Endgerät nicht stimmt. Der Pico findet an den konfigurierten Pins keine I2C-Gegenstelle.

Lösung: Überprüfe die Verkabelung der I2C-Schnittstelle und die GPIO-Nummern im Programmcode für SDA und SDL.

Fehlermeldung: „OSError: [Errno 5] EIO“

In der Kommandozeile erscheint die Fehlermeldung „OSError: [Errno 5] EIO“. Diese Fehlermeldung deutet an, dass die Verbindung nicht stimmt. Der Pico findet an den konfigurierten GPIOs keine I2C-Gegenstelle.

Lösung 1: Überprüfe die Verkabelung der I2C-Schnittstelle und die GPIO-Nummern im Programmcode für SDA und SCL.

Lösung 2: Manchmal ist die eingestellte I2C-Frequenz (Parameter „freq“) zu hoch eingestellt. Der Wert „400000“ wird oft in Beispiel-Codes verwendet. Und das funktioniert in der Regel auch, wenn der Pico mit einem Host-Computer verbunden ist. Wir das Programm als „main.py“ gespeichert und der Pico mit einer externen Stromversorgung betrieben, funktioniert plötzlich nichts mehr.
Woran das liegt, ist schwer zu beurteilen. Es muss auch nicht zwangsläufig so sein. Aber, es gibt eine Lösung dafür, die einfach ist und in der Regel keine Einschränkungen hat: Die I2C-Frequenz bei der Initialisierung auf den Wert „200000“ oder sogar „100000“ einstellen.

Empfehlung: Pullup-Widerstände gegen VCC

Wenn die beschriebenen Lösungen nicht ausreichen, dann kann man nur die folgende generelle Empfehlung geben, die Leitungen von SDA und SCL mit jeweils einem Pullup-Widerstand von 10 kOhm gegen VCC zu schalten. Die Widerstände sorgen dafür, dass die I2C-Leitungen eine logische „1“ führen, wenn kein Gerät verbunden ist oder es ein Problem mit der Verkabelung gibt.
Wer keine zwei Widerstände mit 10 kOhm hat, der kann auch niedrigere Werte bis 1 kOhm verwenden.

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython

Elektronik-Set Pico Edition

Das Elektronik-Set Pico Edition ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.

  • LED: Einschalten, ausschalten, blinken und Helligkeit steuern
  • Taster: Entprellen und Zustände anzeigen
  • LED mit Taster einschalten und ausschalten
  • Ampel- und Lauflicht-Steuerung
  • Elektronischer Würfel
  • Eigene Steuerungen programmieren

Elektronik-Set jetzt bestellen Online-Workshop buchen

Online-Workshop: Programmieren mit dem Raspberry Pi Pico

Programmieren mit dem Raspberry Pi Pico

Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.

Online-Workshop buchen

Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.

Termine und Newsletter-Anmeldung

 

Elektronik-Sets für das Hardware-nahe Programmieren