Índice:
- Etapa 1: Hardware necessário:
- Etapa 2: Conexão de Hardware:
- Etapa 3: Código para rastreamento de movimento:
- Etapa 4: Aplicativos:
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:35
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 fóton de partícula foi ilustrada. Para ler os valores de aceleração e ângulo de rotação, usamos partícula 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 necessários para realizar nossa tarefa incluem os componentes de hardware mencionados abaixo:
1. MPU-6000
2. Partícula de fóton
3. Cabo I2C
4. Escudo I2C para partícula de fóton
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 fóton da partícula. 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 da partícula agora.
Ao usar o módulo sensor com o arduino, incluímos as bibliotecas application.h e spark_wiring_i2c.h. A biblioteca "application.h" e spark_wiring_i2c.h contém as funções que facilitam a comunicação i2c entre o sensor e a partícula.
Todo o código da partícula é fornecido abaixo para a conveniência do usuário:
# include # include // MPU-6000 I2C address is 0x68 (104) #define Addr 0x68 int xGyro = 0, yGyro = 0, zGyro = 0, xAccl = 0, yAccl = 0, zAccl = 0; void setup () {// Definir a variável Particle.variable ("i2cdevice", "MPU-6000"); Particle.variable ("xAccl", xAccl); Particle.variable ("yAccl", yAccl); Particle.variable ("zAccl", zAccl); Particle.variable ("xGyro", xGyro); Particle.variable ("yGyro", yGyro); Particle.variable ("zGyro", zGyro); // Inicializar a comunicação I2C como Master Wire.begin (); // Inicializar a comunicação serial, definir a taxa de transmissão = 9600 Serial.begin (9600); // Inicia a transmissão I2C Wire.beginTransmission (Addr); // Selecione o registro de configuração do giroscópio Wire.write (0x1B); // Faixa de escala total = 2000 dps Wire.write (0x18); // Pára a transmissão I2C Wire.endTransmission (); // Inicia 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); // Pára a transmissão I2C Wire.endTransmission (); // Inicia 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); // Pára a transmissão I2C Wire.endTransmission (); atraso (300); } void loop () {dados internos não assinados [6]; // Inicia a transmissão I2C Wire.beginTransmission (Addr); // Selecione o registro de dados Wire.write (0x3B); // Pára a transmissão I2C Wire.endTransmission (); // Solicita 6 bytes de dados Wire.requestFrom (Addr, 6); // Lê 6 bytes de dados if (Wire.available () == 6) {data [0] = Wire.read (); dados [1] = Wire.read (); dados [2] = Wire.read (); dados [3] = Wire.read (); dados [4] = Wire.read (); dados [5] = Wire.read (); } atraso (800); // Converte os dados xAccl = ((data [1] * 256) + data [0]); if (xAccl> 32767) {xAccl - = 65536; } yAccl = ((dados [3] * 256) + dados [2]); if (yAccl> 32767) {yAccl - = 65536; } zAccl = ((dados [5] * 256) + dados [4]); if (zAccl> 32767) {zAccl - = 65536; } atraso (800); // Inicia a transmissão I2C Wire.beginTransmission (Addr); // Selecione o registro de dados Wire.write (0x43); // Pára a transmissão I2C Wire.endTransmission (); // Solicita 6 bytes de dados Wire.requestFrom (Addr, 6); // Lê 6 bytes de dados if (Wire.available () == 6) {data [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 xGyro = ((dados [1] * 256) + dados [0]); if (xGyro> 32767) {xGyro - = 65536; } yGyro = ((dados [3] * 256) + dados [2]); if (yGyro> 32767) {yGyro - = 65536; } zGyro = ((dados [5] * 256) + dados [4]); if (zGyro> 32767) {zGyro - = 65536; } // Dados de saída para o painel Particle.publish ("Aceleração no eixo X:", String (xAccl)); atraso (1000); Particle.publish ("Aceleração no eixo Y:", String (yAccl)); atraso (1000); Particle.publish ("Acceleration in Z-Axis:", String (zAccl)); atraso (1000); Particle.publish ("X-Axis of Rotation:", String (xGyro)); atraso (1000); Particle.publish ("Y-Axis of Rotation:", String (yGyro)); atraso (1000); Particle.publish ("Z-Axis of Rotation:", String (zGyro)); atraso (1000); }
A função Particle.variable () cria as variáveis para armazenar a saída do sensor e a função Particle.publish () exibe a saída no painel do site.
A saída do sensor é mostrada na imagem acima para sua referência.
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.
Recomendado:
Medição de aceleração usando H3LIS331DL e fóton de partículas: 4 etapas
Medição de Aceleração Usando H3LIS331DL e Particle Photon: H3LIS331DL, é um acelerômetro linear de 3 eixos de baixa potência e alto desempenho pertencente à família “nano”, com interface serial digital I²C. H3LIS331DL tem escalas completas selecionáveis pelo usuário de ± 100g / ± 200g / ± 400g e é capaz de medir acelerações w
Sensor de umidade usando partículas de fóton: 6 etapas
Sensor de umidade usando partícula de fóton: Introdução Neste tutorial, vamos construir um sensor de umidade usando uma partícula de fóton e sua antena interna ou / e externa de WiFi. A força do WiFi depende da quantidade de umidade do ar e também do solo. Usamos este princípio
Medição de temperatura usando MCP9803 e fóton de partículas: 4 etapas
Medição de temperatura usando MCP9803 e partícula de fóton: MCP9803 é um sensor de temperatura de alta precisão de 2 fios. Eles são incorporados a registros programáveis pelo usuário que facilitam as aplicações de detecção de temperatura. Este sensor é adequado para um sistema de monitoramento de temperatura multi-zona altamente sofisticado
Monitoramento de temperatura usando MCP9808 e fóton de partículas: 4 etapas
Monitoramento de temperatura usando MCP9808 e partícula de fóton: MCP9808 é um sensor de temperatura digital altamente preciso ± 0,5 ° C minomódulo I2C. Eles são incorporados a registros programáveis pelo usuário que facilitam as aplicações de detecção de temperatura. O sensor de temperatura de alta precisão MCP9808 se tornou uma indústria
Rastreamento de movimento ocular usando sensor infravermelho: 5 etapas
Rastreamento de movimento ocular usando sensor infravermelho: usei um sensor infravermelho para detectar os movimentos dos olhos e controlar o LED. Fiz globos oculares com fita LED NeoPixel