Probleme mit I2C Bus Extender P82B715

Hallo zusammen,

ich wollte 12x Bodenfeuchtesensoren und einen Distanzsensor über die I2C Schnittstelle auslesen. Die Sensoren haben alle eine Kabellänge von 2 bis 3 m. Mein erster Versuch war die Sensoren direkt an den ESP32 anzuschließen. Dafür habe ich ein einfaches Steuerkabel benutzt. Das hat natürlich nicht funktioniert. Die Gründe habe ich dann in diversen Foren und Tutorials nachgelesen und zumindest halbwegs verstanden. Jetzt habe ich das System umgebaut mit und folgende Komponente verwendet:

  • CAT7 Kabel
  • Patchpanel zum Anstecken der Sensoren
  • Bus Extender P82B715

Bis jetzt habe ich lediglich den I2C Scan durchgeführt und bekomme schon da keine vernünftigen Ergebnisse. Im ersten Schritt war nur ein Sensor angeschlossen, um Adressenkonflikte zu beseitigen. Um auszuschließen, dass es an den Sonoren liegt, habe ich auch getestet, ob sie bei kurzen Kabeln funktionieren. Da dies der Fall ist, sollte es nicht an den Sensoren liegen.

Jetzt habe ich in anderen Forenbeiträgen gelesen, dass der I2C-Bus nicht wirklich für sowas ausgelegt ist. Ich habe jetzt aber schon alle Sensoren für dieses System und habe ein wenig Zeitdruck auf dem Projekt. Hat von euch vielleicht jemand eine Idee was ich falsch gemacht haben könnte / was ich noch probieren kann, um die Sensoren so auslesen zu können?

Verbaute Komponente:

Die Scanning gibt mir folgendes bei Benutzung der Extender. Leider hat der Sensor aber die Adresse 20.:
16:58:14.149 -> Scanning I2C addresses on channel 1
16:58:14.186 -> 00 .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
16:58:14.261 -> .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
16:58:14.299 -> .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
16:58:14.332 -> .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
16:58:14.406 -> .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
16:58:14.443 -> .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
16:58:14.510 -> .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
16:58:14.544 -> .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
16:58:14.616 -> Scan completed, 1 I2C device(s) found.

Ich hoffe, ich habe keinen essenziellen Informationen vergessen, ihr könnt mein Anliegen verstehen und mir hoffentlich helfen. So langsam bin ich der Verzweiflung nahe.

Danke und viele Grüße

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.

mfg ein Moderator.

@marla03

Zeichne mal einen Schaltplan wie du die p82B715 genau in den BUS eingeschliffen hast. Fig 9 100%ig eingehalten? Ja? Bitte dennoch einen Schaltplan von DEINEM Aufbau mit mindestens 2 Sensoren zeigen.

Mach ein Echtbild.

Verkabelung hast durchgemessen?
Wenn ich mir überlege Sensor->RJ45->Patchkabel->[Wanddose->WandkabelKabel->]Patchpanel->Patchkabel->RJ45->ESP32
da gibts auch reichlich Fehlerpotential für Kabeldreher.

P.S.: Statt 12+1 P82B715 hätt' ich vermutlich einfach 12 ESP genommen (reichen ja auch kleine nackte ESP8266 12E) und mir dieses ganze Kabelgedöns gespart...

Danke für die schnelle Antwort. Hier schon mal Bilder von Sensor und Patchpanel. Mehr kann ich schicken sobald ich wieder zuhause bin.





wieviele Bus Extender P82B715 verwendest DU? Einen pro Kabel?

Hier hast du vermutlich schon einen Fehler gemacht.
Bei richtigem, sauberem Aufbau funktioniert I2C auch bei 3m Kabel.
Da muss aber auch alles stimmen, Kabel, Pullups usw. alles was das Datenblatt vorgibt.

Aber nicht als Endlösung, sondern nur für einen Test.

Und genau da solltest du noch mal ansetzen. Wenn das funktioniert, kannst du darauf aufbauen und deine Bus-Extender einsetzen. Danach den zweiten Sensor einbauen. Usw.

Du brauchst schon 2 x PB82B715 am jedem Kabel. Bei mir mit CAT5 habe bis 30m probiert funktionierte Einwandfrei. Die gebrauchte Länge ist 10m drauf sind 2Sensoren. Was auch angeblich wichtig ist, man soll die verdrillte adern nehmen wie auf dem Bild. Mittlerweile gibt es bessere IC vom NXP, typ habe vergessen :woozy_face:
image

ich würde sagen "an jedem Busabschluss".
Das heißt einmal auf ESP32 Seite und dann auf jedem Sensor. 12+1.

So is es Danke

wieviele Bus Extender P82B715 verwendest DU? Einen pro Kabel?

Danke für die vielen Antworten. Ich habe einen PB82B715 mehr oder weniger direkt nach dem ESP und einen (wie im Bild zu sehen) direkt am Sensor.

Ich habe das leider anders gemacht. Ich dachte, es wäre besser, wenn ich aus jedem "twisted pair" eine Ader nehme. Die benutzten Leitungen sind also mit keiner anderen benutzten Leitung verdrillt.
Wenn ich deinen Kommentar richtig deute, kann das schon zu Fehlern führen.
Das versuche ich mal gerade und melde mich, wie das Ergebnis dann aussieht.

Schau mal in die Doku ist schön alles beschrieben

Du solltest auch alle Anmerkungen hier in deinem Thread gut durchlesen.

Das habe ich gemacht.
Im ersten Schritt habe ich jetzt deine Informationen verarbeitet. Der Sensor funktioniert an einer Kabellänge von ca. 3 m.
Ich habe in unmittelbarer Nähe zum ESP32 2 4,7K Pull-Ups eingesetzt und den Sensor einzeln ohne Patchpanel angeschlossen. Dabei auch den von mir überlesenen Hinweis eingearbeitet und zwei twisted Adern verwendet. Ich bekomme im Scan die richtige Adresse angezeigt und auch der Sensor gibt vernünftige Werte aus.

Da das schonmal funktioniert hat, versuche ich jetzt den Extender da sauber einzubauen.

1 Like

Ok, prima...wenn das funktioniert, ist es ja der erste Schritt. Und bei 3,3V Spannung (ESP32) kannst du auch besser 3k3 Widerstände als Pullups verwenden.

Ich habe 5V Spannung, also müssten die 4,7K schon passen, oder?

Bei 3,3V System?

Wieso 5 Volt am ESP32?

Ja, ich nutze den 5V Ausgang am ESP32. Und auch die Sensoren funktionieren mit 5V

Persönlich habe mein ESP32 mit 5V an den Pins kaputt gemacht, ist doch nicht so wie mansche schreiben, habe mein Lehrgeld bezahlt :woozy_face: für I2C gibt's Pegelwandler, Level Shifter