Problème de fonctionnement capteur de distance laser VL53L0X

Bonjour,
J'essaye désespérément depuis plusieurs jours de faire fonctionner capteur de distance laser VL53L0X mais je n'obtiens aucun résultats car le code m'indique "Failed to boot VL53L0X"
J'utilise une Arduino méga et mon capteur VL53L0X est branché comme suit:
VIN --> 5V
GND --> GND
SDA --> 20 ( SDA sur Arduino Méga )
SCL --> 21 ( SCL sur Arduino Méga )
Il ne me semble pas néccesaire de brancher les broches GPIO1 et XSHUT et même quand je les branche cela ne ne change rien
Et j'utilise le code suivant :

#include "Adafruit_VL53L0X.h"
Adafruit_VL53L0X lox = Adafruit_VL53L0X();
void setup() {
 Serial.begin(9600);
 while (! Serial) {
 delay(1);
 }
 Serial.println("VL53L0X sensor test");
 if (!lox.begin()) {
 Serial.println(F("Failed to boot VL53L0X"));
 while (1);
 }
}
void loop() {
 VL53L0X_RangingMeasurementData_t measure;
 Serial.print("Reading measurement - ");
 lox.rangingTest(&measure, false);
 if (measure.RangeStatus != 4) {
 Serial.print("Distance (mm): ");
 Serial.println(measure.RangeMilliMeter);
 } else {
 Serial.println("Out of range!");
 }
 delay(1000);
}

Le problème semble venir du fait que le capteur n'est pas détecté en effet lorsque que j'effectue un scan I2C avec le code ci-dessous, j'obtiens "Aucun appareil I2C trouvé"
Je pense que le problème ne vient pas du bus I2C de la carte puisque j'ai essayé avec un autre capteur fonctionnant avec le bus I2C et cette fois ci j'obtenais une adresse I2C.
Le problème ne semble pas venir non plus d'un disfonctionnement matériel en effet j'ai changé de carte arduino ( une autre arduino méga ), j'ai changé de capteur ( toujours le même modèle mais un autre capteur ) et j'ai changé les câbles et cela ne fonctionne toujours pas !

#include <Wire.h>

void setup() {
  Serial.begin(9600);
  while (!Serial); // Attendre que le port série soit prêt
  Serial.println("\nRecherche des adresses I2C...");

  Wire.begin();
  byte error, address;
  int nDevices = 0;

  for (address = 1; address < 127; address++) {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0) {
      Serial.print("Appareil trouvé à l'adresse 0x");
      if (address < 16)
        Serial.print("0");
      Serial.println(address, HEX);
      nDevices++;
    } else if (error == 4) {
      Serial.print("Erreur inconnue à l'adresse 0x");
      if (address < 16)
        Serial.print("0");
      Serial.println(address, HEX);
    }
  }

  if (nDevices == 0)
    Serial.println("Aucun appareil I2C trouvé\n");
  else
    Serial.println("Recherche terminée\n");
}

void loop() {
  // Le code de scan ne s'exécute qu'une seule fois
}

Il me semble avoir tout essayé et je désespère un petit peu à faire fonctionner ce capteur :sweat_smile:
Pouvez vous m'aider ?
Merci d'avance pour vos réponses !

J’ai fait fonctionner ce composant sans aucun souci avec un esp32.

Ce composant est un composant 3,3 V, je pense qu’il se pourrait qu’il n’accepte que des signaux 3,3 V pour l’I2C.
C’est une piste a vérifier.

Dans quelles conditions l’as tu utilisé ?
Est-il toujours fonctionnel ?
As tu plusieurs exemplaires ?
Tant qu’il n’est pas reconnu par un scanner I2C il est inutile d’aller plus loin.

Je ne l’ai pas utilisé avec une bibliothèque Adafruit mais Sparkfun.
Pourquoi Sparkfun ?
Le VL53 L0X contient un microcontroleur en interne, STMicro a publié une API pour dialoguer avec.
Sparkfun est le plus respectueux de cette API, il limite sa contribution a la rendre plus simple d’utilisation contrairement à Adafruit et surtout a polulu. Les deux ajoutent ce que a titre personnel je trouve être des complications inutiles.

Celui qui connais le mieux le capteur est quand même son concepteur : STMicro.
Je fais confiance a STMicro, les réglages du capteur sont déjà bien copieux quand on lit sa datasheet, je trouve qu’il est inutile d’en ajouter.

2 Likes

J'ai un module similaire. L'interface intègre des mosFET (le petit composant à 6 pattes au dos de la carte) sur SCL et SDA pour faire des translateurs de niveau. Je n'ai jamais rencontré de difficulté pour la mettre en œuvre.


Quand tu dis branché, tu as soudé des fils ou des broches droites pour raccorder le module à ta Mega?

1 Like

Bonjour raph007

J'ai essayé ton programme sur un UNO et il fonctionne sans problème.
Mon capteur est un VL53L0XV2.

Cordialement
jpbbricole

1 Like

Ce serait bien d’avoir le lien vers le produit que vous avez acheté. Avec un peu de chance on aura des éléments techniques ou au moins des photos

Il y a un lien dans le premier message.

Merci j’avais pas vu

Pas de doute qu’il est prévu pour 5V

Vérifier les connexions peut être effectivement

Oui j'ai soudé le module à des broches droites pour le raccorder à ma méga, mais en vérifiant la conductivité de mes soudures, je me suis rendu compte que l'une de mes soudures était mal faite :sweat_smile:
Donc maintenant ça fonctionne très bien :partying_face:, merci à vous tous pour vos réponses

Bonne nouvelle ! :slight_smile:

oui le test de continuité est toujours une bonne idée une fois que l'on a soudé... ça évite des déboires surtout si Vcc est à côté de GND...

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