LIS3DH Sensor code

  • Ok, dann ersetze mal


    Python
    from board import I2C

    durch


    Code
    import board
    
    
    ADDRESS = 0x1D
    i2c = board.I2C()
    
    # restlicher code ...


    Wenn das auch nicht geht, hast du möglicherweise im gleichen Verzeichnis die Datei board.py.

    Wenn adafuit_platformdetect ein Board feststellt, dass nicht unterstützt wird, kommt eine Exception:

    Quote

    NotImplementedError: Adafruit-PlatformDetect version 3.13.3 was unable to identify the board and/or microcontroller running the Windows platform. Please be sure you have the latest packages running: 'pip3 install --upgrade adafruit-blinka adafruit-platformdetect'

    Ich kann das selbst erst später auf einem meiner RPIs testen. Dann kann ich mit Sicherheit sagen, ob I2C mit adafauit_blinka funktioniert.

  • Habe nun folgende infos ausgeführt

    sudo python3 -m pip install --upgrade --force-reinstall adafruit-blinka Adafruit-PlatformDetect

    python3 -m pip install --upgrade --force-reinstall adafruit-blinka

    sudo apt-get install libgpiod2


    nun kommt folgendes

    Traceback (most recent call last):

    File "/home/pi/Desktop/lis3dh_2021-06-01.py", line 20, in <module>

    lis3dh = LIS3DH_I2C(i2c, address=ADDRESS,)

    File "/usr/local/lib/python3.7/dist-packages/adafruit_lis3dh.py", line 396, in __init__

    super().__init__(int1=int1, int2=int2)

    File "/usr/local/lib/python3.7/dist-packages/adafruit_lis3dh.py", line 101, in __init__

    raise RuntimeError("Failed to find LIS3DH!")

    RuntimeError: Failed to find LIS3DH!




  • Probier den kompletten Beispielcode von der Adafruitseite:

    Full Example Code Adafruit



    einfach mal so testen. Gegebenenfalls deine Adresse ändern. Sollte aber stimmen.



    Und jetzt nochmal:


    Wenn du das Postest:


    Traceback (most recent call last):

    File "/home/pi/Desktop/lis3dh_2021-06-01.py", line 20, in <module>

    lis3dh = LIS3DH_I2C(i2c, address=ADDRESS,)

    File "/usr/local/lib/python3.7/dist-packages/adafruit_lis3dh.py", line 396, in __init__

    super().__init__(int1=int1, int2=int2)

    File "/usr/local/lib/python3.7/dist-packages/adafruit_lis3dh.py", line 101, in __init__

    raise RuntimeError("Failed to find LIS3DH!")

    RuntimeError: Failed to find LIS3DH!


    Dann bitte im Codeblock:


    Python
    Traceback (most recent call last):
    File "/home/pi/Desktop/lis3dh_2021-06-01.py", line 20, in <module>
    lis3dh = LIS3DH_I2C(i2c, address=ADDRESS,)
    File "/usr/local/lib/python3.7/dist-packages/adafruit_lis3dh.py", line 396, in __init__
    super().__init__(int1=int1, int2=int2)
    File "/usr/local/lib/python3.7/dist-packages/adafruit_lis3dh.py", line 101, in __init__
    raise RuntimeError("Failed to find LIS3DH!")
    RuntimeError: Failed to find LIS3DH!


    genauso auch den anderen kram. Aus deinem Terminal zum Beispiel.

  • Das Bild aus Beitrag 12 sieht doch bearbeitet aus wenn man die Adern verfolgt :conf:

    Und die Kabeln selbst gebaut?!


    Was mich auch verwirrt ist die Adresse 0x1D


    LIS3DH hat die Adressen 0x18 oder 0x19

    Quelle: https://www.st.com/en/mems-and-sensors/lis3dh.html

    und https://cdn-learn.adafruit.com…ads/pdf/i2c-addresses.pdf


    Ich habe welche für den MPU-6050 GY-521 gefunden und die adresse durch i2cdetect -y 1 von 0x68 auf den neuen wert 0x1d geändert aber komme einfach nicht weiter.

    i2cdetect -y 1 ändert doch keine Adressen :conf:

  • Hofei den Wert hat Jessi selbst geändert.

    Noch ne Frage. Können die Bibliotheken Smbus und Smbus2 sich ins Gehege kommen?


    Edit:

    jessicabm Kannst du die original Adresse wieder herstellen? Die Fehlermeldung sagt, nach meinem Verständnis, das dein Gerät nicht gefunden wird und auch das es die Adresse nicht gibt.

    Edited once, last by keepfear ().

  • keepfear


    wenn ich i2cdetect -y 1 eingebe bekomme ich 1d angezeigt welche soll ich da dann verwennden?


    Code
    pi@raspberrypi:~ $ i2cdetect -y 1
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- 1d -- -- 
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    70: -- -- -- -- -- -- -- --      
  • Du musst dir halt auch mal die Fehlermeldung durchlesen und dann mal google fragen.


    In Zeile 12 deiner Fehlermeldung die du hier gepostest hast steht das:

    Code
    OSError: [Errno 121] Remote I/O error

    und das sagt das kein Gerät angeschlossen ist.


    In Zeile 37 deiner Fehlermeldung die du hier gepostest hast steht:

    Code
    raise ValueError("No I2C device at address: 0x%x" % self.device_address)

    und das sagt das kein Gerät mit dieser Adresse gefunden wurde. Nach meinem Verständnis.

    Die frage ist warum findet das Programm das Gerät nicht.


    In deinem Startpost hast du Geschrieben:

    Ich habe welche für den MPU-6050 GY-521 gefunden und die adresse durch i2cdetect -y 1 von 0x68 auf den neuen wert 0x1d geändert aber komme einfach nicht weiter.

    Wie hast du die Adresse geändert? Ich kenn mich da nicht aus, deswegen frag ich.


    Poste bitte nochmal die Ausgabe von:

    Code
    pip3 list

    und

    Code
    pip list

    und die Ausgabe postest du bitte in einem Codeblock. So wie du die Fehlermeldung gepostet hast.

    Ich will keine Fotos und keine angehängten Dateien sehen. Das schau ich mir nicht mehr an.

  • Hallo keepfear



    sowie hier die andere list


    Edited once, last by hyle: Ein Beitrag von jessicabm mit diesem Beitrag zusammengefügt. ().

  • Ich habe gerade mochmal folgenden Code in Thonny Python IDE eingefügt und nach den Debug ausgeführt.



    Hier erhalte ich folgende Information

    Code
    Traceback (most recent call last):
      File "/home/pi/Desktop/lis3dh_2021-06-01.py", line 19, in <module>
        i2c = I2C()
    NameError: name 'I2C' is not defined

    ich habe gestern auf die schnelle mal ein weiteres Board mit einem LIS3DH bestellt welches hoffentlich heute eintreffen tut/sollte.


    LIS3DH Adapter Board


    Hier werde ich VCC / GND sowie SDA und SCL an den Pi 2 rev B V1.1 verbinden um sicher zu stellen, dass das deas andere board nicht evtl. einen defekt hat.

    Edited 3 times, last by hyle: Ein Beitrag von jessicabm mit diesem Beitrag zusammengefügt. ().

  • Hallo,


    du kannst nicht irgend ein Name einfach an I2C() binden, wenn es das so nicht in deinem Programm gibt und du es auch nicht importiert hast. Ein paar Zeilen weiter oben nutzt du das I2C von board. Das geht, da du board auch importiert hast.


    Grüße

    Dennis


    Edit: Was willst du mit Zeile 18 und 19 eig bezwecken? Das ist doch schon darüber definiert.

    ... ob's hinterm Horizont wirklich so weit runter geht oder ob die Welt vielleicht doch gar keine Scheibe ist?

  • Hallo Dennis89 Danke, habe es gerade gesehen (voll vergessen Zeile 18 und 19 zu entfernen (habe ich jetzt entfernt).

    und folgende Meldungen sind nun erschienen.


    Leider steh ich immer noch am Punkt Null. Ich verzweifle. Versuche mich anhand der Fehlermeldungen und euren Infos weiter zu hangeln, bekomm noch graues Haar :no_sad:


    Edited 2 times, last by jessicabm ().

  • Deinstalliere mal lis3dh. Der scheint das falsche Paket zu importieren.

    Die beiden Pakete kommen sich wohl in die Quere.


    Code
    pip3 uninstall lis3dh

    Dann nochmal probieren.


    Um solche Probleme zukünftig zu vermeiden, solltest du mit einem venv arbeiten.




    Später kannst du das Programm dann so starten:

    Code
    source sensor_env/bin/activate
    python dein_programm.py
    
    
    
    # oder über den direkten Pfad zum Interpreter
    # und source, um die laufende Umgebung vorzubereiten
    
    sensor_env/bin/python dein_programm.py