bno055 — BNO055 IMU -ajuri¶
Tämä moduuli tarjoaa ajurin Boschin BNO055 9-akseliselle absoluuttisen suunnan sensorille I2C-väylän kautta. BNO055 fuusioi kiihtyvyysanturin, magnetometrin ja gyroskoopin datan sirulla ja tarjoaa raakojen sensorikanavien lisäksi kvaternio-, Euler-kulma-, lineaarikiihtyvyys- ja painovoimalähdöt.
Esimerkkikäyttö:
import time
from machine import I2C
import bno055
bus = I2C(1)
imu = bno055.BNO055(bus)
while True:
print(imu.euler())
time.sleep_ms(100)
Luokat¶
- class bno055.BNO055(bus: machine.I2C, address: int = 0x28, mode: int = NDOF_MODE, axis: bytes = AXIS_P4)¶
Luo BNO055-ajuriolio.
buson määritettymachine.I2C-väyläolio, jota käytetään kommunikointiin sensorin kanssa.addresson laitteen 7-bittinen I2C-osoite. Oletusarvo on0x28.modeon toimintatila, johon laite asetetaan nollauksen jälkeen. Katso toimintatilavakiot alta. Oletusarvo onNDOF_MODE.axison 2-tavuinen akselien uudelleenmäärityksen konfiguraatioarvo. Katso akselien sijoitusvakiot alta. Oletusarvo onAXIS_P4.
Konstruktori varmistaa sirun ID:n, suorittaa pehmeän nollauksen, vaihtaa normaalitehoon, soveltaa akselikonfiguraation ja siirtyy pyydettyyn toimintatilaan käyttäen ulkoista oskillaattoria. Nostaa
RuntimeError-virheen, jos odotettuja ID-rekisterin arvoja ei lueta takaisin.- read_registers(register: int, size: int = 1) bytes¶
Lukee
sizetavua annetusta laiterekisteristä ja palauttaa nebytes-oliona.
- write_registers(register: int, data: bytes) None¶
Kirjoittaa annetut
data-tavut laitteeseen alkaen rekisteristäregister.
- operation_mode(mode: int = None) int¶
Hakee tai asettaa toimintatilarekisterin. Ilman argumenttia palauttaa nykyisen tilan
int-arvona.mode-argumentilla kirjoittaa uuden tilan laitteeseen. Katso toimintatilavakiot alta.
- system_trigger(data: int) None¶
Kirjoittaa
data-arvon järjestelmän laukaisurekisteriin (0x3F). Tätä käytetään sisäisesti pehmeän nollauksen (0x20) antamiseen ja ulkoisen oskillaattorin valitsemiseen (0x80).
- power_mode(mode: int = None) bytes¶
Hakee tai asettaa tehotilarekisterin. Ilman argumenttia palauttaa nykyisen tehotilarekisterin sisällön.
mode-argumentilla kirjoittaa uuden tehotilan laitteeseen.
- page(num: int = None) None¶
Hakee tai asettaa rekisterisivun. Ilman argumenttia lukee nykyisen sivurekisterin.
num-argumentilla valitsee sivun.
- read_id() bytes¶
Palauttaa 4-tavuisen ID-lohkon, joka luetaan rekisteristä
0x00. Odotettu arvo onb'\xA0\xFB\x32\x0F'.
- axis(placement: bytes = None) bytes¶
Hakee tai asettaa akselien uudelleenmäärityksen konfiguraation. Ilman argumenttia palauttaa nykyisen 2-tavuisen akselikonfiguraation.
placement-argumentilla kirjoittaa annetun 2-tavuisen akselikonfiguraation. Käytä jotakin alla olevistaAXIS_P0..AXIS_P7-vakioista.
- quaternion() list¶
Palauttaa fuusioidun suunnan 4-alkioisena liukulukulistana
[w, x, y, z], joka on skaalattu yksikkökvaternion alueelle.
- euler() list¶
Palauttaa fuusioidun suunnan 3-alkioisena liukulukulistana
[yaw, roll, pitch]asteina.
- accelerometer() list¶
Palauttaa kiihtyvyysanturin lukeman 3-alkioisena liukulukulistana
[x, y, z]yksikössä m/s^2.
- magnetometer() list¶
Palauttaa magnetometrin lukeman 3-alkioisena liukulukulistana
[x, y, z]mikroteslana.
- gyroscope() list¶
Palauttaa gyroskoopin lukeman 3-alkioisena liukulukulistana
[x, y, z]asteina sekunnissa.
Vakiot¶
Toimintatilat¶
- bno055.CONFIG_MODE: int¶
Konfiguraatiotila (
0x00). Laitteen on oltava tässä tilassa konfiguraatiorekistereiden muuttamiseksi.
- bno055.COMPASS_MODE: int¶
Kompassifuusiotila, joka käyttää kiihtyvyysanturia + magnetometriä (
0x09).
Akselien sijoitukset¶
Seuraavat 2-tavuiset arvot välitetään BNO055.axis() -metodille laitteen koordinaatiston uudelleenmäärittämiseksi. Kukin vakio on (AXIS_MAP_CONFIG, AXIS_MAP_SIGN)-rekisteripari BNO055:n datalehdestä (osio 3.4, Axis remap), valmiiksi koodattuna jollekin kahdeksasta vakiosijoitussuunnasta.
Valitse vakio, jonka lähtöakselit vastaavat sitä, miten siru on fyysisesti kiinnitetty isäntäpiirilevylle:
Vakio |
Lähtö X |
Lähtö Y |
Lähtö Z |
Tavut |
Kiinnitys |
|---|---|---|---|---|---|
|
|
|
|
etupuoli ylöspäin, 90° vastapäivään P1:stä |
|
|
|
|
|
etupuoli ylöspäin, datalehden oletus |
|
|
|
|
|
etupuoli ylöspäin, käännetty 180° |
|
|
|
|
|
etupuoli ylöspäin, 90° myötäpäivään P1:stä |
|
|
|
|
|
etupuoli alaspäin, käännetty X-akselin ympäri (konstruktorin oletus) |
|
|
|
|
|
etupuoli alaspäin, kierretty 90° vastapäivään P4:stä |
|
|
|
|
|
etupuoli alaspäin, kierretty 180° P4:stä |
|
|
|
|
|
etupuoli alaspäin, kierretty 90° myötäpäivään P4:stä |
Xc / Yc / Zc tarkoittavat sirun sisäisiä akseleita (kuten BNO055:n datalehdessä on painettu). ”Lähtö”-sarakkeet ovat akselit, jotka laite tuottaa metodien BNO055.euler(), BNO055.gyro() jne. kautta. P0–P3 ovat sirun neljä 90°-kiertoa komponenttipuoli ylöspäin -suunnassa; P4–P7 ovat samat neljä kiertoa, kun siru on käännetty selälleen.
- bno055.AXIS_P0: bytes¶
Siru etupuoli ylöspäin, kierretty 90° vastapäivään
AXIS_P1-vakiosta. Lähtöakselit:X = -Yc,Y = +Xc,Z = +Zc.
- bno055.AXIS_P1: bytes¶
Siru etupuoli ylöspäin BNO055:n datalehden oletussuunnassa. Uudelleenmääritystä ei sovelleta:
X = +Xc,Y = +Yc,Z = +Zc.
- bno055.AXIS_P2: bytes¶
Siru etupuoli ylöspäin, kierretty 180°
AXIS_P1-vakiosta. Lähtöakselit:X = -Xc,Y = -Yc,Z = +Zc.
- bno055.AXIS_P3: bytes¶
Siru etupuoli ylöspäin, kierretty 90° myötäpäivään
AXIS_P1-vakiosta. Lähtöakselit:X = +Yc,Y = -Xc,Z = +Zc.
- bno055.AXIS_P4: bytes¶
Siru käännetty selälleen (komponenttipuoli alaspäin) suhteessa
AXIS_P1-vakioon. Lähtöakselit:X = +Xc,Y = -Yc,Z = -Zc. Tätä sijoitusta käyttääBNO055-konstruktori, kunaxis-argumenttia ei anneta.
- bno055.AXIS_P5: bytes¶
Siru etupuoli alaspäin, kierretty 90° vastapäivään
AXIS_P4-vakiosta. Lähtöakselit:X = +Yc,Y = +Xc,Z = -Zc.