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 : sibusexposereadfrom_mem, il est traité comme unmachine.I2C, sinon il est traité comme unmachine.SPIetcsdoit ê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.busSoit un bus
machine.I2C, soit un busmachine.SPIconfiguré.csmachine.Pinde sélection de puce utilisée en mode SPI. Requise lorsquebusest une instance SPI, ignorée sinon.addressAdresse I2C 7 bits du composant. Vaut par défaut
0x6A; certaines cartes tirent la broche SDO au niveau haut, ce qui sélectionne0x6B.gyro_odrDé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,416ou888.accel_odrDébit de données en sortie de l’accéléromètre en Hz. Même ensemble de valeurs que
gyro_odr.gyro_scalePlage pleine échelle du gyroscope en degrés par seconde. Doit être l’une des valeurs
250,500,1000ou2000.accel_scalePlage pleine échelle de l’accéléromètre en g. Doit être l’une des valeurs
2,4,8ou16.ucfChemin facultatif vers un fichier de vidage de registres
.ucfde ST Unico-GUI. S’il est fourni, le fichier est analysé et appliqué au MLC lors de la construction au moyen deload_mlc().
- reset() None¶
Émet une réinitialisation logicielle via
CTRL3_Cet bloque jusqu’à ce que le bit de réinitialisation se libère. LèveOSErrorsi 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
enablevautTrue, le tuple de deux octetsemb_abest écrit dansEMB_FUNC_EN_A/EMB_FUNC_EN_B. LorsqueFalse, 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 écritureAc <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_STATUSpositionné), renvoie le contenu des huit registresMLC0_SRC..MLC7_SRCsous forme d’objet de type bytes. Sinon, renvoieNone.
- pedometer_config(enable: bool = True, debounce: int = 10, int1_enable: bool = False, int2_enable: bool = False) None¶
Configure le podomètre embarqué.
enableActive ou désactive la détection de pas sur le bloc de fonctions embarquées.
debounceValeur d’anti-rebond des pas écrite dans
PEDO_DEB_STEPS_CONF.int1_enableSi
True, route les événements du podomètre vers la brocheINT1.int2_enableSi
True, route les événements du podomètre vers la brocheINT2.