bmi270 --- BMI270 6-axis IMU

ไดรเวอร์สำหรับหน่วยวัดความเฉื่อย 6 แกน (3 แกนความเร่งและ 3 แกนไจโรสโคป) Bosch BMI270 กำลังต่ำผ่าน I2C ไดรเวอร์จะดำเนินลำดับการเริ่มต้น BMI270 ทั้งหมดระหว่างการสร้าง ได้แก่ soft reset, การปิดโหมดประหยัดพลังงาน, การอัปโหลด configuration-blob และการตรวจสอบสถานะ ก่อนที่จะกำหนดค่าอัตราข้อมูลเอาต์พุตและช่วงสเกลสูงสุดที่ต้องการ

คลาสนี้สามารถเชื่อมโยงกับอินสแตนซ์ magnetometer bmm150.BMM150 ภายนอกได้เพื่อให้ผู้เรียกสามารถใช้คู่ BMI270 + BMM150 เป็นอุปกรณ์ 9 แกนเดี่ยวผ่านเมธอด magnet()

Note

โหมด SPI ไม่ได้รับการสนับสนุนโดยไดรเวอร์นี้ การส่ง bus ที่ไม่ใช่ I2C จะทำให้เกิด ValueError

ตัวอย่าง:

import time
from machine import Pin, I2C
from bmi270 import BMI270

imu = BMI270(I2C(1, scl=Pin("P15"), sda=Pin("P14")))

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

คลาส

class bmi270.BMI270(bus: machine.I2C, cs: machine.Pin | None = None, address: int = 0x68, gyro_odr: float = 100, gyro_scale: int = 2000, accel_odr: float = 100, accel_scale: int = 4, bmm_magnet: BMM150 | None = None)

สร้างอินสแตนซ์ BMI270 และรันลำดับการเริ่มต้นการโหลดการกำหนดค่าทั้งหมด จะเกิด OSError หากรหัสชิปไม่ตรงหรือหากลำดับการโหลดล้มเหลว

bus

bus machine.I2C ที่กำหนดค่าแล้วซึ่ง sensor เชื่อมต่ออยู่

cs

สงวนไว้สำหรับโหมด SPI ต้องเป็น None; SPI ยังไม่ได้รับการรองรับในปัจจุบัน และการส่ง bus ที่ไม่ใช่ I2C จะเกิด ValueError

address

ที่อยู่ I2C 7 บิตของอุปกรณ์ ค่าเริ่มต้นคือ 0x68; บางบอร์ดต่อพิน SDO สูงซึ่งเลือก 0x69

gyro_odr

อัตราข้อมูลเอาต์พุตไจโรสโคปในหน่วย Hz ต้องเป็นหนึ่งในค่าต่อไปนี้: 0.78, 1.5, 3.1, 6.25, 12.5, 25, 50, 100, 200, 400, 800 หรือ 1200

gyro_scale

ช่วงสเกลสูงสุดของไจโรสโคปในหน่วยองศาต่อวินาที ต้องเป็นหนึ่งในค่าต่อไปนี้: 125, 250, 500, 1000 หรือ 2000

accel_odr

อัตราข้อมูลเอาต์พุตของ accelerometer ในหน่วย Hz มีชุดค่าเดียวกับ gyro_odr

accel_scale

ช่วงสเกลสูงสุดของ accelerometer ในหน่วย g ต้องเป็นหนึ่งในค่าต่อไปนี้: 2, 4, 8 หรือ 16

bmm_magnet

อินสแตนซ์ bmm150.BMM150 แบบเลือกได้ เมื่อระบุแล้ว เมธอด magnet() จะมอบหมายให้กับมัน มิฉะนั้น magnet() จะคืนค่าศูนย์

reset() None

ออกคำสั่ง soft-reset ของ BMI270 หลังจากเรียกใช้คำสั่งนี้ อุปกรณ์ต้องได้รับการเริ่มต้นใหม่ก่อนการใช้งานต่อไป

gyro() tuple[float, float, float]

คืนค่าเวกเตอร์ไจโรสโคป (x, y, z) ในหน่วยองศาต่อวินาที โดยปรับสเกลตาม gyro_scale

accel() tuple[float, float, float]

คืนค่าเวกเตอร์ความเร่ง (x, y, z) ในหน่วยแรงโน้มถ่วงมาตรฐาน (1 g = 9.81 m/s²) โดยปรับสเกลตาม accel_scale

magnet() tuple[float, float, float]

หากมีการระบุ bmm_magnet ในขณะสร้าง จะคืนค่าการอ่านล่าสุดจาก magnetometer ของอุปกรณ์นั้น มิฉะนั้นจะคืนค่า (0.0, 0.0, 0.0)