Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
MPU-6000 é um sensor de rastreamento de movimento de 6 eixos com acelerômetro de 3 eixos e giroscópio de 3 eixos embutidos. Este sensor é capaz de rastrear de forma eficiente a posição e localização exata de um objeto no plano tridimensional. Pode ser empregado em sistemas que requerem análise de posição com a mais alta precisão.
Neste tutorial, a interface do módulo sensor MPU-6000 com o arduino nano foi ilustrada. Para ler os valores de aceleração e ângulo de rotação, usamos o arduino nano com um adaptador I2c. Este adaptador I2C torna a conexão ao módulo sensor mais fácil e confiável.
Etapa 1: Hardware necessário:
Os materiais de que precisamos para cumprir nosso objetivo incluem os seguintes componentes de hardware:
1. MPU-6000
2. Arduino Nano
3. Cabo I2C
4. Escudo I2C para arduino nano
Etapa 2: Conexão de Hardware:
A seção de conexão de hardware explica basicamente as conexões de fiação necessárias entre o sensor e o arduino nano. Garantir as conexões corretas é a necessidade básica ao trabalhar em qualquer sistema para a saída desejada. Portanto, as conexões necessárias são as seguintes:
O MPU-6000 funcionará em I2C. Aqui está o diagrama de fiação de exemplo, demonstrando como conectar cada interface do sensor.
Fora da caixa, a placa é configurada para uma interface I2C, como tal, recomendamos usar esta conexão se você for agnóstico.
Você só precisa de quatro fios! São necessárias apenas quatro conexões dos pinos Vcc, Gnd, SCL e SDA e estes são conectados com a ajuda do cabo I2C.
Essas conexões são demonstradas nas fotos acima.
Etapa 3: Código para rastreamento de movimento:
Vamos começar com o código do Arduino agora.
Ao usar o módulo sensor com o arduino, incluímos a biblioteca Wire.h. A biblioteca "Wire" contém as funções que facilitam a comunicação i2c entre o sensor e a placa arduino.
Todo o código do arduino é fornecido abaixo para a conveniência do usuário:
#incluir
// O endereço I2C do MPU-6000 é 0x68 (104)
#define Addr 0x68
void setup ()
{
// Inicializar a comunicação I2C como Mestre
Wire.begin ();
// Inicialize a comunicação serial, defina a taxa de transmissão = 9600
Serial.begin (9600);
// Iniciar a transmissão I2C
Wire.beginTransmission (Addr);
// Selecione o registro de configuração do giroscópio
Wire.write (0x1B);
// Faixa de escala total = 2.000 dps
Wire.write (0x18);
// Pare a transmissão I2C
Wire.endTransmission ();
// Iniciar a transmissão I2C
Wire.beginTransmission (Addr);
// Selecione o registro de configuração do acelerômetro
Wire.write (0x1C);
// Faixa de escala total = +/- 16g
Wire.write (0x18);
// Pare a transmissão I2C
Wire.endTransmission ();
// Iniciar a transmissão I2C
Wire.beginTransmission (Addr);
// Selecione o registro de gerenciamento de energia
Wire.write (0x6B);
// PLL com referência xGyro
Wire.write (0x01);
// Pare a transmissão I2C
Wire.endTransmission ();
atraso (300);
}
void loop ()
{
dados internos não assinados [6];
// Iniciar a transmissão I2C
Wire.beginTransmission (Addr);
// Selecione o registro de dados
Wire.write (0x3B);
// Pare a transmissão I2C
Wire.endTransmission ();
// Solicita 6 bytes de dados
Wire.requestFrom (Addr, 6);
// Lê 6 bytes de dados
if (Wire.available () == 6)
{
dados [0] = Wire.read ();
dados [1] = Wire.read ();
dados [2] = Wire.read ();
dados [3] = Wire.read ();
dados [4] = Wire.read ();
dados [5] = Wire.read ();
}
// Converta os dados
int xAccl = dados [0] * 256 + dados [1];
int yAccl = dados [2] * 256 + dados [3];
int zAccl = dados [4] * 256 + dados [5];
// Iniciar a transmissão I2C
Wire.beginTransmission (Addr);
// Selecione o registro de dados
Wire.write (0x43);
// Pare a transmissão I2C
Wire.endTransmission ();
// Solicita 6 bytes de dados
Wire.requestFrom (Addr, 6);
// Lê 6 bytes de dados
if (Wire.available () == 6)
{
dados [0] = Wire.read ();
dados [1] = Wire.read ();
dados [2] = Wire.read ();
dados [3] = Wire.read ();
dados [4] = Wire.read ();
dados [5] = Wire.read ();
}
// Converta os dados
int xGyro = dados [0] * 256 + dados [1];
int yGyro = dados [2] * 256 + dados [3];
int zGyro = dados [4] * 256 + dados [5];
// Dados de saída para monitor serial
Serial.print ("Aceleração no eixo X:");
Serial.println (xAccl);
Serial.print ("Aceleração no eixo Y:");
Serial.println (yAccl);
Serial.print ("Aceleração no eixo Z:");
Serial.println (zAccl);
Serial.print ("Eixo X de rotação:");
Serial.println (xGyro);
Serial.print ("Eixo Y de rotação:");
Serial.println (yGyro);
Serial.print ("Eixo Z de rotação:");
Serial.println (zGyro);
atraso (500);
}
Na biblioteca de fios, Wire.write () e Wire.read () são usados para escrever os comandos e ler a saída do sensor.
Serial.print () e Serial.println () são usados para exibir a saída do sensor no monitor serial do IDE do Arduino.
A saída do sensor é mostrada na imagem acima.
Etapa 4: Aplicativos:
MPU-6000 é um sensor de rastreamento de movimento, que encontra sua aplicação na interface de movimento de smartphones e tablets. Em smartphones, esses sensores podem ser empregados em aplicativos como comandos de gestos para aplicativos e controle de telefone, jogos aprimorados, realidade aumentada, captura e visualização de fotos panorâmicas e navegação de pedestres e veículos. A tecnologia MotionTracking pode converter aparelhos e tablets em poderosos dispositivos 3D inteligentes que podem ser usados em aplicações que variam de monitoramento de saúde e condicionamento físico a serviços baseados em localização.