Data Collection Firmware

The following is Code Written in C/C++ for the Arduino microcontroller to retrieve data from the IMUs on the belt.

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_LSM9DS0.h>
#include <Adafruit_Sensor.h>
//#include "SD.h"
//#include "RTClib.h"

#define LSM9DS0_XC_CS1 22
#define LSM9DS0_GYRO_CS 23
Adafruit_LSM9DS0 lsm1 = Adafruit_LSM9DS0(LSM9DS0_XC_CS1, LSM9DS0_GYRO_CS);
#define LSM9DS0_XC_CS2 24
Adafruit_LSM9DS0 lsm2 = Adafruit_LSM9DS0(LSM9DS0_XC_CS2, LSM9DS0_GYRO_CS);
#define LSM9DS0_XC_CS3 26
Adafruit_LSM9DS0 lsm3 = Adafruit_LSM9DS0(LSM9DS0_XC_CS3, LSM9DS0_GYRO_CS);


void setupSensor1()
{
   lsm1.setupAccel(lsm1.LSM9DS0_ACCELRANGE_2G);
   lsm1.setupMag(lsm1.LSM9DS0_MAGGAIN_2GAUSS);
   lsm1.setupGyro(lsm1.LSM9DS0_GYROSCALE_245DPS);
}
void setupSensor2()
{
   lsm2.setupAccel(lsm2.LSM9DS0_ACCELRANGE_2G);
   lsm2.setupMag(lsm2.LSM9DS0_MAGGAIN_2GAUSS);
   lsm2.setupGyro(lsm2.LSM9DS0_GYROSCALE_245DPS);
}
void setupSensor3()
{
   lsm3.setupAccel(lsm3.LSM9DS0_ACCELRANGE_2G);
   lsm3.setupMag(lsm3.LSM9DS0_MAGGAIN_2GAUSS);
   lsm3.setupGyro(lsm3.LSM9DS0_GYROSCALE_245DPS);
}

void setup()
{
   Serial.begin(9600);
   Serial.println(F("LSM9DS0 9DOF Sensor Test")); Serial.println("");

      if(!lsm1.begin())
      {
         Serial.println(F("Ooops, no LSM9DS0 1 detected ... Check your wiring or I2C ADDR!"));
         while(1);
      }
      else if(!lsm2.begin())
      {
         Serial.println(F("Ooops, no LSM9DS0 2 detected ... Check your wiring or I2C ADDR!"));
         while(1);
      }
      else if(!lsm3.begin())
      {
         Serial.println(F("Ooops, no LSM9DS0 3 detected ... Check your wiring or I2C ADDR!"));
         while(1);
      }
      
    Serial.println(F("Found all LSM9DS0 9DOF"));
    setupSensor1();
    setupSensor2();
    setupSensor3();
}

void loop() 
{
   sensors_event_t accel1, mag1, gyro1, temp1;
   sensors_event_t accel2, mag2, gyro2, temp2;
   sensors_event_t accel3, mag3, gyro3, temp3;

   lsm1.getEvent(&accel1, &mag1, &gyro1, &temp1);
   lsm2.getEvent(&accel2, &mag2, &gyro2, &temp2);
   lsm3.getEvent(&accel3, &mag3, &gyro3, &temp3);

//sensor1
   Serial.print("Sensor1 Accel X: "); Serial.print(accel1.acceleration.x); Serial.print(" ");
   Serial.print("  \tY: "); Serial.print(accel1.acceleration.y);       Serial.print(" ");
   Serial.print("  \tZ: "); Serial.print(accel1.acceleration.z);     Serial.print("  \tm/s^2\t");
//sensor2  
   Serial.print("Sensor2 Accel X: "); Serial.print(accel2.acceleration.x); Serial.print(" ");
   Serial.print("  \tY: "); Serial.print(accel2.acceleration.y);       Serial.print(" ");
   Serial.print("  \tZ: "); Serial.print(accel2.acceleration.z);     Serial.print("  \tm/s^2\t");
//sensor3  
   Serial.print("Sensor3 Accel X: "); Serial.print(accel3.acceleration.x);Serial.print(" ");
   Serial.print("  \tY: "); Serial.print(accel3.acceleration.y);       Serial.print(" ");
   Serial.print("  \tZ: "); Serial.print(accel3.acceleration.z);     Serial.println("  \tm/s^2\t");      
}