Mobile
Este módulo IMU é uma pequena placa na qual todos os sensores necessários para 10 graus de liberdade são colocados. Este módulo se comunica com Arduino ou microcontroladores através da interface I2C. Com o código-fonte e funções existentes do FreeIMU, você pode facilmente usar este IMU como um sistema AHRS em controles de vôo. Você pode usar este módulo em VTOL, aeromodelos, UAVS e também em dispositivos industriais e médicos.
Este sensor possui 8 pinos:
Você pode ver a pinagem deste módulo na imagem abaixo:
Conexão
O módulo é alimentado diretamente por Arduino , portanto, não precisamos de uma fonte de alimentação externa.
Os pinos são conectados de acordo com a tabela:
Módulo Pin
Pino de Arduino UNO
VCC
5V
GND
SCL
PARA 5
SDA
Conforme indicado na figura a seguir:
Abra Arduino IDE e instale as seguintes bibliotecas:
Em primeiro lugar, você deve adicionar as bibliotecas " Adafruit_BMP280_Library " e " MPU9250_asukiaaa " no IDE Arduino . Para fazer isso, baixe-os clicando em seus nomes e, depois de entrar no GitHub, baixe-o. Instale-os mais tarde em Programa -> Incluir Biblioteca -> Adicionar Biblioteca .ZIP ...), encontre o tablet baixado e aceite.
Agora, abra um novo esboço e cole o seguinte código:
/ *
por 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_ // Para ESP32
Wire.begin (SDA_PIN, SCL_PIN);
mySensor.setWire (& Wire);
#fim se
bme.begin ();
mySensor.beginAccel ();
mySensor.beginGyro ();
mySensor.beginMag ();
// Você pode definir seu próprio deslocamento para valores 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 = meuSensor.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 ("\ tTemperatura (* C):");
Serial.print (bme.readTemperature ());
Serial.print ("\ tPressure (Polegadas (Hg)):");
Serial.print (bme.readPressure () / 3377);
Serial.print ("\ tApproxAltitude (m):");
Serial.print (bme.readAltitude (1013,25)); // isso deve ser ajustado para sua forcase local
Serial.println (""); // Adicione uma linha vazia
Depois de ter tudo conectado, a porta e a placa estão bem, faça o upload do código para a placa e agora você pode abrir o "Serial Plotter" (ou com o Serial Monitor, na aba Ferramentas) para ver os movimentos registrados. Você pode filtrá-los e tentar modificar o código de exemplo. Claro, você pode tentar os exemplos das bibliotecas.