Geschrieben von Frank Mankel
Kategorie: BananaPI

Heute mal wieder was Hardwarebastelei ;)

BPi_I2C BPi_I2C

Es geht um den I2C-Bus den der BananaPI zur Verfügung stellt. Das ist ein 2-adriges Bussystem an dem man maximal 8 Teilnehmer anschließen darf.

Hardware:

Als allererstes eine Warnung! Viele I2C-Module sind für 5 Volt gebaut, der BananaPi kann aber nur 3,3 Volt Signale verarbeiten. Für den Betrieb der 5V-Module an 3,3V-Geräten gibt es preiswerte Wandler. Eine Nichtbeachtung kann zur Zerstörung des BananaPis führen!

Der Adapter ist bestellt, aber ich hatte von der Fa. Wenzel Systems die I2C-Switch-Bar hier liegen und man will das ja ausprobieren. Da bin ich über einen Tipp im Netz gestolpert. Auf dem Board sind zwei Abschlußwiderstände auf den Bus geschaltet. Diese kann man entfernen, dafür sind auf dem Board zwei Lötbrücken SJ1 und SJ2. Das Lötzinn entfernt, nachgemessen das die Verbindung nicht mehr besteht und angeschlossen.

Der Anschluß an einen BananaPi sieht wie folgt aus:

Wenn ich das alles richtig verstanden habe, dient die Leitung SCL für die Zeitsignale (Clock) und SDA für die Daten (Data). Die beiden Leitungen bilden den Bus, die anderen beiden dienen der Stromversorgung der Switch-Bar.

Software:

Als Betriebssystem setze ich ein Raspbian ein. Als erstes brauchen wir mal das Programm für den I2C-Bus.

sudo apt-get install i2c-tools

Damit werden dann folgende Programme installiert.

Mein erster Versuch den Bus abzusuchen:

sudo i2cdetect -y 1

Ausgabe:

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

Hmm, da sieht man keine Adresse, also ist an dem Bus kein Teilnehmer angeschlossen. Nächster Versuch:

sudo i2cdetect -y 2

Ausgabe:

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

Da ist die Switch-Bar :) Die Adresse lautet 0x3e. Wenn ich nun alle acht Schalter der Switch-Bar auf ON stelle, werden alle Signalleitungen auf GND geschaltet. Hier der Schaltplan. Nun lesen wir den Wert über den Bus aus.

sudo i2cget -y 2 0x3e

Ausgabe:

0x00

Nun stellen wir den Schalter Nr. 1 auf OFF.

sudo i2cget -y 2 0x3e

Ausgabe:

0x01

usw.

Man kann auch sehr einfach über den Bus Werte in die Geräte schreiben, dafür nimmt man dann folgenden Befehl:

i2cset    

Es gibt viele verschiedene Module, die man an den I2C-Bus anschliessen kann. Einfach mal in der Bucht "I2C" eingeben und sich umschauen. Ich habe da schon einige interessante Module gesehen, einige sind auf dem Weg zu mir.

Viel Spaß beim Ausprobieren.

Quellen:

http://www.ebay.de/itm/Test-u-Experimentierboard-I2C-Bus-Switch-Bar-Arduino-Raspberry-PCF8574-IIC-/131362472415?pt=Wissenschaftliche_Ger%C3%A4te&hash=item1e95d041df

Schaltplan Switch-Bar

http://www.lm-sensors.org/wiki/man/i2cset