BNO080 ET GPS M9N

Bonjour,

Est-ce que quelqu’un a déjà fait fonctionner un GPS M9N et un capteur de cap BNO080? Je suis en galère parce que j’arrive pas à avoir des données sur un certain temps.

En fait tout fonctionne mais au bout d’une trentaine de seconde - une minute, les données de la boussoles se bloquent et ne varient plus.

Quand je demande les valeurs individuellement tout fonctionne sur du long therme mais quand je veux tout en même temps, ça ne fonctionne qu’environ une minute.

J’ai une carte redboard sparkfun, mais je ne pense pas que ça soit le problème…

Quelqu’un aurait une idée?

Merci.

/*---------------------------------------------------------------------------------------------------GPS-----------------------------------------*/
#include <Wire.h> //Needed for I2C to GPS

#include "SparkFun_Ublox_Arduino_Library.h" //http://librarymanager/All#SparkFun_u-blox_GNSS
SFE_UBLOX_GPS myGPS;

long lastTime = 0; //Simple local timer. Limits amount if I2C traffic to Ublox module.
long Lat = 0;
long Long = 0;
/*-----------------------------------------------------------------------------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------------------------------BNO080--------------------------------------*/
//#include <Wire.h>      DEJA MIS PLUS HAUT POUR LE GPS

#include "SparkFun_BNO080_Arduino_Library.h" // Click here to get the library: http://librarymanager/All#SparkFun_BNO080
BNO080 myIMU;
float CapBNO = 0;
float yaw = 0;
/*-----------------------------------------------------------------------------------------------------------------------------------------------*/

void setup()
{
  
/*---------------------------------------------------------------------------------------------------GPS-----------------------------------------*/
  Serial.begin(9600);
  while (!Serial); //Wait for user to open terminal
  Serial.println("SparkFun Ublox Example");

  Wire.begin();

  if (myGPS.begin() == false) //Connect to the Ublox module using Wire port
  {
    Serial.println(F("Ublox GPS not detected at default I2C address. Please check wiring. Freezing."));
    while (1);
  }
/*-----------------------------------------------------------------------------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------------------------------BNO080--------------------------------------*/
  //Serial.begin(9600);
  Serial.println();
  Serial.println("BNO080 Reading");

 // Wire.begin();

  if (myIMU.begin() == false)
  {
    Serial.println(F("BNO080 not detected at default I2C address. Check your jumpers and the hookup guide. Freezing..."));
    while (1)
      ;
  }

  Wire.setClock(400000); //Increase I2C data rate to 400kHz

  myIMU.enableRotationVector(50); //Send data update every 50ms

  Serial.println(F("Rotation vector enabled"));
  Serial.println(F("Output in form roll, pitch, yaw"));
/*-----------------------------------------------------------------------------------------------------------------------------------------------*/

}

void loop()
{

    
  CapBNO = capcompas();
  Serial.print("   -  Cap BNO080 : ");
  Serial.println(CapBNO);
  
  if(millis()-lastTime>1000){
    Lat = latitude();
    Serial.print("Latitude : ");
    Serial.print(Lat);

    Long = longitude();
    Serial.print("   -  Longitude : ");
    Serial.print(Long);
    lastTime = millis();
    }
  

}





//---------------------------------------------------------------------------------------------------------LATITUDE

long latitude()
{
    long latitude = myGPS.getLatitude();
    return latitude;
}

//-----------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------LONGITUDE

long longitude()
{
    long longitude = myGPS.getLongitude();
    return longitude;
}

//-----------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------CAP COMPAS BNO080
float capcompas() { //check compass to see current heading
 // Serial.print("FONCTION capcompas  ");

if (myIMU.dataAvailable() == true)
  {
      yaw = (myIMU.getYaw()) * 180.0 / PI; // Convert yaw / heading to degrees

  }
  return yaw;
  
}
//-------------------------------------------------------------------------------------------------------------------

Je ne connais pas ces devices. Quelques questions :

  • Quelle carte Arduino utilises-tu ?
  • Quel est le module GPS que tu utilises ? Est-ce celui de Sparkfun ?
  • Comment est-il connecté ? I2C, SPI, série ?
  • Mêmes questions sur le BN0080 ?
  • Comment tout ça est-il alimenté ? Notamment, est-ce l'Arduino qui alimente les périphériques ?

Si les deux communiquent sur le même bus, et qu'ils ont besoin de bande passante, il y a peut-être un problème de congestion.
De même, si ton Arduino n'est pas assez puissant (pour alimenter les deux modules) ou assez rapide (pour lire les données), il faut peut-être passer à une version plus puissante ou modifier l'alimentation.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.