Zwei Time of Flight Sensoren - keine I2C Adresse

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo

    Ich fange grade erst mit dem Raspberry Pi und Python an und habe mir dazu ein Buch gekauft in dem ein kleines Roboterauto gebaut und per Python Programme gesteuert wird.

    Verbaut werden da unter anderem zwei Time of Flight Sensoren die über den I²C Bus gesteuert werden. Da beide Sensoren die gleiche Adresse (29) haben soll laut Buch immer ein Sensor über den XSHUT Pin auf Low bzw. High gesetzt werden.

    Ausgelesen werden die Sensoren mit folgendem Programm:

    Dieses wird über ein zweites Programm aufgerufen dass die Werte der Sensoren im Terminal anzeigt. Starte ich nun dieses Programm bekomme ich einen Fehler dass die Adresse 29 nicht gefunden wurde. Weil sich da scheinbar beide Sensoren in die quere kommen.

    Hier der Fehler aus dem Terminal:

    Code
    Traceback (most recent call last):
      File "display_VL53L1X.py", line 5, in <module>
        import read_VL53L1X as dist
      File "/home/pi/robot/read_VL53L1X.py", line 28, in <module>
        tof = VL53L1X.VL53L1X(i2c_bus=1, i2c_address=0x29)
      File "/usr/local/lib/python2.7/dist-packages/VL53L1X.py", line 97, in __init__
        raise RuntimeError("VL53L1X not found on adddress: {:02x}".format(self.i2c_address))
    RuntimeError: VL53L1X not found on adddress: 29

    Stecke ich den XSHUT Pin von einem Sensor ab dann läuft das Programm und liest die Werte aus.

    Ich habe die verkabelung und die Programme jetzt schon mehrfach kontrolliert und habe alles so wie in dem Buch beschrieben. Da ich in dem Buch vorher schon auf den ein oder anderen Fehler gestoßen bin würde ich das also hier auch nicht ausschließen. Ich selbst komme da jetzt aber nicht so recht weiter. Vielleicht kann mir hier ja jemand auf die sprünge helfen?

  • Zur hilfreichsten Antwort springen
  • GND, Versorgungsspannung, SDA und SCL gehen vom RaspberryPi auf einen I²C Hub und von dem jeweils zu den beiden Sensoren.

    Die XSHUT Pins der beiden Sensoren gehen direkt in den GPIO Pin 23 und 24 des Pi's.

    Über die XSHUT Pins an GPIO23 bzw. 24 soll denn eben immer ein Sensor auf Low und der andere auf High gesetzt werden damit immer nur einer aktiv ist weil sonst beide die gleiche I²C Adresse haben und der Pi die Sensoren somit nicht erkennt.

    Aber das Programm stoppt ja schon an dem Punkt wo die Adresse der Sensoren eingelesen wird weil da scheinbar beide Aktiv sind. Aber GPIO23 und 24 sind beide auf Low. Mit Mulitmeter gemessen.

    Einmal editiert, zuletzt von Patsy (29. Mai 2020 um 15:37)

    • Hilfreichste Antwort

    Und im Datenblatt steht die Antwort: XSHUT ist active Low. Wenn du also "GPIO23 und 24 sind beide auf Low. Mit Mulitmeter gemessen." vorliegen hast, dann sind die beide an.

  • Und im Datenblatt steht die Antwort: XSHUT ist active Low. Wenn du also "GPIO23 und 24 sind beide auf Low. Mit Mulitmeter gemessen." vorliegen hast, dann sind die beide an.

    Hm. OK. In dem Buch nach dem ich vorgehe steht dass die Sensoren bei Low ausgeschaltet sind. Und bei dem Autor des Buches scheint es so zu funktionieren.

    Aber gut, ich werds mal probieren.

    Reicht es dann wenn ich in dem Programm oben beide Pins am Anfang auf High setze? Also vor der Zeile:

    Code
    tof = VL53L1X.VL53L1X(i2c_bus=1, i2c_address=0x29)
  • Hallo manne3

    Das Thema ist doch schon älter, starte am besten ein neues eigenes Thema. Poste dort bitte deinen Code, deinen Schaltplan und eine genaue Fehlerbeschreibung ink. vollständiger Fehlermeldung.

    Die Logik umkehren bedeutet, dass du mit 'on' oder 'high' etwas ausschaltest und mit 'off' bzw. 'low' etwas anschaltest.

    Beispiel:

    Die Anwendung besprechen wir dann in deinem neuen Thema.

    Grüße

    Dennis

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

  • Hallo Dennis,

    ich habe die identischen Fehlermeldungen wie Patsy, da wir das gleiche Projekt (Roboterauto) haben.

    Ich wollte von ihm wissen, wie er zur funktionierenden Lösung gekommen ist.

    Danke

  • Hallo,

    ich habe z.B. statt dist.start_sensor(23) dist.stop_sensor(23) eingegeben, es nichts gebracht. Es erscheint die gleiche Fehlermeldung: Sensoren nicht an der Adresse 29 gefunden. Ansonsten das gleiche Verhalten, die gleichen Meldungen wie oben beschrieben.

    Viele Grüße

    manne3

  • Hallo,

    du musst die Logik im Python-Programm umkehren. Sieht dein Python-Programm auch wie hier im ersten Beitrag aus?

    Wenn ja dann versuche es mal damit:

    Siehst du wo ich 'True' und 'False' getauscht habe?

    Grüße

    Dennis

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

  • Hallo Dennis,

    ich glaube ich habe die Lösung: Beide Sensoren defekt!!! Ausgetauscht und sie laufen noch einzeln, werde noch True und False tauschen. Hoffentlich war es das dann.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!