Probleme beim verbinden von ESP32 mit TOF Sensor

Moin,
Ich möchte gerne mit einem ESP32 und einem TOF-Sensor Distanzen messen.

Nach kurzen Problemen habe ich es hinbekommen den ESP32 mit meinem Linux-Rechner zu verbinden und von der Arduino-IDE Programme auf ihn zu übertragen.
Dann habe ich die Header-Pins an den TOF-Sensor gelötet und auf einem Breadboard alles zusammen gesteckt.

Leider verzweifle ich jetzt daran, den Sensor mit dem ESP32 zu verbinden.
Da es mit meinem eigenen Code nicht geklappt hat, habe ich dies versucht mit KI-Hilfe hinzubekommen. Dabei komme ich leider auch zu nichts.

Anhand des unteren Codes konnte ich allerdings darstellen, dass der Sensor doch wohl irgendwie erkannt wird. Mithilfe des oberen Codes kann ich allerdings leider gar nichts feststellen. Es wird immer nichts gefunden.

Könnt ihr mir vielleicht noch einen Tipp geben, wie ich weiter machen kann bzw. wo ich noch suchen kann?
Anbei habe ich auch noch ein Bild meiner Lötstellen angehängt. Vielleicht liegt es ja daran, da ich auch sehr neu beim Löten bin.

Ich danke euch vielmals für eure Bemühungen im Voraus!

Freundliche Grüße und einen schönen Abend.

#include <Wire.h>

void setup() {
  Serial.begin(115200);
  Wire.begin(4, 5); // SDA=4, SCL=5
  Serial.println("Dauer-Scan startet. Bitte jetzt an den Kabeln wackeln!");
}

void loop() {
  byte error, address;
  int nDevices = 0;

  Serial.print("Scan: ");
  for(address = 1; address < 127; address++ ) {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0) {
      Serial.print("GEFUNDEN auf 0x");
      Serial.print(address,HEX);
      Serial.print(" ");
      nDevices++;
    }
  }
  if (nDevices == 0) Serial.print("Nichts gefunden...");
  Serial.println();
  
  delay(500); 
}
#include <Wire.h>

void setup() {
  // Startet die Kommunikation mit deinem Laptop
  Serial.begin(115200);
  while (!Serial); // Wartet, bis der Monitor offen ist
  
  Serial.println("\n--- I2C Scanner startet ---");

  // Initialisiert die Pins 4 (SDA) und 5 (SCL)
  Wire.begin(4, 5); 
}

void loop() {
  byte error, address;
  int nDevices = 0;

  Serial.println("Scanne...");

  for (address = 1; address < 127; address++) {
    // Der ESP32 schickt ein kurzes Signal an die Adresse
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0) {
      Serial.print("GEFUNDEN! Gerät an Adresse: 0x");
      if (address < 16) Serial.print("0");
      Serial.println(address, HEX);
      nDevices++;
    }
    else if (error == 4) {
      Serial.print("Unbekannter Fehler an Adresse 0x");
      if (address < 16) Serial.print("0");
      Serial.println(address, HEX);
    }
  }

  if (nDevices == 0) {
    Serial.println("Keine I2C-Geräte gefunden\n");
  } else {
    Serial.println("Scan abgeschlossen\n");
  }

  delay(2000); // Wartet 2 Sekunden bis zum nächsten Scan
}



Das der I2C Scanner nichts findet, kann an deinen Lötstellen am Sensor liegen. Sorry, aber die sehen grottenschlecht aus. Das sind vermutlich kalte Lötstellen, die keinen Kontakt haben.
Also diese besser mit einem heißen Lötkolben und gutem Lötzinn mit Kolophoniumkern nachlöten.

Die Lötstellen musst du noch mal machen. I2C Pins 4 und 5 sind beim ESP sehr wahrscheinlich falsch

Die Pins hat er ja in dem wire Aufruf so definiert, somit sollte das ok sein.

Du mußt die Lötstelle solange erwärmen bis das Lötzinn in die Fuge zwischen Loch und Pin fließt. Das dauert so ca 5 Sekunden.

grüße Uwe

Das geht aber nur mit frischem Lötzinn inkl. Kolophonium.

Was ist mit Pullup Widerständen? Sind dir auf dem Board?

Ja, das Board hat welche drauf.

Vielen Dank euch allen für eure Antworten!

Ich bestelle mir jetzt noch den Lötzinn und werde es dann nochmal probieren.

Danke :slight_smile:

Wenn es nicht schon zu spät ist, bestell gleich eine Rolle Entlötlitze mit, oder evtl. eine Entlötpumpe. Damit die vorhandenen Lötklumpen entfernen. Danach mit frischem Lötzinn und heißem Lötkolben die Lötstelle nacharbeiten.

Hallo,

bitte kein zusätzliches Lötzinn auf die vorhandenen Lötstellen zugeben. Dann wächst der Klumpen nur noch mehr. Nur Flussmittel ran und kurz erwärmen bis das vorhandene Lötzinn geschmolzen ist und sich angelegt hat. Dazu die Lötspitze vorher nicht mit Lötzinn benetzen, dann kannste noch etwas von der Lötstellen wegnehmen. Wird bei der Menge am Ende kein Schönheitspreis gewinnen, aber der Kontakt wäre i.O. Oder mit Entlötsaugpumpe alles runter was geht und neu verlöten. Nur mit Entlötlitze wird man bei der Menge nicht froh. Ich drück die Daumen.

ESP32-Pins 4 SA und 5 SLC sollten gut funktionieren

// ESP32 and VL53L0 pins 4 and 5

/* This example shows how to use continuous mode to take
range measurements with the VL53L0X. It is based on
vl53l0x_ContinuousRanging_Example.c from the VL53L0X API.

The range readings are in units of mm. */

#include <Wire.h>
#include <VL53L0X.h>

VL53L0X sensor;

void setup()
{
  Serial.begin(115200);
  delay(2000);
  Serial.println("VL53L0X test");
  Wire.begin(4, 5); // SDA=4, SCL=5
  sensor.setBus(&Wire);
  sensor.setTimeout(500);
  if (!sensor.init())
  {
    Serial.println("Failed to detect and initialize sensor!");
    while (1) {}
  }

  // Start continuous back-to-back mode (take readings as
  // fast as possible).  To use continuous timed mode
  // instead, provide a desired inter-measurement period in
  // ms (e.g. sensor.startContinuous(100)).
  sensor.startContinuous();
}

void loop()
{
  Serial.print(sensor.readRangeContinuousMillimeters());
  if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }

  Serial.println();
}

serial monitor

VL53L0X test
181
182
179
177
178
179
182
180
178
178
176
177
174
175
178
179
176
172
170
172
170
169
175
182
190
194
200
202
207
217
222
228
237
245
249
256
268
273
276
286
288
299
303
308
313
319
329
332
343
347
356
359
370
372
383

Vielen Dank euch allen nochmal.
Mit Flussmittel und dem neuen Lötmittel hat es geklappt.

Auch der Code war hilfreich. Vielen Dank!