LIS3DH Sensor code

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

    ich bin hier neu und verzweifel da ich leider kein code zum LIS3DH auswindig machen kann der mit dem Pi2 / Pi3 nur kurz auf x/y/z geprüft werden kann.

    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.

    Hat evtl. jemand von euch ein code der mir hier weiter helfen könnte

    Besten Dank vorab Jessica

  • Hi hyle,

    den habe ich auch gefunden doch super wäre ein code den man nutzen könnte ich da die meisten irgendwie nicht zum laufen bekomme.

    Viele sind auf für SoCs wo ich nicht weiter komme. Der Chip meldet sich am I2C-Bus über die Adresse 0x1d. 

    der genaue Sensor ist der hier

    https://www.ebay.com/itm/NANO-NRF51…5-/113796615455

    Es handelt sich bei mir um den LIS3DSH aber ist nahe zu gleich dem LIS3DH. Der LIS3DH hat im Vergleich zum LIS3DSH zusätzlich 2 unabhängig, programmierbare Interrupt Generatoren eine 6D/4D Erkennung der Orientierung freie Fall Erkennung.

    • Offizieller Beitrag

    Im Grunde steht doch hier alles was benötigt wird: https://learn.adafruit.com/adafruit-lis3d…n-circuitpython oder hier: https://circuitpython.readthedocs.io/projects/lis3dh/en/latest/ mit Beispielcode.

    Ich kann das natürlich mangels Sensor nicht testen.

  • Hier ein Projekt, dass keine Abhängigkeiten zu Adafruit hat: https://pypi.org/project/lis3dh/

    Für den SMBus (I²C) wird das Modul https://pypi.org/project/smbus2/ in dem Projekt verwendet.

    Leider befinden sich dort ein paar Leichen im Keller.

    Die Adresse des Geräts steht im Quellcode, lässt sich aber nicht über Argumente festlegen.

    Übergangslösung:


    Der Nachteil ist, dass man mit diesem Modul nur einen Sensor gleichzeitig nutzen kann, ohne den Quellcode zu verändern.

    Manchmal gibt es auch schlechten Code auf pypi.

    Einmal editiert, zuletzt von RestlessMud46765 (1. Juni 2021 um 21:46) aus folgendem Grund: typo resisters > registers

  • Hallo DeaD_Eye

    habe gerade deinen code mal testen wolllen doch erhalte folgende Info

    Traceback (most recent call last):

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

    from lis3dh import LIS3DH, device

    ModuleNotFoundError: No module named 'lis3dh'

    :conf:

  • Hallo hyle

    danke das war es aber jetzt habe ich eine neue meldung :wallbash:

    Traceback (most recent call last):

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

    resisters. LIS3DH_ADDR = 0x1d

    NameError: name 'resisters' is not defined

  • Hallo keepfrar,

    Jetzt ist alles im roten werd ganz kirre damit ;(

    >>> %FastDebug lis3dh_2021-06-01.py

    Traceback (most recent call last):

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

    lis = LIS3DH(port=1, scale=registers.CTRL_REG4.SCALE_4G, data_rate=registers.CTRL_REG1.ODR_10Hz)

    File "/home/pi/.local/lib/python3.7/site-packages/lis3dh/lis3dh.py", line 237, in __init__

    self.sensor_init(scale, data_rate)

    File "/home/pi/.local/lib/python3.7/site-packages/lis3dh/lis3dh.py", line 240, in sensor_init

    while self.read_dummy_register() == self.ERROR:

    File "/home/pi/.local/lib/python3.7/site-packages/lis3dh/lis3dh.py", line 260, in read_dummy_register

    dummy = self.bus.read_byte_data(self.dev.LIS3DH_ADDR, self.dev.WHO_AM_I.ADDR)

    File "/home/pi/.local/lib/python3.7/site-packages/smbus2/smbus2.py", line 433, in read_byte_data

    ioctl(self.fd, I2C_SMBUS, msg)

    OSError: [Errno 121] Remote I/O error

  • Diese Fehlermeldungen die du da bekommst und das was du in dem Terminal eingegeben hast und was dabei raus kam sollst in einem Codeblock posten.

    Das geht in dem du auf den Button mit dem </> Symbol drauf klickst dann kommt:

    Code

    und darin postest du die Fehlermeldung (Traceback) und das aus dem Terminal.

    Das macht sich besser da man dann mal google anschmeißen kann. Sonst müsste man alles abschreiben. Da hat keiner lust drauf.

    Du sollst das pip list und pip3 list ins Terminal eingeben. Da wo du auch pip install "irgendwas" eingegeben hast.

    Das listet alle Python Packages auf die du installiert hast.

  • resisters. LIS3DH_ADDR = 0x1d

    Mein Fehler. Sollte eigentlich registers sein.

    Passiert, wenn man nebenbei noch arbeitet.

    Der OSError: [Error 121] Remote I/O error tritt auf, wenn die Adresse falsch ist oder das Gerät nicht reagiert.

    Möglicherweise liegt es an der Umsetzung. Der Code des Moduls ist schlecht, um es nett auszudrücken.

    Ich habe mal das Beispiel von Adafruit übernommen und etwas lesbarer gemacht. Das Beispiel stammt aus dieser Quelle.

    Das Modul von Adafruit installieren:

    Code: https://github.com/adafruit/Adafruit_CircuitPython_LIS3DH#installing-from-pypi
    pip3 install adafruit-circuitpython-lis3dh

    board und busio  kommen aus der adafuit_blinka Bibliothek, die automatisch mit installiert wird.

    Der Code aus dem Beispiel verwendet kein busio. board soll eine generische Abstraktion der Schnittstellen für alle Arten von Einplatinencomputern und Mikrocontroller sein.

  • Guten Morgen zusammen,

    wollte euch noch danke sagen dass Ihr mir hier hilft weiter zu kommen.

    @DeaD_EyE

    meinst du das Beispiel von Adafrui sollte so laufen ? habe das Modul von Adafruit installiert.

    Beim ausführen des lesbaren Beispieles von Adafru bekomme ich nach dem Debug und ausführen folgende Meldung.

    Traceback (most recent call last):

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

    from board import I2C

    ImportError: cannot import name 'I2C' from 'board' (/home/pi/.local/lib/python3.7/site-packages/board.py)

    3 Mal editiert, zuletzt von jessicabm (2. Juni 2021 um 11:03)

Jetzt mitmachen!

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