Índice:

Como usar o módulo GY511 com Arduino [Faça uma bússola digital]: 11 etapas
Como usar o módulo GY511 com Arduino [Faça uma bússola digital]: 11 etapas

Vídeo: Como usar o módulo GY511 com Arduino [Faça uma bússola digital]: 11 etapas

Vídeo: Como usar o módulo GY511 com Arduino [Faça uma bússola digital]: 11 etapas
Vídeo: Arduino + GPS || Faça um carro autônomo com a função “Siga-me” #arduino #maker #engenharia 2024, Novembro
Anonim
Como usar o módulo GY511 com Arduino [Faça uma bússola digital]
Como usar o módulo GY511 com Arduino [Faça uma bússola digital]

Visão geral

Em alguns projetos de eletrônicos, precisamos saber a localização geográfica a qualquer momento e fazer uma operação específica de acordo. Neste tutorial, você aprenderá a usar o módulo de bússola LSM303DLHC GY-511 com Arduino para fazer uma bússola digital. Primeiro, você aprenderá sobre este módulo e como ele funciona, e então verá como fazer a interface do módulo LSM303DLHC GY-511 com o Arduino.

O que você aprenderá

  • Qual é o módulo da bússola?
  • Módulo Compass e interface Arduino.
  • Faça uma bússola digital com o módulo GY-511 e Arduino.

Etapa 1: Informações gerais sobre o módulo Compass

Informações gerais sobre o módulo Compass
Informações gerais sobre o módulo Compass

O módulo GY-511 inclui um acelerômetro de 3 eixos e um magnetômetro de 3 eixos. Este sensor pode medir a aceleração linear em escalas completas de ± 2 g / ± 4 g / ± 8 g / ± 16 ge campos magnéticos em escalas completas de ± 1,3 / ± 1,9 / ± 2,5 / ± 4,0 / ± 4,7 / ± 5,6 / ± 8,1 Gauss.

Quando este módulo é colocado em um campo magnético, de acordo com a lei de Lorentz, uma corrente de excitação induz em sua bobina microscópica. O módulo de bússola converte essa corrente em tensão diferencial para cada direção de coordenada. Usando essas tensões, você pode calcular o campo magnético em cada direção e obter a posição geográfica.

Gorjeta

QMC5883L é outro módulo de bússola comumente usado. Este módulo, que tem uma estrutura e aplicação semelhantes ao módulo LMS303, tem um desempenho ligeiramente diferente. Portanto, se você estiver fazendo os projetos, tome cuidado com o tipo de módulo. Se o seu módulo for QMC5882L, use a biblioteca e os códigos apropriados que também estão incluídos no tutorial.

Etapa 2: componentes necessários

Componentes Requeridos
Componentes Requeridos

Componentes de hardware

Arduino UNO R3 * 1

GY-511 Acelerômetro de 3 eixos + magnetômetro * 1

TowerPro Servo Motor SG-90 * 1

Módulo 1602 LCD * 1

Jumpers * 1

Aplicativos de software

IDE Arduino

Etapa 3: interface do módulo de bússola GY-511 com o Arduino

Interface do Módulo Compass GY-511 com Arduino
Interface do Módulo Compass GY-511 com Arduino
Interface do Módulo Compass GY-511 com Arduino
Interface do Módulo Compass GY-511 com Arduino

O módulo de bússola GY-511 tem 8 pinos, mas você precisa de apenas 4 deles para fazer a interface com o Arduino. Este módulo se comunica com o Arduino usando o protocolo I2C, então conecte os pinos SDA (saída I2C) e SCK (entrada do relógio I2C) do módulo aos pinos I2C na placa Arduino.

ObservaçãoComo você pode ver, usamos o módulo GY-511 neste projeto. Mas você pode usar esta instrução para configurar outros módulos de bússola LMS303.

Etapa 4: Calibração do Módulo de Bússola GY-511

Para navegar, primeiro você precisa calibrar o módulo, o que significa definir a faixa de medição de 0 a 360 graus. Para fazer isso, conecte o módulo ao Arduino conforme mostrado abaixo e carregue o código a seguir em sua placa. Depois de executar o código, você pode ver os valores mínimo e máximo da faixa de medição para os eixos X, Y e Z na janela do monitor serial. Você precisará desses números na próxima parte, então anote-os.

Etapa 5: Circuito

O circuito
O circuito

Etapa 6: Código

Neste código, você precisa da biblioteca Wire.h para comunicação I2C e da biblioteca LMS303.h para o módulo de bússola. Você pode baixar essas bibliotecas nos links a seguir.

Biblioteca LMS303.h

Biblioteca Wire.h

ObservaçãoSe você estiver usando QMC5883, precisará da seguinte biblioteca:

MechaQMC5883L.h

Aqui, explicamos o código do LMS303, mas você também pode baixar os códigos do módulo QMC.

Vamos ver algumas das novas funções:

compass.enableDefault ();

Inicialização do módulo

compass.read ();

Lendo os valores de saída do módulo de bússola

running_min.z = min (running_min.z, compass.m.z); running_max.x = max (running_max.x, compass.m.x);

Determinar os valores mínimo e máximo da faixa de medição, comparando os valores medidos.

Etapa 7: fazendo uma bússola digital

Depois de calibrar o módulo, vamos construir uma bússola conectando um servo motor ao módulo. Para que o servo-indicador sempre nos mostre a direção norte, como a seta vermelha na bússola. Para fazer isso, primeiro o módulo de bússola calcula a direção geográfica primeiro e a envia para o Arduino e, em seguida, aplicando um coeficiente apropriado, você calculará o ângulo que o servo motor deve girar para que seu indicador aponte para o norte magnético. Eventualmente, aplicamos esse ângulo ao servo motor.

Etapa 8: Circuito

O circuito
O circuito

Etapa 9: Código

Código
Código

Para esta parte, você também precisa da biblioteca Servo.h, que é instalada no software Arduino por padrão.

Vamos ver algumas das novas funções:

Servo Servo1;

Inicialização do módulo

compass.read ();

Apresentando o objeto servo motor

Servo1.attach (servoPin); compass.init (); compass.enableDefault ();

Inicialização do módulo de bússola e servo motor

O argumento Servo1.attach () é o número do pino conectado ao servo motor.

compass.m_min = (LSM303:: vector) {- 32767, -32767, -32767}; compass.m_max = (LSM303:: vetor) {+ 32767, +32767, +32767};

Usando essas linhas você define os valores mínimo e máximo para medir a faixa obtida na parte anterior.

float header = compass.heading ((LSM303:: vector) {0, 0, 1});

A função header () retorna o ângulo entre o eixo das coordenadas e um eixo fixo. Você pode definir o eixo fixo com um vetor no argumento da função. Por exemplo, aqui, ao definir o (LSM303:: vetor) {0, 0, 1}, o eixo Z é considerado um eixo constante.

Servo1.write (cabeçalho);

A função Servo1.write () aplica o valor lido pelo módulo da bússola ao servo motor.

ObservaçãoNote que o servo motor pode ter um campo magnético, então é melhor colocar o servo motor a uma distância adequada do módulo da bússola, para que não faça com que o módulo da bússola se desvie.

Recomendado: