Grove - Brújula Digital de 3 Ejes v2.0
El Grove - Brújula Digital de 3 Ejes es un sensor de brújula digital basado en el Bosch BMM150. Permite la medición del campo magnético en tres ejes perpendiculares y la salida se puede leer a través de las interfaces I2C y SPI, perfectamente adecuado para aplicaciones móviles de 3 ejes.
Esta es la segunda generación del Grove - Brújula Digital de 3 Ejes, comparado con la primera versión, esta versión puede satisfacer perfectamente los requisitos exigentes de todas las aplicaciones de 3 ejes mientras que el precio es casi la mitad de la primera versión, muy rentable.
Características
- Alta resolución
- Alta precisión de rumbo
- Fácil de usar
Especificaciones
Elemento | Valor |
---|---|
Voltaje de Funcionamiento | 3.3V / 5V |
Rango de campo magnético típico | ±1300μT(eje x, y), ±2500μT(eje z) |
Resolución de campo magnético | 0.3μT |
Grados de Salida | 0º ~ 360º |
Interfaz | I2C |
Temperatura de Funcionamiento | -40℃ a +85 ℃ |
Dimensiones | 20mm x 20mm x 15mm |
Dirección I2C | 0x13 |
Si deseas usar múltiples dispositivos I2C, consulta Software I2C.
Más detalles sobre los módulos Grove consulta Sistema Grove
Plataformas Compatibles
Arduino | Raspberry Pi |
---|---|
Las plataformas mencionadas anteriormente como compatibles son una indicación de la compatibilidad de software o teórica del módulo. Solo proporcionamos biblioteca de software o ejemplos de código para la plataforma Arduino en la mayoría de los casos. No es posible proporcionar biblioteca de software / código de demostración para todas las plataformas MCU posibles. Por lo tanto, los usuarios tienen que escribir su propia biblioteca de software.
Primeros pasos
Jugar con Arduino
Hardware
- Paso 1. Prepara los siguientes elementos:
Seeeduino V4.2 | Base Shield | Grove-3-Axis_Digitial_Compass_v2.0 |
---|---|---|
Obtener Uno Ahora | Obtener Uno Ahora | Obtener Uno Ahora |
-
Paso 2. Conecta Grove-3-Axis_Digitial_Compass_v2.0 al puerto I2C del Grove-Base Shield.
-
Paso 3. Conecta Grove - Base Shield al Seeeduino.
-
Paso 4. Conecta Seeeduino a la PC mediante un cable USB.
Si no tenemos Grove Base Shield, también podemos conectar directamente este módulo al Seeeduino como se muestra a continuación.
Seeeduino_v4 | Grove-3-Axis_Digitial_Compass_v2.0 |
---|---|
5V | VCC |
GND | GND |
SDA | SDA |
SCL | SCL |
Precaución
Conecte el cable USB con cuidado, de lo contrario puede dañar la interfaz. Utilice el cable USB con 4 cables en su interior, el cable de 2 cables no puede transferir datos. Si no está seguro sobre el cable que tiene, puede hacer clic aquí para comprarSoftware
Paso 1. Descargue la biblioteca desde Github.
Paso 2. Consulte Cómo instalar biblioteca para instalar la biblioteca para Arduino.
Paso 3. Cree un nuevo sketch de Arduino y pegue los códigos a continuación o abra el código directamente por la ruta: File->Examples->Grove_3_Axis_Compass_V2.0_BMM150-master->compass
Aquí está el código
/**
* This example
*/
#include <Arduino.h>
#include <Wire.h>
// libraries
#include "bmm150.h"
#include "bmm150_defs.h"
BMM150 bmm = BMM150();
void setup()
{
Serial.begin(9600);
if(bmm.initialize() == BMM150_E_ID_NOT_CONFORM) {
Serial.println("Chip ID can not read!");
while(1);
} else {
Serial.println("Initialize done!");
}
}
void loop()
{
bmm150_mag_data value;
bmm.read_mag_data();
value.x = bmm.raw_mag_data.raw_datax;
value.y = bmm.raw_mag_data.raw_datay;
value.z = bmm.raw_mag_data.raw_dataz;
float xyHeading = atan2(value.x, value.y);
float zxHeading = atan2(value.z, value.x);
float heading = xyHeading;
if(heading < 0)
heading += 2*PI;
if(heading > 2*PI)
heading -= 2*PI;
float headingDegrees = heading * 180/M_PI;
float xyHeadingDegrees = xyHeading * 180 / M_PI;
float zxHeadingDegrees = zxHeading * 180 / M_PI;
Serial.print("Heading: ");
Serial.println(headingDegrees);
delay(100);
}
Paso 4. Sube el código. Si no sabes cómo subir el código, por favor consulta cómo subir código.
Paso 5. Abre el monitor serie para recibir los datos del sensor
Paso 6. Dentro de estos 3 segundos, por favor inclina y rota la brújula hacia adelante y hacia atrás en cada eje, como se muestra en la imagen a continuación.
El tiempo del período de calibración se puede cambiar a través del parámetro timeout en la función calibrate(uint16_t timeout).
¡La brújula necesita ser calibrada, de lo contrario obtendrás datos inexactos! Por favor asegúrate de haber realizado el Paso 5.
Paso 7. Finalmente, verás algo como la siguiente imagen.
El valor de rumbo está en el rango de 0º ~ 360º, este valor es para el eje Y, 0º significa que el eje Y apunta al Norte, 90º significa que el eje Y apunta al Oeste, 180º significa que el eje Y apunta al Sur, 270º significa que Y apunta al Este.
¡Disfruta tu brújula!
Jugar con Raspberry Pi (Con Grove Base Hat para Raspberry Pi)
Hardware
- Paso 1. Elementos utilizados en este proyecto:
Raspberry pi | Grove Base Hat para RasPi | Grove - Brújula de 3 ejes |
---|---|---|
Consigue UNO Ahora | Consigue UNO Ahora | Consigue UNO Ahora |
- Paso 2. Conecta el Grove Base Hat al Raspberry.
- Paso 3. Conecta la brújula de 3 ejes al puerto I2C del Base Hat.
- Paso 4. Conecta el Raspberry Pi a la PC a través del cable USB.
Software
-
Paso 1. Sigue Configuración de Software para configurar el entorno de desarrollo e instalar grove.py en tu raspberry pi.
-
Paso 2. Ejecuta los siguientes comandos para ejecutar el código.
virtualenv -p python3 env
source env/bin/activate
#enter commmand
grove_3_axis_compass_bmm150
A continuación se muestra el código grove_3_axis_compass_bmm150.py.
from __future__ import print_function
import time
import bmm150
import math
def main():
device = bmm150.BMM150() # Bus number will default to 1
while (1):
x, y, z = device.read_mag_data()
heading_rads = math.atan2(x, y)
heading_degrees = math.degrees(heading_rads)
print("Magnetometer x: {0:.2f}".format(x), end=' ')
print(" y: {0:.2f}".format(y), end=' ')
print(" z: {0:.2f}".format(z), end=' ')
print(" uT")
print('heading(axis_Y point to): {0:.2f} degree'.format(heading_degrees))
time.sleep(.250)
if __name__ == '__main__':
main()
Si todo va bien, podrás ver el siguiente resultado
pi@raspberrypi:~/grove.py/grove $ grove_3_axis_compass_bmm150
Magnetometer x: -34.12 y: 36.71 z: -21.25 uT
heading(axis_Y point to): 317.10 degree
Magnetometer x: -34.49 y: 38.20 z: -16.32 uT
heading(axis_Y point to): 317.92 degree
Magnetometer x: -34.12 y: 38.20 z: -9.87 uT
heading(axis_Y point to): 318.23 degree
Magnetometer x: -32.64 y: 38.94 z: -5.69 uT
heading(axis_Y point to): 320.03 degree
Magnetometer x: -31.52 y: 38.20 z: -2.28 uT
heading(axis_Y point to): 320.47 degree
Magnetometer x: -29.67 y: 38.20 z: 0.38 uT
heading(axis_Y point to): 322.16 degree
Magnetometer x: -26.33 y: 38.20 z: 4.55 uT
heading(axis_Y point to): 325.42 degree
^CExiting
Puedes salir de este programa simplemente presionando ++ctrl+c++.
Visor Esquemático Online
Recursos
-
[Librería] Grove-3_Axis_Compass_V2.0 lib
-
[PDF] BST-BMM150-Datasheet
-
[Zip] [Grove-3-Axis Digital Compass v2_Eagle File](https://files.seeedstudio.com/wiki/Grove-3-Axis_Digitial_Compass_v2.0/res/Eagle File.zip)
Soporte Técnico y Discusión de Productos
¡Gracias por elegir nuestros productos! Estamos aquí para brindarle diferentes tipos de soporte para asegurar que su experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para satisfacer diferentes preferencias y necesidades.