Índice:

Interface do sensor giroscópio de 3 eixos BMG160 com Raspberry Pi: 5 etapas
Interface do sensor giroscópio de 3 eixos BMG160 com Raspberry Pi: 5 etapas

Vídeo: Interface do sensor giroscópio de 3 eixos BMG160 com Raspberry Pi: 5 etapas

Vídeo: Interface do sensor giroscópio de 3 eixos BMG160 com Raspberry Pi: 5 etapas
Vídeo: Учебное пособие по Python для трехосного гироскопа Raspberry Pi BMG160 2024, Novembro
Anonim
Image
Image

No mundo de hoje, mais da metade dos jovens e crianças gostam de jogos e todos aqueles que gostam disso, fascinados pelos aspectos técnicos dos jogos, sabem a importância do sensor de movimento neste domínio. Também ficamos maravilhados com a mesma coisa e só para colocá-la nas placas, pensamos em trabalhar em um sensor giroscópio que pode medir a taxa angular de qualquer objeto. Então, o sensor que pegamos para lidar com a tarefa é o BMG160. O BMG160 é um sensor giroscópio digital triaxial de 16 bits que pode medir a taxa angular em três dimensões perpendiculares da sala.

Neste tutorial, vamos demonstrar o funcionamento do BMG160 com o Raspberry pi, usando Java como linguagem de programação.

Os hardwares de que você vai precisar para essa finalidade são os seguintes:

1. BMG160

2. Raspberry Pi

3. Cabo I2C

4. Escudo I2C para Raspberry Pi

5. Cabo Ethernet

Etapa 1: Visão geral do BMG160:

O que você precisa..!!
O que você precisa..!!

Em primeiro lugar, gostaríamos de familiarizá-lo com os recursos básicos do módulo sensor que é o BMG160 e o protocolo de comunicação no qual ele funciona.

O BMG160 é basicamente um sensor giroscópio digital triaxial de 16 bits que pode medir taxas angulares. Ele é capaz de calcular taxas angulares em três dimensões perpendiculares da sala, os eixos x, y e z, e fornecer os sinais de saída correspondentes. Ele pode se comunicar com a placa raspberry pi usando o protocolo de comunicação I2C. Este módulo específico é projetado para atender aos requisitos de aplicações de consumo, bem como para fins industriais.

O protocolo de comunicação no qual o sensor funciona é I2C. I2C significa circuito inter-integrado. É um protocolo de comunicação no qual a comunicação ocorre através das linhas SDA (serial data) e SCL (serial clock). Ele permite conectar vários dispositivos ao mesmo tempo. É um dos protocolos de comunicação mais simples e eficientes.

Etapa 2: O que você precisa..

O que você precisa..!!
O que você precisa..!!
O que você precisa..!!
O que você precisa..!!
O que você precisa..!!
O que você precisa..!!

Os materiais de que precisamos para cumprir nosso objetivo incluem os seguintes componentes de hardware:

1. BMG160

2. Raspberry Pi

3. Cabo I2C

4. Escudo I2C para Raspberry Pi

5. Cabo Ethernet

Etapa 3: 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 raspberry pi. 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 BMG160 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 4: Medição com giroscópio de 3 eixos usando código Java:

Medição com giroscópio de 3 eixos usando código Java
Medição com giroscópio de 3 eixos usando código Java
Medição com giroscópio de 3 eixos usando código Java
Medição com giroscópio de 3 eixos usando código Java

A vantagem de usar raspberry pi é que oferece a flexibilidade da linguagem de programação em que se deseja programar a placa para fazer a interface do sensor com ela. Aproveitando essa vantagem desta placa, estamos demonstrando aqui sua programação em Java. O código Java para BMG160 pode ser baixado de nossa comunidade github que é a Dcube Store Community.

Além da facilidade dos usuários, também explicamos o código aqui: Como primeira etapa da codificação você precisa baixar a biblioteca pi4j no caso do java, pois esta biblioteca suporta as funções utilizadas no código. Portanto, para baixar a biblioteca você pode visitar o seguinte link:

pi4j.com/install.html

