Wie ändert man die I2C-Bus Adresse eines Sensors am Raspberry Pi?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Nein die Sensoren haben entweder eine fixe Adresse oder du kannst die Adresse am Sensor mit ein paar Pins einstellen.

Beim BME280 musst du den SDO Pin auf High legen damit er die Adresse 77 hat. Sofern du eine fertige Platine hast kann das schwer bis fast unmöglich sein die zu ändern.


Motfrager 
Fragesteller
 02.03.2020, 18:23

Leider hat mein Sensor nur einen:
VIV
GND
SCL
SDA

Pin. Ist es also unmöglich beide gleichzeitig laufen zu lassen?
Kann ich es dann irgendwie umsetzen, dass ich über eine Art Flipflop das GND Signal Umswitchen kann um zuerst die Daten von dem einen und dann die Daten von dem anderen ablesen zu können?

0
PeterKremsner  02.03.2020, 20:32
@Motfrager

Gnd natürlich nicht den braucht der Sensor wie VCC immer aber es gibt einen sogenannten I2C MUX der das löst.

Allerdings musst du aufpassen, weil dir i2cdetect und die Standardtreiber von Raspbian das nicht erkennen können.

Für ein Python Programm ist das aber egal sofern du den Sensor selbst direkt per I2C Kernel Modul ansprichst.

0
PeterKremsner  02.03.2020, 23:18
@NackterGerd

Meiner Erfahrung nach machen nicht versorgte Halbleiter am I2C Bus teilweise irgendetwas.

Außerdem müsste man den Sensor vor jedem auslesen dann neu Konfigurieren.

Die sauberere Lösung ists in dem Fall sicherlich die Dinger zu versorgen wenn sie am aktiven Bus hängen.

0

Mir fällt da ein:

  • Zwei getrennte i2c verwenden. Es gibt auch i2c Multiplexer ICs mit denen man mehrere i2c slaves mit einem Hardware i2c ansprechen kann.
  • Und ich sehe, dass manche fertige bme280 Boards einen Lötjumper haben mit dem man vielleicht die Adresse umschalten kann.