IMU-Xbee-Matlab communication

Bonjour,

Tout d’abord je m’excuse si ce n’est pas la bonne section où poster…
Je cherche à transmettre des données d’un IMU vers Matlab en utilisant 2 Xbee, grâce à une carte Arduino Uno. Après avoir suivi des tuto’ pour Xbee j’ai donc paramétré mes Xbee et fait le cuircuit.
Je suis sûr de mes connexions entre pins (Vcc, GND, Rx, Tx), de même pour mes configurations de Xbee. Voici les configurations :
Xbee connecté au PC :
CH : C
ID : 3332
DH : 0
DL : 0
MY : 1
CE : End Device

Xbee connecté à l’Arduino (mode stand-alone) :
CH : C
ID : 3332
DH : 0
DL : FFFF
MY : 0
CE : Coordinator

Voici mon code Arduino :

#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#include <Adafruit_LSM9DS1.h>
#include <Adafruit_Sensor.h>  // not used in this demo but required!
#include "SoftwareSerial.h"


SoftwareSerial xbee(2,3); // DOUT (== RX), DIN (== TX)

// i2c
Adafruit_LSM9DS1 lsm = Adafruit_LSM9DS1();

#define LSM9DS1_SCK A5
#define LSM9DS1_MISO 12
#define LSM9DS1_MOSI A4
#define LSM9DS1_XGCS 6
#define LSM9DS1_MCS 5

int i = 0;
  
void setupSensor()
{
  // 1.) Set the accelerometer range
  lsm.setupAccel(lsm.LSM9DS1_ACCELRANGE_2G);
  
  // 2.) Set the magnetometer sensitivity
  lsm.setupMag(lsm.LSM9DS1_MAGGAIN_4GAUSS);

  // 3.) Setup the gyroscope
  lsm.setupGyro(lsm.LSM9DS1_GYROSCALE_245DPS);
}


void setup() 
{
  // Make sure the baud rate matches the config
  // setting of the XBee.
  xbee.begin(115200);
  Serial.begin(115200);

  while (!Serial) {
    delay(1); // will pause Zero, Metro, Uno, Leonardo, etc until serial console opens
  }
  
  //Serial.println("LSM9DS1 data read demo");
  
  // Try to initialise and warn if we couldn't detect the chip
  if (!lsm.begin())
  {
    Serial.println("Oops ... unable to initialize the LSM9DS1. Check your wiring!");
    while (1);
  }
  //Serial.println("Found LSM9DS1 9DOF");

  // helper to just set the default scaling we want, see above
  setupSensor();
}

void loop() 
{
  lsm.read();  /* ask it to read in the data */ 

  /* Get a new sensor event (1 for each sub-sensor) */ 
  sensors_event_t a, m, g, temp;

  /* Pass the events into the getEvent function */
  lsm.getEvent(&a, &m, &g, &temp);

  Serial.print(a.acceleration.x);  Serial.print("\t"); Serial.print(a.acceleration.y);  Serial.print("\t"); Serial.print(a.acceleration.z); Serial.print("\t");
  Serial.print(m.magnetic.x); Serial.print("\t"); Serial.print(m.magnetic.y); Serial.print("\t"); Serial.print(m.magnetic.z); Serial.print("\t");
  Serial.print(g.gyro.x); Serial.print("\t"); Serial.print(g.gyro.y); Serial.print("\t"); Serial.println(g.gyro.z);
  
  xbee.print(a.acceleration.x);
  xbee.print("\t");
  xbee.print(a.acceleration.y);
  xbee.print("\t");
  xbee.print(a.acceleration.z);
  xbee.print("\t");
  xbee.print(m.magnetic.x);
  xbee.print("\t");
  xbee.print(m.magnetic.y);
  xbee.print("\t");
  xbee.print(m.magnetic.z);
  xbee.print("\t");
  xbee.print(g.gyro.x);
  xbee.print("\t");
  xbee.print(g.gyro.y);
  xbee.print("\t");
  xbee.println(g.gyro.z);
  //  xbee.write(Serial.read());

  Serial.println();
  delay(100);
}

Concernant le code Matlab j’ai essayé de tester le programme de cette personne :

J’avais fait auparavant un code Matlab qui permet de lire les données d’Arduino via Matlab sans Xbee, il fonctionne parfaitement. Ayant suivi pas mal d’exemples sur Internet, je n’ai plus aucune idée de comment régler ce souci.

Merci par avance ! :slight_smile:

Matériel :
- Arduino Uno
- 2 Xbee (1 coordinator & 1 end device)
- 1 Xbee shield
- 1 Xbee USB
- IMU LSM9DS1