0. Komponenty i oprogramowanie wymagane do korzystania z modułu GY-91 MPU-9250 + BMP280

Wymagane komponenty:

{Produkt: 2000}
{Produkt: 1338}

I. Jak używać czujnika bezwładności z Arduino GY-91 i Arduino

Ten moduł IMU to mała płytka, na której umieszczone są wszystkie niezbędne czujniki dla 10 stopni swobody. Moduł ten komunikuje się z Arduino lub mikrokontrolerami poprzez interfejs I2C. Dzięki istniejącemu kodowi źródłowemu i funkcjom FreeIMU możesz z łatwością używać tego IMU jako systemu AHRS w sterowaniu lotem. Możesz używać tego modułu w VTOL, modelach samolotów, UAV, a także w urządzeniach przemysłowych i medycznych.

Ten czujnik ma 8 pinów:

  • - VIN: zasilanie modułu - 5 V.
  • - GND: masa
  • - 3V3: Zasilanie modułu - 3,3 V
  • - SLC: Zegar I2C / Zegar SPI
  • - SDA: pin danych I2C / MOSI dla SPI
  • - SAO / SDO: pin ustawiania adresu dla pinów I2C / MISO dla SPI
  • - NCS: pin wyboru chipa tylko dla czujnika MPU-9250
  • - CSB: pin wyboru chipa tylko dla czujnika BMP280

Możesz zobaczyć pinout tego modułu na poniższym obrazku:

II. Eksperymentalne procedury

Połączenie

Moduł zasilany jest bezpośrednio z Arduino , więc nie potrzebujemy zewnętrznego zasilania.

Piny są połączone zgodnie z tabelą:

Moduł pinów

Przypnij przez Arduino UNO

VCC

5V

GND

GND

SCL

DO 5

SDA

A4

Jak pokazano na poniższym rysunku:

Kod

Otwórz Arduino IDE i zainstaluj następujące biblioteki:

Najpierw należy dodać bibliotekiAdafruit_BMP280_Library ” i „ MPU9250_asukiaaa ” w IDE Arduino . Aby to zrobić, pobierz je, klikając ich nazwy, a po wejściu na GitHub pobierz je. Zainstaluj je później z Program -> Dołącz bibliotekę -> Dodaj bibliotekę .ZIP ...), znajdź pobrany tablet i zaakceptuj.

Teraz otwórz nowy szkic i wklej następujący kod:

/ *

przez MohammedDamirchi

https://electropeak.com/learn/

* /

#include <MPU9250_asukiaaa.h>

#include <Adafruit_BMP280.h>

Adafruit_BMP280 bme; // I2C

MPU9250_asukiaaa mySensor;

float aX, aY, aZ, aSqrt, gX, gY, gZ, mDirection, mX, mY, mZ;

void setup () {

Serial.begin (115200);

while (! Serial);

#ifdef _ESP32_HAL_I2C_H_ // Dla ESP32

Wire.begin (SDA_PIN, SCL_PIN);

mySensor.setWire (& Wire);

#endif

bme.begin ();

mySensor.beginAccel ();

mySensor.beginGyro ();

mySensor.beginMag ();

// Możesz ustawić własne przesunięcie wartości mag

// mySensor.magXOffset = -50;

// mySensor.magYOffset = -55;

// mySensor.magZOffset = -10;

}

void loop () {

if (mySensor.accelUpdate () == 0) {

aX = mySensor.accelX ();

aY = mySensor.accelY ();

aZ = mySensor.accelZ ();

aSqrt = mySensor.accelSqrt ();

Serial.print ("accelX:" + String (aX));

Serial.print ("\ taccelY:" + String (aY));

Serial.print ("\ taccelZ:" + String (aZ));

Serial.print ("\ taccelSqrt:" + String (aSqrt));

}

if (mySensor.gyroUpdate () == 0) {

gX = mySensor.gyroX ();

gY = mySensor.gyroY ();

gZ = mySensor.gyroZ ();

Serial.print ("\ tgyroX:" + String (gX));

Serial.print ("\ tgyroY:" + String (gY));

Serial.print ("\ tgyroZ:" + String (gZ));

}

if (mySensor.magUpdate () == 0) {

mX = mySensor.magX ();

mY = mySensor.magY ();

mZ = mySensor.magZ ();

mDirection = mySensor.magHorizDirection ();

Serial.print ("\ tmagX:" + String (mX));

Serial.print ("\ tmaxY:" + String (mY));

Serial.print ("\ tmagZ:" + String (mZ));

Serial.print ("\ thorizontalDirection:" + String (mDirection));

}

Serial.print ("\ tTemperature (* C):");

Serial.print (bme.readTemperature ());

Serial.print ("\ tCiśnienie (cale (Hg)):");

Serial.print (bme.readPressure () / 3377);

Serial.print ("\ tApproxAltitude (m):");

Serial.print (bme.readAltitude (1013.25)); // to powinno być dostosowane do twojego lokalnego forcase

Serial.println (""); // Dodaj pusty wiersz

}

Gdy już wszystko podłączysz, port i płyta są w porządku, prześlij kod na płytę i możesz teraz otworzyć „Ploter szeregowy” (lub za pomocą monitora szeregowego z zakładki Narzędzia), aby zobaczyć zarejestrowane ruchy. Możesz je przefiltrować i spróbować zmodyfikować przykładowy kod. Oczywiście możesz wypróbować przykłady z bibliotek.

Więcej informacji na temat akcelerometrów można znaleźć w następujących samouczkach: