Skip to content

I2C Bus einrichten

Josef Spitzlberger edited this page Jan 5, 2024 · 6 revisions

Die Klimasensoren werden über den I2C Bus angeschlossen. Auch die GPIO Extender zum Betrieb der LEDs werden über diesen Bus an den CaravanPi angeschlossen.

Einrichten des I2C-Buses

Um den I2C-Bus über Python ansprechen zu können, müssen zunächst die entsprechenden Bibliotheken geladen bzw. aktualisiert werden:

pip install smbus2
sudo apt-get install i2c-tools

Das Laden der Module erfolgt über die /boot/config.txt. Diese muss ggf. erweitert werden. Dazu editieren Sie die Datei mit

sudo nano /boot/config.txt

Suchen Sie nach den folgenden Zeilen. Falls diese nicht schon enthalten sind, fügen Sie sie am Ende ein.

dtparam=i2c1=on
dtparam=i2c_arm=on

siehe auch https://www.raspberrypi-spy.co.uk/2014/11/enabling-the-i2c-interface-on-the-raspberry-pi/ https://www.thomaschristlieb.de/mit-dem-bme280-sensor-luftdruck-temperatur-und-feuchtigkeit-ins-internet-bringen/

Pull-Up Widerstände

Da unser I2C Bus recht lang ist und über zwei I2C Extender auch noch extrem verlängert wird (mehrere Meter) sind die internen Pull-Up Widerstände des Raspberry nicht mehr ausreichend. Daher setzen wir gleich am GPIO Pin von SCA und SCL jeweils einen 4,7 kOhm Widerstand gegen 3,3 V.

Funktionstest

  • Prüfen, ob der I2C-Bus aktiviert ist

    lsmod | grep i2c_
    

    Sie sollten eine Ausgabe wie diese bekommen:

    i2c_bcm2835            16384  0
    i2c_dev                16384  0
    
  • Prüfen Sie, ob der I2C Bus in funktion ist und Geräte erkennt

    i2cdetect -y 1
    

Das Ergebnis sollte z.B. sein

    0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: 20 21 -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- 53 -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- 76 77

Diese Anzeige würde bedeuten, dass an den I2C Adressen 20, 21, 53, 76 und 77 entsprechende Sensoren etc. angeschlossen sind. Falls noch keine Geräte am Bus angeschlossen sind, erscheinen natürlich nur

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Falls Geräte am I2C angeschlossen sind und es erscheint die leere Matrix oder eine volle Matrix, dann stört ein Gerät am I2C Bus die Funktion:

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
10: 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
20: 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f
30: 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f
40: 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f
50: 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f
60: 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f
70: 70 71 72 73 74 75 76 77

In diesem Fall nehmen Sie alle kabelgebunden Geräte vom I2C Bus (Lagesensor, Klimasensoren). Dann sollten lediglich die beiden IC (20 und 21) auf der Platine angezeigt werden. Dann stecken Sie ein Gerät nach dem anderen wieder an und prüfen das Ergebnis.

I2C Bus - genial und eine Diva

Der I2C Bus ist wirklich eine geniale Sache. Eigentlich ist alles so einfach. Es können theoretisch bis zu 77 Geräte / Sensoren angeschlossen werden, solange nur alle unterschiedliche Adressen verwenden. Bei unseren Sensoren ist das so. Es werden die Adressen 20 und 21 für die GPIO Extender verwendet, die Adresse 53 vom Beschleunigungssensor und die Adressen 76 und 77 für die Klimasensoren.

Der I2C Bus ist aber auch eine ordentliche Diva. Ist irgendwas nicht super angenehm, dann fällt schon mal ein Gerät aus oder der ganze Bus ist nicht mehr ansprechbar. So ging es auch mir. Daher stets sorgfältig prüfen, ob alle Kabel an den richtigen Ports stecken.

Wissenswertes zum I2C Bus und i2c-tools

http://www.netzmafia.de/skripten/hardware/RasPi/RasPi_I2C.html

CaravanPi Wiki

1 Installationsanleitung

2 Bauanleitung

Grundaufbau

Sensoren, etc. installieren

Anzeigen installieren

Raspberry stabilisieren

Platine entwerfen

3 ursprüngliche Entwicklung

4 Dokumentation

5 Updates

ab hier altes WIKI, muss noch umgezogen werden

XX = in Bearbeitung NEU = neue Funktion in letzter Version

Einbau im Caravan

Inbetriebnehmen und Kalibrieren

CaravanPi Updates

Erweiterungen

Grafische Auswertungen

Statuswebsite

weitere Sensoren

Clone this wiki locally