Você também pode copiar o código Java de trabalho para este sensor aqui:

import com.pi4j.io.i2c. I2CBus;

import com.pi4j.io.i2c. I2CDevice;

import com.pi4j.io.i2c. I2CFactory;

import java.io. IOException;

classe pública BMG160

{

public static void main (String args ) lança exceção

{

// Criar barramento I2C

Barramento I2CBus = I2CFactory.getInstance (I2CBus. BUS_1);

// Obter dispositivo I2C, endereço BMG160 I2C é 0x68 (104)

Dispositivo I2CDevice = bus.getDevice (0x68);

// Selecionar registro de alcance

// Configure o intervalo de escala total, 2.000 dps

device.write (0x0F, (byte) 0x80);

// Selecione o registro de largura de banda

// Largura de banda 200 Hz

device.write (0x10, (byte) 0x04);

Thread.sleep (500);

// Leia 6 bytes de dados

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb

byte data = novo byte [6];

device.read (0x02, data, 0, 6);

// Converter dados

int xGyro = ((dados [1] e 0xFF) * 256 + (dados [0] e 0xFF));

if (xGyro> 32767)

{

xGyro - = 65536;

}

int yGyro = ((dados [3] e 0xFF) * 256 + (dados [2] e 0xFF));

if (yGyro> 32767)

{

yGyro - = 65536;

}

int zGyro = ((dados [5] e 0xFF) * 256 + (dados [4] e 0xFF));

if (zGyro> 32767)

{

zGyro - = 65536;

}

// Dados de saída para a tela

System.out.printf ("Eixo X de rotação:% d% n", xGyro);

System.out.printf ("eixo Y de rotação:% d% n", yGyro);

System.out.printf ("eixo Z de rotação:% d% n", zGyro);

}

}

A biblioteca que facilita a comunicação i2c entre o sensor e a placa é a pi4j, seus vários pacotes I2CBus, I2CDevice e I2CFactory ajudam a estabelecer a conexão.

import com.pi4j.io.i2c. I2CBus; import com.pi4j.io.i2c. I2CDevice; import com.pi4j.io.i2c. I2CFactory; import java.io. IOException;

Esta parte do código faz com que o sensor meça a taxa angular escrevendo os respectivos comandos usando a função write () e, em seguida, os dados são lidos usando a função read ().

// Selecione o registro da faixa // Configure a faixa de fundo de escala, 2000 dps device.write (0x0F, (byte) 0x80); // Selecione o registro de largura de banda // Bandwidth 200 Hz device.write (0x10, (byte) 0x04); Thread.sleep (500);

// Leia 6 bytes de dados

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb byte dados = novo byte [6]; device.read (0x02, data, 0, 6);

Os dados recebidos do sensor são convertidos para o formato apropriado usando o seguinte:

int xGyro = ((dados [1] e 0xFF) * 256 + (dados [0] e 0xFF)); if (xGyro> 32767) {xGyro - = 65536; } int yGyro = ((dados [3] e 0xFF) * 256 + (dados [2] e 0xFF)); if (yGyro> 32767) {yGyro - = 65536; } int zGyro = ((dados [5] e 0xFF) * 256 + (dados [4] e 0xFF)); if (zGyro> 32767) {zGyro - = 65536; }

A saída é impressa usando a função System.out.println (), no formato a seguir.

System.out.println ("Eixo X de rotação:% d% n", xGyro); System.out.println ("eixo Y de rotação:% d% n", yGyro); System.out.println ("eixo Z de rotação:% d% n", zGyro);

A saída do sensor é mostrada na imagem acima.

Etapa 5: Aplicativos:

Formulários
Formulários

O BMG160 possui um número variado de aplicações em dispositivos como telefones celulares, dispositivos de interface homem-máquina. Este módulo de sensor foi projetado para atender aos requisitos de aplicativos de consumo, como estabilização de imagem (DSC e telefone com câmera), jogos e dispositivos apontadores. Também é empregado em sistemas que requerem reconhecimento de gestos e nos sistemas utilizados na navegação interna.

Recomendado: