bno055 — BNO055 IMU upravljački program¶
Ovaj modul pruža upravljački program za Bosch BNO055 senzor apsolutne orijentacije s 9 osi preko I2C-a. BNO055 spaja podatke akcelerometra, magnetometra i žiroskopa na čipu te izlaže kvaternionske, Eulerove kutne, linearno-akceleracijske i gravitacijske izlaze uz sirove kanale senzora.
Primjer korištenja:
import time
from machine import I2C
import bno055
bus = I2C(1)
imu = bno055.BNO055(bus)
while True:
print(imu.euler())
time.sleep_ms(100)
Klase¶
- class bno055.BNO055(bus: machine.I2C, address: int = 0x28, mode: int = NDOF_MODE, axis: bytes = AXIS_P4)¶
Konstruira instancu BNO055 upravljačkog programa.
busje konfigurirani objektmachine.I2Csabirnice koji se koristi za komunikaciju sa senzorom.addressje 7-bitna I2C adresa uređaja. Zadana vrijednost je0x28.modeje način rada u koji se uređaj postavlja nakon resetiranja. Pogledajte konstante načina rada u nastavku. Zadana vrijednost jeNDOF_MODE.axisje 2-bajtna vrijednost konfiguracije preraspodjele osi. Pogledajte konstante položaja osi u nastavku. Zadana vrijednost jeAXIS_P4.
Konstruktor provjerava ID čipa, izvodi softverski reset, prebacuje na normalno napajanje, primjenjuje konfiguraciju osi i ulazi u traženi način rada koristeći vanjski oscilator. Izaziva
RuntimeErrorako se očekivane vrijednosti ID registra ne pročitaju natrag.- read_registers(register: int, size: int = 1) bytes¶
Čita
sizebajtova iz zadanog registra uređaja i vraća ih kaobytesobjekt.
- write_registers(register: int, data: bytes) None¶
Zapisuje zadane
databajtove u uređaj počevši odregister.
- operation_mode(mode: int = None) int¶
Dohvaća ili postavlja registar načina rada. Bez argumenta vraća trenutni način rada kao
int. S argumentommodezapisuje novi način rada u uređaj. Pogledajte konstante načina rada u nastavku.
- system_trigger(data: int) None¶
Zapisuje
datau registar sistemskog okidača (0x3F). To se interno koristi za izdavanje softverskog reseta (0x20) i za odabir vanjskog oscilatora (0x80).
- power_mode(mode: int = None) bytes¶
Dohvaća ili postavlja registar načina napajanja. Bez argumenta vraća trenutni sadržaj registra načina napajanja. S argumentom
modezapisuje novi način napajanja u uređaj.
- page(num: int = None) None¶
Dohvaća ili postavlja stranicu registra. Bez argumenta čita trenutni registar stranice. S argumentom
numodabire stranicu.
- read_id() bytes¶
Vraća 4-bajtni ID blok pročitan iz registra
0x00. Očekivana vrijednost jeb'\xA0\xFB\x32\x0F'.
- axis(placement: bytes = None) bytes¶
Dohvaća ili postavlja konfiguraciju preraspodjele osi. Bez argumenta vraća trenutnu 2-bajtnu konfiguraciju osi. S argumentom
placementzapisuje danu 2-bajtnu konfiguraciju osi. Koristite jednu od konstantiAXIS_P0..AXIS_P7u nastavku.
- quaternion() list¶
Vraća spojenu orijentaciju kao listu od 4 elementa
[w, x, y, z]brojeva s pomičnim zarezom skaliranih na raspon jediničnog kvaterniona.
- euler() list¶
Vraća spojenu orijentaciju kao listu od 3 elementa
[yaw, roll, pitch]brojeva s pomičnim zarezom u stupnjevima.
- accelerometer() list¶
Vraća očitanje akcelerometra kao listu od 3 elementa
[x, y, z]brojeva s pomičnim zarezom u m/s^2.
- magnetometer() list¶
Vraća očitanje magnetometra kao listu od 3 elementa
[x, y, z]brojeva s pomičnim zarezom u mikro-Teslama.
- gyroscope() list¶
Vraća očitanje žiroskopa kao listu od 3 elementa
[x, y, z]brojeva s pomičnim zarezom u stupnjevima u sekundi.
Konstante¶
Načini rada¶
- bno055.CONFIG_MODE: int¶
Konfiguracijski način rada (
0x00). Uređaj mora biti u ovom načinu rada da bi se promijenili konfiguracijski registri.
- bno055.COMPASS_MODE: int¶
Kompasni fuzijski način rada koji koristi akcelerometar + magnetometar (
0x09).
Položaji osi¶
Sljedeće 2-bajtne vrijednosti prosljeđuju se metodi BNO055.axis() za preraspodjelu koordinatnog sustava uređaja. Svaka konstanta je par registara (AXIS_MAP_CONFIG, AXIS_MAP_SIGN) iz BNO055 podatkovne tablice (Odjeljak 3.4, Axis remap), unaprijed kodiran za jednu od osam standardnih orijentacija položaja.
Odaberite konstantu čije izlazne osi odgovaraju načinu na koji je čip fizički montiran na matičnu PCB:
Konstanta |
Izlaz X |
Izlaz Y |
Izlaz Z |
Bajtovi |
Montaža |
|---|---|---|---|---|---|
|
|
|
|
licem prema gore, 90° u smjeru obrnutom od kazaljke na satu od P1 |
|
|
|
|
|
licem prema gore, zadana vrijednost podatkovne tablice |
|
|
|
|
|
licem prema gore, zakrenuto za 180° |
|
|
|
|
|
licem prema gore, 90° u smjeru kazaljke na satu od P1 |
|
|
|
|
|
licem prema dolje, preokrenuto oko osi X (zadana vrijednost konstruktora) |
|
|
|
|
|
licem prema dolje, zakrenuto za 90° u smjeru obrnutom od kazaljke na satu od P4 |
|
|
|
|
|
licem prema dolje, zakrenuto za 180° od P4 |
|
|
|
|
|
licem prema dolje, zakrenuto za 90° u smjeru kazaljke na satu od P4 |
Xc / Yc / Zc označavaju intrinzične osi čipa (kako su otisnute u BNO055 podatkovnoj tablici). Stupci „Output” su osi koje uređaj isporučuje putem BNO055.euler(), BNO055.gyro() itd. P0 do P3 su četiri 90° rotacije čipa u orijentaciji s komponentnom stranom prema gore; P4 do P7 su iste četiri rotacije nakon preokretanja čipa na leđa.
- bno055.AXIS_P0: bytes¶
Čip licem prema gore, zakrenut za 90° u smjeru obrnutom od kazaljke na satu od
AXIS_P1. Izlazne osi:X = -Yc,Y = +Xc,Z = +Zc.
- bno055.AXIS_P1: bytes¶
Čip licem prema gore u zadanoj orijentaciji BNO055 podatkovne tablice. Ne primjenjuje se preraspodjela:
X = +Xc,Y = +Yc,Z = +Zc.
- bno055.AXIS_P2: bytes¶
Čip licem prema gore, zakrenut za 180° od
AXIS_P1. Izlazne osi:X = -Xc,Y = -Yc,Z = +Zc.
- bno055.AXIS_P3: bytes¶
Čip licem prema gore, zakrenut za 90° u smjeru kazaljke na satu od
AXIS_P1. Izlazne osi:X = +Yc,Y = -Xc,Z = +Zc.
- bno055.AXIS_P4: bytes¶
Čip preokrenut na leđa (komponentna strana prema dolje) u odnosu na
AXIS_P1. Izlazne osi:X = +Xc,Y = -Yc,Z = -Zc. Ovo je položaj koji koristi konstruktorBNO055kada nije naveden argumentaxis.
- bno055.AXIS_P5: bytes¶
Čip licem prema dolje, zakrenut za 90° u smjeru obrnutom od kazaljke na satu od
AXIS_P4. Izlazne osi:X = +Yc,Y = +Xc,Z = -Zc.