Kann ich zwei I2C-"Busse" nutzen?

Hallo,
ich wollte, um GPIOs einzusparen, ein 4x4-Keypad mittels Expander (PCF8574) am I2C-Bus betreiben.
Allerdings habe ich am SDA und SCL (GPIO 21 u. 22) schon einen RFID-Reader hängen.
Nun hab ich gelesen, dass ich wohl auch noch nen zweiten I2C nutzen kann.
Aufgrund meiner eher eingeschränkten Englischkenntnisse tu ich mich aber schwer, zu lesen/verstehen wie ich das einrichten kann…
Mag mir hier jemand auf die Sprünge helfen?
:slight_smile:

Danke schonmal

Google Chrome Browser nutzen → rechte Maustaste → “Übersetzen in Deutsch” funktioniert mittlerweile super gut auf Webseiten

Beim ESP32 geht es mit zwei I2C-Busanschlüssen.
Hier mal ein Beispiel dazu: Link

Du kannst aber am I2C-Bus mehrere Geräte anschliessen, die müssen nur unterschiedliche Adressen haben, die kann man z.b. beim PCF8574 über die Anschlüsse A0 bis A1 einstellen. Da hilft das Datenblatt weiter.

1 „Gefällt mir“

Ok, nach stundenlangem lesen und ausprobieren hab ichs hinbekommen :slight_smile:
Nachdem ich nun mein Keypad via I2C angebunden hab, hat sich auch das “Problem” welches ich in diesem Beitrag (Keypad reagiert nicht wenn mit USV-batteriestrom versorgt) beschrieben habe, gelöst.

Vielleicht hilft das beim nächsten Projekt, ist in ESPHome 2024.3 integriert worden die gestern released wurde

ESPHome

Du scheinst es ja mittlerweile gelöst zu haben, aber mehrfache I²C sind vollkommen gegen den Grundgedanken von I²C. Bei I²C geht es darum möglichst viele Geräte (bis zu 112 Stück) in den Bus zu hängen damit Ports gespart werden können.
Ich habe aber schon in deiner Fragestellung nicht verstanden warum du überhaupt 2x I²C nutzen möchtest?!? Welchen Vorteil versprichst du dir davon?

Grüße
Christian

Grundsätzlich hast du Recht, es ist Sinn eines Bus-System viele Geräte anzuschliessen.

Zwei I2C’s zu nutzen würde auch nur dann Sinn machen, wenn man z.b. zwei gleiche I2C-Geräte anschliessen will, bei denen sich die Adressen nicht ändern lassen - da gibt es leider einige von.

Oder man kommt auf die Idee, mehr als 8 I/O-Bausteine ala PCF8574 anschliessen zu wollen. Wobei dann aber die Frage ist, ob ein ESP noch die beste Wahl ist oder man lieber einen RasPi PicoW mit ESPHome nutzen sollte. :slight_smile:

Ja, das stimmt schon - allerdings habe ich diese Konfiguration in seiner Fragestellung nicht gesehen :wink:

Die Frage nach zwei I2C kam aus reiner Unwissenheit.
Ja, aufgrund der Bezeichnung “Bus” hätt ich draufkommen können dass hier mehr Geräte möglich sind. Aber da ich mit Elektronik nicht so bewandert bin und mich auch erst seit kurzem mit ESP32 befasse, hab ich das so nicht auf Anhieb “verstanden”.
Nun, momentan funktioniert es ja auch mit zwei I2C… Und das wichtigste, mein Ursprungsproblem (Link) wurde ja dadurch gelöst!
Nichtsdestotrotz werde ich bei Gelegenheit noch versuchen (ich wills ja verstehen), beide an einen I2C zu hängen. Aber da stellt sich mir jetzt schon die Frage, wie kann ich beim RFID-Reader (RC522) die Adresse einstellen?

Grüße und Danke an Alle
Micha

normalerweise über Dipschalter oder Lötbrücken am IC selber.

Da müsstet du mal in Datenblatt schauen, ob das überhaupt bei deinem Modul vorgesehen ist oder nicht sogar fest verdrahtet.

Es ist aber in der Regel so, das unterschiedliche Bausteien auch unterschiedliche Adressen haben und direkt zusammen genutzt werden können. Z.b so ein Reader zusammen mit einem Temperatursensor sollte sofort funktionieren.

Da es jetzt ja schon funktioniert, solltest du beide Adresse kennen (falls nicht, dafür gibt es Address-Scanner Programme für den ESP - einfach mal googlen). Sollten diese unterschiedlich sein (wovon ich ausgehe, da es unterschiedliche Bausteine sind), dann musst du nichts ändern. Einfach beide in einen Bus und gut ist.

Nur wenn die Adressen gleich sind, musst du diese an einem Baustein ändern, sonst nicht!