Usando Arduino Shield Freescale FRDM-STBC-AGM01

by sabas1080 in Circuits > Arduino

2406 Views, 12 Favorites, 0 Comments

Usando Arduino Shield Freescale FRDM-STBC-AGM01

IMG_20150817_173039583[1].jpg
IMG_20150817_173047860_HDR[1].jpg

Hola amigos

En esta ocasión les voy a mostrar como utilizar el shield de Freescale FRDM-STBC-AGM01 en Arduino, este shield incluye un giroscopio, acelerometro, magnetometro y sensor de temparatura gracias a los chips FXOS8700CQ y FXAS21002C que están integrados en la tarjeta, muy interesante para proyectos de drones por ejemplo.

Agradecemos a Freescale que nos hizo llegar esto shield para la BuildNight de septiembre en The Inventor's House, ahora si comencemos

Material

IMG_20150817_172953228_HDR[1].jpg
IMG_20150817_173007772_HDR[1].jpg
IMG_20150817_173039583[1].jpg

Lo que necesitamos para este proyecto es

  • Arduino UNO
  • Shield FRDM-STBC-AGM01 Freescale

Con esto podremos hacer la prueba de las bibliotecas, para después implementarlo en algún otros proyecto que tengamos

Libreria

sabas1080 FXAS21002C_Arduino_Library.png

Debido a que el shield cuenta con dos chips utilizaremos dos librerías que controlan estos chips por medio de I2C

El primer chip es el FXOS8700CQ que incluye el acelerometro y magnetometro

https://github.com/sabas1080/fxos8700cq-arduino

Para el segundo chip el FXAS21002C el giroscopio he creado una biblioteca basada en la biblioteca para el FXAS21000, aun esta en BETA si tiene alguna mejora no dude en hacer un pull request

https://github.com/sabas1080/FXAS21002C_Arduino_Li...

Instalaremos de forma manual las librerías en nuestra carpeta del IDE de Arduino y reiniciamos el mismo

Test

acelerometro2.png

Ahora en base a como estén los pines marcados como SA0 y SA1 en nuestro shield sera la dirección I2C de nuestros chips, por default y estando SA0=0 las direcciones con como vienen en el siguiente ejemplo, si cambia el estado de SA0 por favor cambiar la dirección que se recomienda en los comentarios

/*
 * Example for Shield Arduino FRDM STBC AGM01 of Freescale
 * Author: Andres Sabas 
 * 17 Agust 2015
 */
#include 
#include 
#include 
FXOS8700CQ sensor = FXOS8700CQ(0x1E); //SA0=1 0x1F
FXAS21002C sensor2 = FXAS21002C(0x20); // SA0=1 0x21
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  Wire.begin();
  
  // Initialize the FXOS8700CQ
  sensor.init();
  
  // Initialize the FXAS21002C
  sensor2.init();
}
void loop() {
  // put your main code here, to run repeatedly:
  sensor2.getGres();
// Query the sensor sensor.readAccelData(); sensor.readMagData(); sensor.readTempData(); // Query the sensor sensor2.readGyroData(); sensor2.readTempData();
  // Print out the data
  // Gyroscope
  Serial.print("Gyroscope ");
  Serial.print("X: ");
  Serial.print((int)sensor2.gyroData.x);
  Serial.print(" Y: ");
  Serial.print((int)sensor2.gyroData.y);
  Serial.print(" Z: ");
  Serial.println((int)sensor2.gyroData.z);
  // Temperatura Gyroscope
  Serial.print(" T Gyroscope: ");
  Serial.println((int)sensor2.tempData);
  
  // Print out the data
  // Accelerometer
  Serial.print("Accel ");
  Serial.print("X: ");
  Serial.print((int)sensor.accelData.x);
  Serial.print(" Y: ");
  Serial.print((int)sensor.accelData.y);
  Serial.print(" Z: ");
  Serial.println((int)sensor.accelData.z);
  
  // Magnometer
  Serial.print("Mag ");
  Serial.print("X: ");
  Serial.print((int)sensor.magData.x);
  Serial.print(" Y: ");
  Serial.print((int)sensor.magData.y);
  Serial.print(" Z: ");
  Serial.println((int)sensor.magData.z);
  // Temperatura Magnometer
  Serial.print(" T Gyroscope: ");
  Serial.println((int)sensor.tempData);
  delay(100);
  
}

Trabajando

acelerometro.png

Con este ejemplo podremos leer la mayoría de las variables que nos dan los chips en el shield, si tu eres uno de los hackerspaces que esta realizando una BuildNight de Freescale espero esto les ayude a realizar sus proyectos de una manera mas fácil.

Saludos Inventores