lsm6dsox — IMU 6 axes LSM6DSOX

Pilote pour l’unité de mesure inertielle ST LSM6DSOX iNEMO à 6 axes (accéléromètre 3 axes plus gyroscope 3 axes) via I2C ou SPI. En plus de la sortie IMU de base, le pilote expose les fonctions embarquées de la puce : un podomètre (compteur de pas) configurable et le Machine Learning Core (MLC), qui peut être programmé via des fichiers UCF exportés depuis l’outil Unico-GUI de ST.

Exemple

import time
from machine import I2C
from lsm6dsox import LSM6DSOX

# Use the I2C bus the LSM6DSOX is wired to on your board.
lsm = LSM6DSOX(I2C(1))

# SPI alternative (replace cs= with your board's chip-select pin):
# from machine import SPI, Pin
# lsm = LSM6DSOX(SPI(1), cs=Pin("CS"))

while True:
    print("Accelerometer: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*lsm.accel()))
    print("Gyroscope:     x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}".format(*lsm.gyro()))
    time.sleep_ms(100)

Classes

class lsm6dsox.LSM6DSOX(bus: machine.I2C | machine.SPI, cs: machine.Pin | None = None, address: int = 0x6A, gyro_odr: float = 104, accel_odr: float = 104, gyro_scale: int = 2000, accel_scale: int = 4, ucf: str | None = None)

Construit une instance LSM6DSOX. Le type de bus est détecté automatiquement : si bus expose readfrom_mem, il est traité comme un machine.I2C, sinon il est traité comme un machine.SPI et cs doit être fourni. La puce est réinitialisée par logiciel, l’ODR et l’échelle demandés sont programmés, et un fichier UCF MLC est chargé s’il est fourni.

bus

Soit un bus machine.I2C, soit un bus machine.SPI configuré.

cs

machine.Pin de sélection de puce utilisée en mode SPI. Requise lorsque bus est une instance SPI, ignorée sinon.

address

Adresse I2C 7 bits du composant. Vaut par défaut 0x6A ; certaines cartes tirent la broche SDO au niveau haut, ce qui sélectionne 0x6B.

gyro_odr

Débit de données en sortie du gyroscope en Hz. Doit être l’une des valeurs 0 (désactivé), 1.6, 3.33, 6.66, 12.5, 26, 52, 104, 208, 416 ou 888.

accel_odr

Débit de données en sortie de l’accéléromètre en Hz. Même ensemble de valeurs que gyro_odr.

gyro_scale

Plage pleine échelle du gyroscope en degrés par seconde. Doit être l’une des valeurs 250, 500, 1000 ou 2000.

accel_scale

Plage pleine échelle de l’accéléromètre en g. Doit être l’une des valeurs 2, 4, 8 ou 16.

ucf

Chemin facultatif vers un fichier de vidage de registres .ucf de ST Unico-GUI. S’il est fourni, le fichier est analysé et appliqué au MLC lors de la construction au moyen de load_mlc().

reset() None

Émet une réinitialisation logicielle via CTRL3_C et bloque jusqu’à ce que le bit de réinitialisation se libère. Lève OSError si le composant ne revient pas après dix tentatives.

set_mem_bank(bank: int) None

Bascule la banque de registres FUNC_CFG. Utilisé en interne pour accéder aux pages de registres des fonctions embarquées et du concentrateur de capteurs ; rarement nécessaire dans le code applicatif.

set_embedded_functions(enable: bool, emb_ab: tuple[int, int] | None = None) tuple[int, int]

Active ou désactive le bloc de fonctions embarquées. Lorsque enable vaut True, le tuple de deux octets emb_ab est écrit dans EMB_FUNC_EN_A/EMB_FUNC_EN_B. Lorsque False, les valeurs courantes sont lues, les bits d’activation MLC/podomètre sont effacés, et les valeurs précédentes sont renvoyées afin de pouvoir être restaurées ultérieurement.

load_mlc(ucf: str) None

Applique un programme UCF MLC depuis le fichier situé au chemin ucf. Le pilote parcourt le fichier ligne par ligne, applique chaque écriture Ac <reg> <val>, puis active le BDU, route les événements MLC vers la broche d’interruption 1 et réactive les fonctions embarquées.

mlc_output() bytes | None

Si de nouveaux résultats MLC sont disponibles (bit MLC_STATUS positionné), renvoie le contenu des huit registres MLC0_SRC..MLC7_SRC sous forme d’objet de type bytes. Sinon, renvoie None.

pedometer_config(enable: bool = True, debounce: int = 10, int1_enable: bool = False, int2_enable: bool = False) None

Configure le podomètre embarqué.

enable

Active ou désactive la détection de pas sur le bloc de fonctions embarquées.

debounce

Valeur d’anti-rebond des pas écrite dans PEDO_DEB_STEPS_CONF.

int1_enable

Si True, route les événements du podomètre vers la broche INT1.

int2_enable

Si True, route les événements du podomètre vers la broche INT2.

pedometer_reset() None

Remet le compteur de pas à zéro.

steps() int

Renvoie la valeur actuelle du compteur de pas 16 bits.

gyro() tuple[float, float, float]

Renvoie le vecteur gyroscopique (x, y, z) en degrés par seconde.

accel() tuple[float, float, float]

Renvoie le vecteur d’accélération (x, y, z) en unités de gravité standard (1 g = 9,81 m/s²).