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หากรหัสชิปไม่ตรงหรือหากลำดับการโหลดล้มเหลวbusbus
machine.I2Cที่กำหนดค่าแล้วซึ่ง sensor เชื่อมต่ออยู่csสงวนไว้สำหรับโหมด SPI ต้องเป็น
None; SPI ยังไม่ได้รับการรองรับในปัจจุบัน และการส่ง bus ที่ไม่ใช่ I2C จะเกิดValueErroraddressที่อยู่ I2C 7 บิตของอุปกรณ์ ค่าเริ่มต้นคือ
0x68; บางบอร์ดต่อพิน SDO สูงซึ่งเลือก0x69gyro_odrอัตราข้อมูลเอาต์พุตไจโรสโคปในหน่วย Hz ต้องเป็นหนึ่งในค่าต่อไปนี้:
0.78,1.5,3.1,6.25,12.5,25,50,100,200,400,800หรือ1200gyro_scaleช่วงสเกลสูงสุดของไจโรสโคปในหน่วยองศาต่อวินาที ต้องเป็นหนึ่งในค่าต่อไปนี้:
125,250,500,1000หรือ2000accel_odrอัตราข้อมูลเอาต์พุตของ accelerometer ในหน่วย Hz มีชุดค่าเดียวกับ
gyro_odraccel_scaleช่วงสเกลสูงสุดของ accelerometer ในหน่วย g ต้องเป็นหนึ่งในค่าต่อไปนี้:
2,4,8หรือ16bmm_magnetอินสแตนซ์
bmm150.BMM150แบบเลือกได้ เมื่อระบุแล้ว เมธอดmagnet()จะมอบหมายให้กับมัน มิฉะนั้นmagnet()จะคืนค่าศูนย์
- reset() None¶
ออกคำสั่ง soft-reset ของ BMI270 หลังจากเรียกใช้คำสั่งนี้ อุปกรณ์ต้องได้รับการเริ่มต้นใหม่ก่อนการใช้งานต่อไป
- gyro() tuple[float, float, float]¶
คืนค่าเวกเตอร์ไจโรสโคป
(x, y, z)ในหน่วยองศาต่อวินาที โดยปรับสเกลตามgyro_scale