lsm6dsox --- IMU 6 trục LSM6DSOX¶
Driver cho bộ đo quán tính 6 trục (IMU) ST LSM6DSOX iNEMO (gia tốc kế 3 trục cộng con quay hồi chuyển 3 trục) qua I2C hoặc SPI. Ngoài đầu ra IMU cơ bản, driver còn cung cấp các hàm nhúng trên chip: máy đo bước (step counter) có thể cấu hình và Machine Learning Core (MLC), có thể được lập trình qua các tệp UCF xuất từ công cụ Unico-GUI của ST.
Ví dụ:
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)
Lớp¶
- 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)¶
Khởi tạo một thực thể
LSM6DSOX. Loại bus được phát hiện tự động: nếubuscóreadfrom_memthì được coi làmachine.I2C, ngược lại được coi làmachine.SPIvàcsphải được cung cấp. Chip được reset mềm, ODR và thang đo được yêu cầu được lập trình, và tệp UCF MLC được tải nếu được cung cấp.busMột bus
machine.I2Choặcmachine.SPIđã được cấu hình.csChân chọn chip
machine.Pinđược dùng ở chế độ SPI. Bắt buộc khibuslà thực thể SPI, bỏ qua trong trường hợp khác.addressĐịa chỉ I2C 7-bit của thiết bị. Mặc định là
0x6A; một số bo mạch nối chân SDO lên cao để chọn0x6B.gyro_odrTốc độ dữ liệu đầu ra của con quay hồi chuyển tính bằng Hz. Phải là một trong các giá trị
0(tắt),1.6,3.33,6.66,12.5,26,52,104,208,416hoặc888.accel_odrTốc độ dữ liệu đầu ra của gia tốc kế tính bằng Hz. Cùng tập hợp giá trị như
gyro_odr.gyro_scalePhạm vi đo toàn thang của con quay hồi chuyển tính bằng độ-trên-giây. Phải là một trong các giá trị
250,500,1000hoặc2000.accel_scalePhạm vi đo toàn thang của gia tốc kế tính bằng g. Phải là một trong các giá trị
2,4,8hoặc16.ucfĐường dẫn tùy chọn đến tệp dump thanh ghi
.ucfcủa ST Unico-GUI. Nếu được cung cấp, tệp được phân tích và áp dụng vào MLC trong quá trình khởi tạo thông quaload_mlc().
- reset() None¶
Thực hiện reset phần mềm qua
CTRL3_Cvà chặn cho đến khi bit reset được xóa. NémOSErrornếu thiết bị không phản hồi trong vòng mười lần thử lại.
- set_mem_bank(bank: int) None¶
Chuyển đổi bank thanh ghi FUNC_CFG. Được sử dụng nội bộ để truy cập các trang thanh ghi hàm nhúng và sensor-hub; hiếm khi cần thiết trong mã ứng dụng.
- set_embedded_functions(enable: bool, emb_ab: tuple[int, int] | None = None) tuple[int, int]¶
Bật hoặc tắt khối hàm nhúng. Khi
enablelàTrue, bộ đôiemb_abhai byte được ghi vàoEMB_FUNC_EN_A/EMB_FUNC_EN_B. Khi làFalse, các giá trị hiện tại được đọc, các bit bật MLC/pedometer được xóa, và các giá trị trước đó được trả về để có thể khôi phục sau.
- load_mlc(ucf: str) None¶
Áp dụng chương trình UCF MLC từ tệp tại đường dẫn
ucf. Driver duyệt qua tệp từng dòng, áp dụng mỗi lần ghiAc <reg> <val>, sau đó bật BDU, định tuyến sự kiện MLC đến chân ngắt 1 và bật lại các hàm nhúng.
- mlc_output() bytes | None¶
Nếu có kết quả MLC mới (bit
MLC_STATUSđược đặt), trả về nội dung của tám thanh ghiMLC0_SRC..MLC7_SRCdưới dạng đối tượng giống bytes. Ngược lại trả vềNone.
- pedometer_config(enable: bool = True, debounce: int = 10, int1_enable: bool = False, int2_enable: bool = False) None¶
Cấu hình máy đo bước nhúng.
enableBật hoặc tắt phát hiện bước trên khối hàm nhúng.
debounceGiá trị khử rung bước được ghi vào
PEDO_DEB_STEPS_CONF.int1_enableNếu là
True, định tuyến sự kiện pedometer đến chânINT1.int2_enableNếu là
True, định tuyến sự kiện pedometer đến chânINT2.