Introduction: Usando Arduino Shield Freescale FRDM-STBC-AGM01

About: Fundador de The Inventor's House Hackerspace, Movimiento Maker y Hardware Libre, DIY, Workaholic

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

Step 1: Material

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

Step 2: Libreria

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

Step 3: Test

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);
  
}

Step 4: Trabajando

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