Este tutorial explica como trabalhar com magnetômetro e Beaglebone preto. O magnetômetro detecta o campo magnético baixo e funciona como uma bússola digital. É usado em aplicativos de rastreamento ou navegação. Neste tutorial, o magnetômetro HMC5883L foi usado e conectado ao Beaglebone black por meio do protocolo I2C. O programa é escrito em script python com biblioteca adafruit I2C.
Ferramentas necessárias:
- Beaglebone Preto
- Magnetômetro (módulo HMC5883L)
- Tábua de ensaio
- Conectores fêmea para fêmea
Configuração do ambiente de software
Instale a versão mais recente do python no BBB conforme explicado no tutorial Como fazer o primeiro programa python com Beaglebone Black. Instale a biblioteca adafruit python-GPIO.
Trabalhando
HMC5883L é um dispositivo de detecção magnética baixa e bússola digital de 3 eixos. É suportado pela interface I2C. Ele gera valor magnético sensível durante medições simples. O valor e o grau do ângulo são exibidos no prompt SSH a cada segundo. O magnetômetro detecta o campo magnético e gera o valor digital de acordo. O magnetômetro HMC5883L detecta o valor analógico, mas possui ADC no chip que fornece o valor digital. Você pode obter mais informações na folha de dados do HMC5883L.
Fig. 1: Imagem do Magenetômetro HMC5883L
I2C é um protocolo de comunicação serial de dois fios que transfere dados serialmente entre dois dispositivos. São necessários apenas dois pinos para dados transferir:
1) SCL – pulso de relógio serial
2) SDA – Endereço de dados serial
Vantagem da operação de leitura e gravação I2C realizada por apenas um único pino, ao contrário do SPI. Você pode obter mais informações sobre isso em Interface I2C ou TWI (Two Wire Interface).
Descrição
Vamos primeiro preparar a conexão do circuito. Pegue uma placa de ensaio e forneça VCC e aterramento do BBB até a linha da placa de ensaio. Conecte a alimentação de 3,3 V do pino número 3terceiro do cabeçalho P9 e aterramento do pino número 2e do cabeçalho P8.
Você não precisa se preocupar em adicionar circuitos extras ao sensor porque eles já estão adicionados ao chip.
Você só precisa estabelecer algumas conexões com o Beaglebone Black.
Abra o terminal de comando e acesse o Beaglebone black através do SSH conforme explicado em começando com Beaglebone preto. Crie um novo arquivo usando tocar comando com .py extensão (ou seja, magnetometer.py). Abra o arquivo com qualquer editor de texto (ou seja, nano, vim etc.) e escreva um código em linguagem python.
Configuração e protótipo de trabalho:
Você precisa importar a biblioteca I2C no programa para usar o dispositivo I2C. Você pode criar sua própria biblioteca, mas a biblioteca Adafruit pode ser usada para economizar tempo, pois fornece todos os tipos de biblioteca python do BBB.
de Adafruit_I2C importar Adafruit_I2C
Ele importa a biblioteca I2C em seu script.
A seguir, defina o endereço do magnetômetro para comunicação. O endereço do dispositivo é de 7 bits e endereçado ao mestre pela seguinte função *(não entendi a linha):
i2c = Adafruit_I2C (0x1e)
Observação: 0x1e é o endereço do dispositivo HMC5883L.
Configure o registro do magnetômetro para operação. Aqui está uma lista de registradores de 8 bits:
O magnetômetro possui quatro pinos:
- SCL
- IASD
- GND
- CCV
Conecte o pino SDA e SCL do sensor do magnetômetro ao pino SDA (20º pino do cabeçalho P9) e pino SCL (19º pino do cabeçalho P9) do BBB respectivamente. Forneça o VCC e o aterramento ao magnetômetro.
Fig. 2: Tabela listando registros integrados do magenetômetro HMC5883L
Você pode obter mais detalhes sobre configuração e registro na folha de dados do magnetômetro.
Baixe a ficha técnica no link a seguir:
Escreva o valor da configuração no registro A seguindo a função e passe o parâmetro apropriado:
i2c.write8 (0x01, 0x71)
O primeiro argumento aborda a localização do registro e o segundo argumento é o valor da configuração que está escrito no registro.
A configuração do registro A seleciona amostra por medição, taxa de saída de dados e modo de operação de medição.
Da mesma forma, escreva o valor da configuração no registro B e no registro de modo seguindo a função:
i2c.write8 (0x02, 0xA0)
A configuração do registro B seleciona a configuração de ganho.
i2c.write8 (0x03, 0x00)
O registrador de modo é um registrador de 8 bits a partir do qual os dados podem ser lidos ou gravados. Ele seleciona o modo de operação.
Código fonte do projeto
###
de Adafruit_I2C importar Adafruit_I2C
###
Diagramas de circuito
Diagrama de Circuito-Beaglebone-Black-Interfacing-HMC5883L-Magenetômetro |