Problem mit Auslesen einer I2C Adresse

Hallo,
ich habe ein kleines Problem mit dem Auslesen der I2C Adresse von Feuchtesensoren.

Es handelt sich um diesen Sensor:

https://www.amazon.de/BeFlE-kapazitiver-Bodenfeuchtesensor-SoMoSe-Temperatursensor/dp/B091D6HNM6/ref=sr_1_16?__mk_de_DE=ÅMÅŽÕÑ&crid=2AZ8DQLTLWVTM&keywords=i2c%2Bbodenfeuchtesensor&qid=1699712004&sprefix=i2c%2Bbodenfeuchtesensor%2Caps%2C83&sr=8-16&th=1

Ich nutze einen ESP32. Die Verschaltung sieht folgendermaßen aus:

3,3V Spannungsversorgung für den Sensor . GND für den Sensor.
Für SCL habe ich den Pin 22 , für SDA auf einem Breadboard angeschlossen. Von der Spannungsversorgung gehe ich mit jeweils einem 10k Ohm Widerstand auf die Reihe mit den angeschlossenen I2C Pins. Von dort greife ich auch eine Verbindung zum Sensor ab.

Habe ich irgendetwas falsch verschaltet, oder liegt der Fehler woanders?

Ich habe insgesamt 4 Sensoren und denen vorhin über den Befehl aus der Bibliothek eine eigene Adresse zugewiesen. Das hatte soweit auch funktioniert, nur jetzt sehe ich keine aktuellen Adresssen mehr.

habe jetzt nochmal die Schaltung umgebaut.

5V auf jeweils 4,7k Ohm Widerstände. Bei 3 Sensoren konnte ich eine Adresse ändern. Der vierte möchte nicht. Könnte der kaputt sein, oder gibt es da noch ne Lösung?

Kann ich 4 Sensoren gleichzeitig über den einen Widerstand laufen lassen?
Hatte die jetzt einzeln gescannt, aber im Betrieb sollen 4 Sensoren gleichzeitig betrieben werden

Deine Fragen lassen sich nicht pauschal beantworten. Du hast nicht mitgeteilt, welche Adressen du vergeben hast. Es ist nur der Bereich ab 0x08h bis 0x77h möglich. Evtl. hast Du Adressen in einem Bereich vergeben, der für andere Belange reserviert ist. Ob Dein Sensor defekt ist, lässt sich aus der Ferne wohl kaum beurteilen.

Evtl. schau mal hier:

Was meinst Du mit "alle 4 Sensoren über einen Widerstand laufen lassen"?

Jeder Sensor ist mit einer SDA und einer SCL "Leitung" angeschlossen. Diese beiden Leitungen müssen min. mit jeweils einem Pullup-Widerstand versehen sein. Das sind dann schon min. zwei Widerstände.

Des Weiteren ist die Leitungslänge bei I2C ein kritischer Faktor. Diese ist nicht absolut angegeben sondern so definiert, dass die Kapazität zwischen den beiden Leitungen 400pF nicht überschreiten dürfen. Praktisch gesehen heißt das, dass die Leitungen nicht sehr lang sein dürfen. Betrachte 2m mal als absolutes Maximum für einen Betrieb ohne speziellen I2C Bus-Treiber an.

i2c

Von daher hängt es von Deinem Aufbau ab, ob alle vier Sensoren an einem Bus betrieben werden können.

Deine Fragen zu I2C werden erschöpfend hier beantwortet:

Für eine zuverlässige Funktion sollte die I2C-Buslänge unter 50 cm bleiben.
I²C steht für Inter-Integrated Circuit.
Kommunikation auf ein und derselben Platine zwischen verschiedenen Schaltkreisen.
Dafür wurde I²C entwickelt.
vgs

Nein.

ich habe jetzt einen 4,7k Ohm Widerstand von 5V zu SDA und einen 4,7k Ohm Widerstand von 5V zu SCL.

Dort wollte ich jetzt meine Sensoren anschließen. Also an einem Bus alle 4 Sensoren. Die Leitungslänge wird maximal 1m betragen, warscheinlich aber etwas weniger.

