imu --- ตัวช่วย IMU สำหรับ Arduino Nano 33 BLE Sense¶
Note
หน้านี้อธิบายโมดูล Python imu ของ Arduino Nano 33 BLE Sense (ตัวห่อบางๆ รอบๆ ไดรเวอร์ IMU บนบอร์ด) สำหรับโมดูล imu ระดับ C ของ OpenMV ที่มาพร้อมกับบอร์ดกล้อง OPENMV_N6, OPENMV_RT1060 และ OPENMV_AE3 ดูได้ที่ imu --- imu sensor
โมดูลนี้เป็นตัวห่อบางๆ เฉพาะบอร์ดที่เปิดเผยหน่วยวัดแรงเฉื่อยบนบอร์ดของ Arduino Nano 33 BLE Sense ในรูปแบบออบเจกต์ IMU เดียว รองรับบอร์ดทั้งสองรีวิชันอย่างโปร่งใส:
Rev 1 ใช้ LSM9DS1 9-axis IMU ตัวเดียว
Rev 2 ใช้ Bosch BMI270 (accelerometer + gyroscope) ร่วมกับ Bosch BMM150 magnetometer
คอนสตรัคเตอร์จะตรวจสอบบัส I2C เพื่อหาที่อยู่ BMI270 (0x68) และเลือกไดรเวอร์ที่ตรงกันโดยอัตโนมัติ ทำให้โค้ดของผู้ใช้เขียนครั้งเดียวและทำงานได้บนทั้งสองรีวิชัน
ตัวอย่าง:
import time
import imu
from machine import Pin, I2C
bus = I2C(1, scl=Pin("P15"), sda=Pin("P14"))
sensor = imu.IMU(bus)
while True:
print('Accelerometer: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}'.format(*sensor.accel()))
print('Gyroscope: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}'.format(*sensor.gyro()))
print('Magnetometer: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}'.format(*sensor.magnet()))
print("")
time.sleep_ms(100)
class IMU¶
- class imu.IMU(bus: 'machine.I2C')¶
สร้างออบเจกต์ IMU ที่ผูกกับบัส I2C
bus คืออินสแตนซ์
machine.I2Cที่เริ่มต้นแล้วและเชื่อมต่อกับ IMU บนบอร์ด
เมื่อสร้างอินสแตนซ์จะมีการสแกนบัส: หากอุปกรณ์ตอบสนองที่ที่อยู่
0x68จะสร้างคู่BMI270และBMM150(Nano 33 BLE Sense Rev 2) มิฉะนั้นจะสร้างLSM9DS1(Rev 1) ไดรเวอร์ที่ใช้งานจะถูกเก็บไว้ในแอตทริบิวต์imuและตั้งค่าด้วยช่วงและอัตราข้อมูลขาออกเริ่มต้น- accel() tuple[float, float, float]¶
คืนค่าการอ่าน accelerometer ล่าสุดเป็น tuple
(x, y, z)ในหน่วย g (แรงโน้มถ่วงมาตรฐาน)