Este tutorial explica cómo trabajar con magnetómetro y Beaglebone negro. El magnetómetro detecta el campo magnético bajo y funciona como una brújula digital. Se utiliza en aplicaciones de seguimiento o navegación. En este tutorial, se utilizó el magnetómetro HMC5883L y se conectó a Beaglebone black mediante el protocolo I2C. El programa está escrito en script Python con la biblioteca adafruit I2C.
Herramientas necesarias :
- Hueso de beagle negro
- Magnetómetro (módulo HMC5883L)
- tablero de prueba
- Conectores hembra a hembra
Configuración del entorno de software
Instale la última versión de Python en BBB como se explica en el tutorial Cómo crear el primer programa de Python con Beaglebone Black. Instale la biblioteca adafruit python-GPIO.
Laboral
HMC5883L es un dispositivo de detección de baja magnetismo y una brújula digital de 3 ejes. Es compatible con la interfaz I2C. Genera valor magnético sensible durante mediciones simples. El valor del ángulo y el grado se muestran en el mensaje SSH cada segundo. El magnetómetro detecta el campo magnético y genera el valor digital correspondiente. El magnetómetro HMC5883L detecta el valor analógico, pero tiene un ADC en chip que proporciona el valor digital. Puede obtener más información en la hoja de datos del HMC5883L.
Fig. 1: Imagen del magnetómetro HMC5883L
I2C es un protocolo de comunicación serie de dos hilos que transfiere datos en serie entre dos dispositivos. Sólo se necesitan dos pines para transferir datos :
1) SCL – pulso de reloj en serie
2) SDA – Dirección de datos seriales
Ventaja de la operación de lectura y escritura I2C realizada con un solo pin, a diferencia de SPI. Puede obtener más información sobre esto en Interfaz I2C o TWI (Interfaz de dos cables).
Descripción
Primero preparemos la conexión del circuito. Tome una placa de pruebas y suministre VCC y tierra desde BBB a la línea de la placa de pruebas. Conecte la alimentación de 3,3 V desde el pin número 3, tercio del cabezal P9 y tierra desde el pin número 2 y el cabezal P8.
No tienes que preocuparte por agregar circuitos adicionales al sensor porque ya están agregados al chip.
Sólo necesitas establecer algunas conexiones con el Beaglebone Black.
Abra la terminal de comando y acceda a Beaglebone black a través de SSH como se explica en Introducción a Beaglebone black. Cree un nuevo archivo usando el comando tap con extensión .py (es decir, magnetometer.py). Abra el archivo con cualquier editor de texto (es decir, nano, vim, etc.) y escriba el código en lenguaje Python.
Configuración y prototipo de funcionamiento:
Debe importar la biblioteca I2C al programa para usar el dispositivo I2C. Puede crear su propia biblioteca, pero la biblioteca Adafruit se puede utilizar para ahorrar tiempo, ya que proporciona todos los tipos de biblioteca BBB Python.
desde Adafruit_I2C importar Adafruit_I2C
Importa la biblioteca I2C a su script.
A continuación, configure la dirección del magnetómetro para la comunicación. La dirección del dispositivo es de 7 bits y está dirigida al maestro mediante la siguiente función *(no entendí la línea):
i2c = Adafruta_I2C (0x1e)
Nota: 0x1e es la dirección del dispositivo HMC5883L.
Configure el registro del magnetómetro para su funcionamiento. Aquí hay una lista de registros de 8 bits:
El magnetómetro tiene cuatro pines:
- SCL
- ASD
- Tierra
- CCV
Conecte el pin SDA y SCL del sensor del magnetómetro al pin SDA ( pin 20 del encabezado P9) y al pin SCL (pin 19 del encabezado P9) del BBB respectivamente. Proporcione VCC y tierra al magnetómetro.
Fig. 2: Tabla que enumera los registros integrados del magnetómetro HMC5883L
Puede obtener más detalles sobre la configuración y el registro en la hoja de datos del magnetómetro.
Descarga la ficha técnica en el siguiente enlace:
Escriba el valor de configuración en el registro A siguiendo la función y pase el parámetro apropiado:
i2c.write8 (0x01, 0x71)
El primer argumento aborda la ubicación del registro y el segundo argumento es el valor de configuración que se escribe en el registro.
La configuración del registro A selecciona muestra por medición, velocidad de salida de datos y modo de funcionamiento de medición.
De manera similar, escriba el valor de configuración en el registro B y el registro de modo siguiendo la función:
i2c.write8 (0x02, 0xA0)
La configuración del registro B selecciona la configuración de ganancia.
i2c.write8 (0x03, 0x00)
El registro de modo es un registro de 8 bits desde el cual se pueden leer o escribir datos. Selecciona el modo de funcionamiento.
Código fuente del proyecto
###
desde Adafruit_I2C importar Adafruit_I2C
###
Diagramas de circuito
Diagrama de circuito-Beaglebone-Black-Interfacing-HMC5883L-Magenetometer |