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:

Teilen:

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

Programmieren mit dem Raspberry Pi Pico
Online-Workshop

Hardware-nahes 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

Für Ihre Fragen zu unseren Online-Workshops mit dem Raspberry Pi Pico besuchen Sie unseren PicoTalk (Online-Meeting). (Headset empfohlen)

Zum PicoTalk

 

Elektronik-Set Pico Edition
Elektronik-Set Pico Edition

Raspberry Pi Pico: Hardware-nahes Programmieren mit MicroPython

Leichter Einstieg mit All-in-one-Set zum sofort Loslegen, um eigene Steuerungen programmieren.

Elektronik-Set jetzt bestellen

 

Elektronik-Set Pico WLAN Edition
Elektronik-Set Pico WLAN Edition

Raspberry Pi Pico W: IoT und Smart Home mit WLAN und MQTT

Betreibe Deinen Raspberry Pi Pico W als drahtloser Sensor in Deinem WLAN, versende E-Mails mit Daten und kommuniziere per MQTT im Internet of Things oder Smart Home.

Elektronik-Set jetzt bestellen

 

Elektronik-Set Sensor Edition
Elektronik-Set Sensor Edition

Erweiterung zu den Elektronik-Sets Pico Edition und Pico WLAN Edition

Elektronik-Set mit den beliebtesten Sensoren zum Messen von Temperatur, Helligkeit, Bewegung, Lautstärke und Entfernung.

Elektronik-Set jetzt bestellen

 

Elektronik-Set Eingabe Ausgabe Edition
Elektronik-Set Eingabe Ausgabe Edition

Erweiterung zu den Elektronik-Sets Pico Edition und Pico WLAN Edition

Damit kannst Du MP3-Dateien abspielen, eine Stoppuhr bauen, einen Servo-Motor mit Drehschalter oder Joystick steuern, Lichteffekte mit einem WS2812-LED-Lichtstreifen erzeugen, Schalten mit einem Relais und Signalisieren mit einem Vibrationsmotor.

Elektronik-Set jetzt bestellen