Ich könnte im Zweifel den zweiten I2C Bus verwenden, aber ich wollte noch ein Display und eine RTC verbauen.
Ich hatte jetzt was gelesen, dass der Widerstand kleiner werden müsste, wenn mehrere Geräte angeschlossen werden.

1m kann unter Umständen zu viel sein versuche erst mit kurzen Verbindungen, wen funktioniert dan erst vergrößern. Das ist meistens der Fehler was gemacht wird.

ich versuche später mal den Sensor wie angegeben zu resetten. Das Problem ist ja die Schutzlackierung. Einfach Draht ranhalten zwischen dem Pin und GND hat nicht funktioniert. Oder ich habe das nicht richtig gemacht.

3V und GND waren angeschlossen, den Pin 1 mit GND mit einem Stück Draht verbunden, hat nichts gebracht. Nur GND verbunden und den Pin mit GND verbunden hat auch nicht funktioniert. Ich versuche später mal eine Verbindung zu löten

in #1 waren es noch 3,3V
Wie kommst du auf die Idee, dass der ESP 5V an seinen Pins überlebt?

"Draht dran halten".
Das mag zum Testen einer LED gerade so gehen." Um einen digitalen Sensor auszulesen völlig egal was für ein Sensor das ist viel zu unzuverlässig.

Mach das mal. Dann wird es höchstwahrscheinlich funktionieren.
vgs

Von welcher Schutzlakierung sprichst du ?
Ein geeigneter Schaltdraht oder Litze hat zwar eine Isolierung die meist aus Kunststoff besteht, aber keine Lackierung. Wenn du tatsächlich Kupferlackdraht verwenden willst, musst du die Lackschicht vorher entfernen und den Draht richtig anlöten.

Hatte das mit 3,3v getestet und da lief es nicht. Mit 5V konnte ich Adressen finden.
Kann das sonst auch nochmal mit 3V testen.

Von der auf dem Sensor. Würde das aber mal mit dem löten testen und schauen ob es klappt

Wo und warum sollte da eine Schutzlakierung drauf sein ?
Sicher nicht auf den Anschlußpins.
Und das du nur mittels Löten eine stabil funktionierende Verbindung bekommst, wurde ja schon geschrieben. Alles andere ist Bastelkram, der nicht funktioniert.

Lt. In GitHub vorliegendem Datenblatt läuft der mit 3,3Volt.
Wenn er das bei dir nicht macht, hast du etwas falsch gemacht, oder der ist defekt.

Dan teste mit UNO, Mega nicht das die nur mit 5V funktionieren

Mit wasser- und UV- beständiger Schutzschicht überzogen

So steht es bei Amazon. Und ist auch so zu sehen.

Laut Datenblatt bzw. der Beschriftung am Sensor läuft der mit 3.3V. Aber werde das später nochmal testen.

Aber doch nicht auf den Anschlusspins !!
Die kann man so am besten in eine Buchsenleiste stecken oder eben löten.

So hatte ich das auch geschrieben.

Nur mit 3,3V?
Wen ja dann ist er schon defekt hast ja mit 5V getestet

Offensichtlich möchtest du nicht verstehen, was ich meine.....
(oder habe ich was übersehen?)

3,3 bis 5V sind möglich.

Nein da habe ich ja die breadobard Stecker angeschlossen. Müsste dann nur noch die Verbindung von gnd zum Pin hinbekommen.

Weis ich grad nicht. Würde das später nochmal mit 3.3V testen.

Hatte jetzt mal einen anderen esp32 getestet. Dort läuft das so mit den 5V an den Widerständen.

Der gleiche Aufbau am normalen esp32 auf einem anderen breadboard zeigt keine Adressen an. Entweder hat das Breadboard einen Weg, da ich zwei zusammenstecken muss um den esp zu platzieren.

Noch ne Verständnisfrage. Reicht es an den i2c Pins am esp die Widerstände anzuschließen , oder müsste ich für jeden Sensor jeweils Widerstände verbauen. Hatte jetzt beides gefunden als Beispiel.

Also, nicht verstanden....

Nochmal, im Klartext:
5V an einem ESP kann/wird ins Verderben führen!