Raspberry Pi I2C aktivieren
In diesem Tutorial zeige ich euch wie man am Raspberry Pi I2C aktivieren kann. Ich habe bereits sehr viel mit der GPIO Schnittstelle gearbeitet, jedoch hatte ich bis jetzt noch keinen Sensor, der über I2C angesteuert wird. Das ist nun endlich anders und deshalb habe ich hier übersichtlich zusammengefasst was man alles machen und kontrollieren muss bevor man mit dem angeschlossenen Sensor arbeiten kann.
Raspberry Pi I2C aktivieren
Ich habe die Aktivierung des I2C Bus in 3 Abschnitte geteilt. Wer alle Schritte genau befolgt hat am Ende eine korrekt funktionierende I2C Schnittstelle und kann damit Sensoren und Geräte die auf der GPIO Schnittstelle hängen verwenden.
Kernel Support aktivieren
sudo raspi-config
unter dem Punkt „Advanced Options“ findet man eine Liste mit allen zusätzlichen Funktionen die man über das Konfigurationsprogramm bearbeiten kann. Darunter auch die I2C Schnittstelle:
Man wird nun gefragt ob man das ARM I2C Interface aktivieren möchte, man bestätigt mit „JA„, in der folge wird man dann noch gefragt, ob man will, dass die I2C Kernel Module automatisch geladen werden – wieder bestätigen wir mit „JA„
Nach erfolgreicher Einstellung startet man den Raspberry Pi neu.
Kontrolle
Die I2C Schnittstelle sollte nun schon funktionieren, jedoch kann es aus den unterschiedlichsten Gründen dazu kommen, dass es nicht so ist. Kontrolle ist wie immer besser, deshalb zeige ich euch wie man die I2C Kernel Support manuell aktiviert. Sollten Einstellungen bei euch fehlen, einfach laut dieser Anleitung hinzufügen.
Die Datei /etc/modules legt fest welche Kernel Module beim Systemstart automatisch geladen werden. Aus diesem Grund finden wir dort auch Einträge für die I2C Schnittstelle:
sudo nano /etc/modules
Sollten die beiden Zeilen mit i2c fehlen, dann sind diese manuell zu ergänzen. Die Datei wird mit STRG+X und dann mit J für ja gespeichert. Sollte das nicht funktionieren hat man die Datei nicht mit root Rechten geöffnet!
Mit modprobe können Module wärend des Betriebs ge- oder entladen werden. In der Datei /etc/modprobe.d/raspi-blacklist.conf sollten deshalb keine Einträge für i2c zu finden sein. Ist das doch der Fall, dann bitte entfernen:
sudo nano /etc/modprobe.d/raspi-blacklist.conf
Zuletzt müssen wir uns noch die Datei /boot/config.txt ansehen in der Parameter festgelegt sind die wärend des Bootvorgangsbenötigt werden. Die meisten Parameter die man in dieser Datei findet werden über das raspi-config Programm festgelegt.
sudo nano /boot/config.txt
Am Ende der Datei sollte man folgende Einträge finden:
- dtparam=i2c1=on
- dtparam=i2c_arm=on
Falls nicht sollte man diese Zeilen hinzufügen.
Wenn man nun manuell irgend eine Einstellung ändern musste, dann sollte das System nun neu gestartet werden:
sudo reboot
Test
Nun wird es Zeit die I2C Schnittstelle zu testen. Informationen über angeschlossene Geräte oder Sensoren bekommt man mit dem i2cdetect Kommando. Das Programm scannt den I2C Bus nach angeschlossenen Geräten und zeigt gibt die Information darüber in einer Tabelle aus:
In meinem Fall ist der BMP085 Luftdrucksensor angeschlossen. Dieser wird auch erkannt und mit der Nummer 77 in der Tabelle ausgegeben. Je nach Typ das angeschlossenen I2C fähigen Sensors oder Geräts sieht diese Ausgabe anders aus. Wird kein Gerät erkannt, dann ist die Tabelle leer, alle Einträge sind mit „–“ gekennzeichnet.
Aufgerufen wird i2cdetect mit folgendem Kommando:
sudo i2cdetect -y 0
Je nach Version des Betriebssystems muss der Parameter 0 mit 1 ersetzt werden. In meinem Fall gab 0 die Fehlermeldung:
Error: Could not open file ‚/dev/i2c-0‘ or ‚/dev/i2c/0‘: No such file or directory
Es gibt auch den Fall, dass das Programm i2cdetect gar nicht installiert ist und man mit der Fehlermeldung:
i2cdetect not found
das ist kein Problem, das Programm kann wie folgt nachinstalliert werden:
sudo apt-get update sudo apt-get install i2c-tools
Fazit
Will man am Raspberry Pi I2C aktivieren, dann muss man dieses entweder automatisch über raspi-config machen oder manuell. Ob die Aktivierung geklappt hat kann man mit dem Programm i2cdetect prüfen, welches auch verwendet wird um angeschlossene i2c Geräte am Bus zu finden.
ich habe alles laut anleitung durchgeführt, jedoch wird der bmp180 mit sudo i2cdetect -y 1 einfach nicht erkannt!
Die Anleitung ist schon recht alt und möglicherweise mit der aktuellen Raspbian Version nicht so durchzuführen. Ich würde einfach mal Kontrollieren, ob unter Raspiconfig I2C aktiviert ist.
Hallo, danke für die gute Beschreibung. Hat bei mir erst beim zweiten Mal geklappt, weil ich den Fehler gemacht habe daß ich die 1 als l (kleines L) gelesen habe. Jedoch letztendlich hat bei mir der Befehl sudo i2cdetect -y 1 oben gezeigte Information gebracht, lauter- – – – – – und einmal 77. Dennoch läuft bei mir das Auslesen des BME280 über das Programm bme.py leider nicht, es werden Fehler in einigen Zeilen gemeldet, die Chipausleseung scheint nicht zu klappen. Ich werde also noch viel probieren müssen. Aber immerhin konnte ich die I2C-Schnittstelle erfolgreich testen. Vielen Dank.