Raspberry Pi

Raspberry Pi: I2C aktivieren

Der Raspberry Pi verfügt über mehrere GPIO Pins welche zur Ansteuerung von Sensore, Aktoren und anderen Schaltungen genutzt werden können. Weiterhin unterstützt der Raspberry Pi bei den GPIO Pins eine Reihe von Bussystemen und Schnittstellen, darunter auch der serielle Datenbus I2C. Im Folgenden wird gezeigt, wie man I2C auf den Raspberry pi aktivieren und nutzen kann.

Raspberry Pi I2C Schnittstelle

Viele Sensoren und andere Geräte arbeiten über die I2C Schnittstelle um Daten auszutauschen. Am Raspberry Pi befinden sich zwei I2C Schnittstellen bzw. zwei I2C Kanäle. Darunter einmal der Kanal i2c-0 welcher ober 2 Lötpins am Stecker P5 des Raspberry Pi nutzbar ist. Über die GPIO Pins ist der zweite I2C Kanal i2c-1 erreichbar. Diesen verwenden wir in diesem Tutorial.

Prinzipiell setzt sich der I2C Bus aus zwei Leitungen zusammen: Einmal die Datenleitung SDA, sowie eine Taktleitung SCL.

  • Raspberry Pi Pin 3 (GPIO 2): Datenleitung SDA
  • Raspberry Pi Pin 5 (GPIO 3): Taktleitung SCL

Raspberry Pi I2C aktivieren

I2C im Kernel aktivieren

Um I2C zu aktivieren müssen wir die Schnittstelle im Kernel aktivieren. Die kann ganz einfach über das Raspberry Pi Konfigurationstool raspi-config erledigt werden.

sudo raspi-config

In der Oberfläche navigieren wir zu Advanced OptionsI2C.

raspi-config

raspi-config

Mit dem Tastendruck Enter wird I2C aktiviert. Man wird dabei gefragt, ob das ARM I2C Interface aktivieren möchte und ob das I2C Kernel Module beim Systemstart automatisch geladen werden soll. Beides bestätigen wir mit Ja.

Außerdem weißt das Konfigurationstool darauf hin, dass die Einstellungen erst nach einem Neustart aktiv werden und bietet an, das System jetzt neuzustarten. Dies bestätigen wir ebenfalls mit Ja und starten das System neu. Prinzipiell ist jetzt I2C auf dem Raspberry Pi aktiviert. Im Folgenden wird außerdem erklärt, wie man die serielle Busschnittstelle manuell am Pi aktiviert und nutzbar macht.

Raspberry Pi I2C manuell aktivieren

Um am Raspberry Pi I2C manuell zu aktiveren müssen wir das I2C Kernel Modul beim Systemstart laden. Dazu bearbeiten wir die Datei /etc/modules.

sudo nano /etc/modules

In die Datei tragen wir die I2C Kernelmodule ein und speichern die Datei anschließend.

i2c-bcm2708
i2c-dev

/etc/modules

/etc/modules

Weiterhin kann die Datei /boot/config.txt geöffnet und auf den richtigen Inhalt geprüft werden.

sudo nano /boot/config.txt

Dabei sollten am Ende der Datei folgende zwei Zeilen zu finden sein. Andernfalls fügen wir deise ein uns speichern und schließen die Konfigurationsdatei wieder.

dtparam=i2c1=on
dtparam=i2c_arm=on

Abschließend bearbeiten wir die noch die Datei /etc/modprobe.d/raspi-blacklist.conf. Diese Datei beinhaltet Module, die während des Betriebs nicht geladen werden, d.h. hier dürfen keine Einträge zu I2C enthalten sein. Die folgenden Zeilen dürfen nicht in der Datei stehen bzw. müssen durch voranstellen des Zeichens # pro Zeile auskommentiert werden, damit I2C aktiv wird.

# blacklist spi and i2c by default
# blacklist spi-bcm2708
# blacklist i2c-bcm2708

Nachdem wir manuell die Einstellungen zur Aktivierung von I2C am Raspberry Pi vorgenommen haben, muss der Einplatinencomputer neugestartet werden damit die Einstellungen aktiv werden.

sudo reboot

Raspberry Pi I2C Schnittstelle testen

Nachdem wir die I2C Schnittstelle am Raspberry Pi mittels raspi-config oder manuell aktiviert haben, können wir testen, ob diese funktioniert. Mit Hilfe des Tools i2cdetect wird der serielle Bus nach angeschlossenen Geräten, etwa Sensoren oder ähnlichem, gescannt. In einer Tabelle werden die angeschlossenen Geräte erkennbar. Dazu installieren wir zunächst das I2C-Toolkit.

sudo apt-get install i2c-tools
sudo i2cdetect -y 1

i2cdetect

i2cdetect

Ich habe für diese Anleitung den Luftdrucksensor BMP180 angeschlossen welcher via i2cdetect hier unter der Adresse 77 gefunden wurde. Die Adresse kann je nach angeschlossenem Gerät anders ausfallen. Sollte das Tool kein Gerät finden bleibt die Tabelle leer.

Quelle: Netzmafia

Hinterlasse eine Antwort