Wie kann ich mit I2C mit Sensoren sprechen?

29

Wie kann ich über die I²C-Schnittstelle mit digitalen Sensoren sprechen?

Hardware:
Welche Pins auf dem Raspberry Pi GPIO kann ich verwenden?

Software:
Welche I²C-Bibliotheken gibt es?

Alex L
quelle

Antworten:

23

Hier finden Sie viele Informationen zum GPIO von RPi: http://elinux.org/Rpi_Low-level_peripherals

Demnach können Sie beliebige GPIO-Pins für I²C programmieren, aber:

Pin 3 (SDA0) und Pin 5 (SCL0) sind als I²C-Schnittstelle voreingestellt. Für diese Pins befinden sich 1,8 Kiloohm Pull-Up-Widerstände auf der Platine.

Diese Wiki-Seite enthält auch einige GPIO-Codebeispiele auf niedriger Ebene für verschiedene Sprachen, die Ihnen den Einstieg erleichtern sollen. Wenn Sie eine Auffrischung darüber benötigen, was I²C tatsächlich ist, finden Sie hier eine, die auch das RPi berücksichtigt.

Für ein spezifisches I²C-Controlling kann diese Python-Bibliothek hilfreich sein. Sie wird in diesem Blog-Beitrag erläutert , der ein Codebeispiel enthält.

Tapio
quelle
Gibt es Kommentare zu möglichen Anpassungen der Edison Sparkfun GPIO-Pins für I2C?
Geotheorie
7

Darüber wird viel diskutiert. Folgendes zeigt mir mein Lesen und Herumspielen:

  1. I2C-Unterstützung ist nicht in den Standard-Kernel mit dem Debian "squeeze" integriert
  2. Ein angepasster Kernel muss mit dem i2cspi-Modul kompiliert werden ( Hier ist ein Auszug aus dem GIT-Baum )
  3. Die Treiber, die bisher geschrieben wurden, sind nur für den 3.2-Kernel und höher, und der Autor hat nicht die Absicht, den 3.1.9+ aufgrund von Sicherheitslücken zu unterstützen ( Chris Boot diskutiert den Treiber ).
  4. Mit etwas Glück wird die Debian "Wheezy" -Distribution, die sich derzeit in der Beta-Version für RasPi befindet, diesen Treiber enthalten. Es kommt mit dem 3.2-Kernel.
Nullzeit
quelle
2
Ja, wie Sie bereits erwähnt haben, ist es jetzt in den Standard-Kernel integriert - sowohl offizielle Raspbian- als auch Debian-Wheezy-Distributionen. Ich folgte hier einige Ratschläge , die leicht zu folgen und ich habe die I2C - Geräte zeigt sich in / dev ... raspberrypi.org/phpBB3/viewtopic.php?f=37&t=15511 Es ist ein bisschen mehr Detail hier bei Bedarf: Roboter- electronics.co.uk/files/rpi_i2c_setup.doc
dodgy_coder
Um detailliertere Informationen zu erhalten, sollten Sie die Daten hier und nicht auf Weblinks speichern und darauf hoffen, dass sie nicht veraltet sind: Ab dem Wheezy 2012-09-18-Bild bearbeiten /etc/modprobe.d/raspi-blacklist.confund kommentieren Sie den Eintrag für i2c-bcm2708; dann editieren /etc/modulesund anhängen i2c-dev; dann neu starten. Sie sollten jetzt eine /dev/i2c-0spezielle Datei haben, die sehr einfach zu bedienen ist.
damian
2

Hardware:

Wie von Tapio erwähnt, ist die Hardware unter http://elinux.org/Rpi_Low-level_peripherals gut dokumentiert

Software:

Es gibt einen i2c-dev-Header im Linux-Userspace ( #include <linux/i2c-dev.h>). Außerdem brauchst du einen Charakter, aus dem du lesen kannst. Dies kann durch Laden der richtigen Module erfolgen. i2c_bcm2708für den Low-Level-Fahrer und i2c-devzur Erzeugung des Charakters für die Busse. Sich bewerben ...

sudo modprobe -r i2c_bcm2708
sudo modprobe i2c_bcm2708 baudrate=<your preferred baudrate>

zum Laden im laufenden Betrieb. Sich bewerben ...

sudo sh -c 'echo "i2c-dev" >> /etc/modules'
sudo sh -c 'echo "options i2c_bcm2708 baudrate=<your preferred baudrate>\n" > /etc/modprobe.d/custom.conf

und Unblacklist i2c_bcm2708in /etc/modprobe.d/raspi-blacklist.confzu machen /dev/i2c-0und /dev/i2c-1dauerhaft auftauchen.

Ab sofort können Sie den Hinweisen zur Verwendung von I²C del maestro selbst folgen .

Ich bevorzuge diese Methode gegenüber anderen, weil sie plattformunabhängig ist. Sie können es auch linux/i2c-dev.hmit anderen Geräten verwenden, sofern ein niedriger I²C-Treiber vorhanden ist.

Grüße

ManuelSchneid3r
quelle