Índice:

Rastreamento de movimento usando MPU-6000 e Arduino Nano: 4 etapas
Rastreamento de movimento usando MPU-6000 e Arduino Nano: 4 etapas
Anonim
Image
Image

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:

Hardware necessário
Hardware necessário
Hardware necessário
Hardware necessário
Hardware necessário
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:

Conexão de hardware
Conexão de hardware
Conexão de hardware
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:

Código para rastreamento de movimento
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:

Formulários
Formulários

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.

Recomendado: