Hallo,
ist es möglich, zwei I2C Devices an einem ESP (hier: Wemo D1 Mini) zu betreiben?
Habe jetzt einiges probiert (verschiedene GPIO, verschiedene ESP's) , einzeln funktioniert jeder (an seinen zugewiesenen Ports für DS und SDL), aber beide gleichzeitig geht immer nur einer.
Möchte einen BME280 (Temp, Feucht, Druck) und einen BH1750 (Licht) Sensor betreiben.
Aber auch zwei BH1750 gleichzeitig funktionieren nicht.
Oder müssen beide an den gleiche I2C Bus betrieben werden?
Wobei ich das auch schon getestet habe, hat aber auch nicht funktioniert.
Zwei I2C Devices an einem Wemo D1 Mini betreiben, ist das möglich?
-
topsurfer -
11. April 2022 um 09:56 -
Erledigt
-
-
-
Hallo
Soweit ich weiß muss für jedes I2C Devices eine eigene Adresse vergeben werden.
Dann sollten diese an einem Gpio Anschluss laufen.
Mit i2cscan mal die Adresse von den Sensoren scannen.
siehe auch hier https://github.com/arendst/Tasmota/issues/1049
-
Hi ...
eine ähnlich Frage gabs neulich erst im "Füllstand Öltank messen" - Thread:
BeitragRE: Füllstand Öl Tank messen
[…]
Sollte nicht anders als bei Tasmota sein. Deshalb ja I2C-BUS
Du brauchst nur jeweils einen SDA/SCL GPIO. Die I2C Slaves werden alle parallel am Bus angeschlossen aber dürfen dann nicht dieselbe Adresse haben.(Lässt sich in der Regel am I2C Sensor mit Steck/Lötbrücken ändern) (wie @DejaWuest bereits erwähnte)
Übersichtliche Erklärung:
https://www.ipd.kit.edu/~buchmann/microcontroller/i2c.htmHoerMirAuf28. März 2022 um 10:34 -
OK, das mit den Adressen hab ich jetzt gecheckt,
die beiden Lichtsensoren BH1750 haben (natürlich) die gleiche Adresse, 0x23.
Aber der BME280 hat 0x77, sollte dann ja mit einem BH1750 an einem BUS funktionieren.
Also SDA von beiden Devices an den GIPO, welcher auf "IC2 SDA" eingestellt ist, analog für SDL.
Korrekt, oder muss noch mehr beachtet werden bei der Verkabelung?
(Aber das hat ja nicht funktioniert)Und, muss man beide I2C Devices am gleichen GPIO-Paar verwenden?
Oer kann man auch zwei (bzw. vier) verschiedene GPIO's nutzen wenn man diese als IC2 CDA/SDL konfiguriert hat. Und sollten, wenn an jedem I2C Bus nur ein Lichtsensor hängt (aber mit gleichen Adressen), beide Sensoren dann funktionieren? Oder stören sich die gleichen Adressen da immer noch?
Das hatte ich ja auch probiert und es ging nicht. -
Und, muss man beide I2C Devices am gleichen GPIO-Paar verwenden?
Hab ich noch nie getestet aber ich denk mal du kannst auch meherere GPIO als I2C konfigurieren. Ob sich da gleiche Adressen stören wäre interessant zu testen.
Also SDA von beiden Devices an den GIPO, welcher auf "IC2 SDA" eingestellt ist, analog für SDL.
Korrekt, oder muss noch mehr beachtet werden bei der Verkabelung?
(Aber das hat ja nicht funktioniert)Mehr muss nicht beachtet werden bei der Verkabelung. Nur die beiden Bus-Adern SDA und SDL unbd natürlich braucht der Sensor die passende Spannungsversorgung!
Was natürlich am wichtigsten ist:
Du brauchst ein Binary bei dem Deine Sensoren-Treiber auch mit einkomopiliert sind. Die Sensor.bin z.B oder eben eine slebst kompilierte.
-
Danke dir für deine Hinweise!
Das ist dann aber merkwürdig, einzeln funktionieren die Sensoren ja beide (BME280 und BH1750), aber ich bekomme die nicht beide gleichzeitig zum funktionieren, weder an verschiedenen GPIO's noch am gleichen BUS ....
Ich test nochmal alles von neuem .... -
Was sagt den der i2cscan in der Konsole?
EDIT:
Ach ja, zwei Geräte des selben Typs, also 2x BMP oder 2x BH gehen nicht an Tasmota.
Der Treiber erkennt immer nur ein gerät des gleichen Typs.
-
einzeln funktionieren die Sensoren ja beide (BME280 und BH1750)
Dann hast du schonmal das richtige Binary installiert!
Möglicherweise eine schlechte Spannungsversorgung?
Ich hab einen BME, Max44009, VL53L und eine DS3212 am I2C-Bus laufen. Allerdings hab ich (wegen des schlechten Spannungswandlers beim Wemos) an den 3,3V einen kleinen "Stützkondensator" (1000yF) hängen.
-
Was sagt den der i2cscan in der Konsole?
EDIT:
Ach ja, zwei Geräte des selben Typs, also 2x BMP oder 2x BH gehen nicht an Tasmota.
Der Treiber erkennt immer nur ein gerät des gleichen Typs.
i2cscan hat immer nur ein Device erkannt,
und ja, ich habe ja zwei verschiedene Devices getestet, keine gleichen (die zwei BH1750 waren nur Testweise, weil der BME und BH1750 nicht funktionierten).
So, konnte mit einem anderen BME280 testen, Ergebnis:
Man kann wohl nur einen (bzw. 2) GPIO's als I2C definieren, sobald ich den D0 und D1 als I2C definiert habe, wird der zuvor am D5 und D7 angeschlossene BME280 und funktionierende nicht mehr erkannt. Der Lichtsensor BH1750 an D0/D1 wird dann erkannt!
Schalte ich D0/D1 wieder auf "none", funktioniert der BME280 an D5/D7 wieder.
Wer will kann das ja mal testen, ob wirklich nur ein I2C "aktiv" sein darf.Was jetzt aber funktioniert:
Beide an einem BUS (D5, D7) funktionieren, also der BH1750 und BME280 ! (??).
Ob der gestern genutzte BME280 kaputt, keine Ahnung; alleine hat er aber ja funktioniert, aber nicht mit einem BH1750 am gleichen BUS ...
Nachtrag:
Am gestern genutzten ESP sehe ich jetzt, das auch wenn nur der BH1750 angeschlossen ist, dieser in der Web-GUI nicht angezeigt wird.
i2cscan zeigt den Sensor an.
Ein angeschlossener BME280 (gleiche GPIO's !) wird in der Web-GUI angezeigt, und im iocscan natürlich auch.
Woran kann es liegen, das der BH1750 in der GUI nicht angezeigt wird -
Woran kann es liegen, das der BH1750 in der GUI nicht angezeigt wird
Hast du mit dem Befehl websensor oder i2cdriver, eventuell den Treiber deaktiviert?
-
S0,
hab evtl. die Lösung gefunden.
Da ich (am Ende) auch den Luftsensor von Ikea (Vindrikning) nutzen will, habe ich den ESP vor 2 Wochen mit einem inoffiziellen Build geflasht https://github.com/tasmota/instal…-allsensors.bin).
Da scheint der BH1750 am I2C Bus nicht zu funktionieren, der BME280 (auch am I2C Bus) hingegen schon ...
wobei ein i2cscan auch den BH1750 erkennt! Und den BME280 auch (aber nur dieser wird in der Web-GUI angezeigt !?)
Meine Frage;
Gibt es ein (funktionierendes) Build, wo der Vindrikning-Sensor dabei ist (und der BH1750), oder muss ich da händig etwas hinzufügen und selbst kompilieren (noch nie gemacht ...) -
Also in der von dir geposteten Tasmota-Variante sind:
xsns_09_bmp - (i2cdriver10)
xsns_10_bh1750 - (i2cdriver11)
xsns_91_vindriktning - (seriell)
definitiv vorhanden! Daran kanns nicht liegen!
-
Also in der von dir geposteten Tasmota-Variante sind:
xsns_09_bmp - (i2cdriver10)
xsns_10_bh1750 - (i2cdriver11)
xsns_91_vindriktning - (seriell)
definitiv vorhanden! Daran kanns nicht liegen!
Danke dir für deine Hilfe!
Wo hast du das gesehen, da diese unterstützt werden? Im Quellcode?
Evtl ist die Unterstützung vom BH1750 dort nicht korrekt eingepflegt (meine Laienhafte Idee, Vermutung?)
Und ja, wie geschrieben, i2cscan findet ja auch den BH1750, aber in der WebGUI wird der Sensor gar nicht angezeigt (keine Name, kein Wert).
Schliesse ich nur den BME280 an, wird dieser auch in i2cscan (mit anderer Adresse) angezeigt und in der WEB-GUi sehe ich diesen Sensor mit korrekten Werten.Ich habe ja neu geflasht, und wieder genau dieses verhalten ...
Hab jetzt VScode runtergeladen um selbst zu kompilieren, aber .... puhhh .
Da verbaue ich ja fast lieber einen extra ESP nur mit dem BH1750 .... seit 5 Jahren nutze ich ESP's und mußte noch nie selbst Kompilieren.
Oder könnte jemand mir ein "bin" "schnell" compilieren (wie das normale 11er Tasmota, plus Vindrikning); (natürlich gegen Bezahlung )? -
Wo hast du das gesehen, da diese unterstützt werden?
Mit dem Befehl "websensor". Da werde die Treiber 9,10 und 91 angezeigt. Und genau diese benötigst du für dein Setting.
-
Oder könnte jemand mir ein "bin" "schnell" compilieren
Versuch mal das! Ist Standard Config mit deinen gewünschten Treibern. Musst das Zip aber vorher entpacken. Und das ist ein "echtes" (4M2M) *.bin für 4M-Wemos. Vor dem flashen eventuell die Einstellungen sichern.
-
Hab jetzt VScode runtergeladen um selbst zu kompilieren, aber .... puhhh .
Warum nimmst du nicht den online kompiler vom Gitpod Master Release?
Schau mal meine Signatur
-
Versuch mal das! Ist Standard Config mit deinen gewünschten Treibern. Musst das Zip aber vorher entpacken. Und das ist ein "echtes" (4M2M) *.bin für 4M-Wemos. Vor dem flashen eventuell die Einstellungen sichern.
Geflasht und funzt auf Anhieb, auch mit dem Vindriking !
Danke dir!!
Bleibt die Frage, warum beim "All-Sensor" der BH1750 mit i2cscan gesehen wird, aber in der Web-GUI nichts dargestellt wird (!?!)
Was heißt ein echtes für Wemos, wo finde ich die?
HoerMirAuf:
Gitpod hab ich jetzt auch gesehen, müßte ich mr mal anschauen ob das wirklich einfacher ist -
Gitpod hab ich jetzt auch gesehen, müßte ich mr mal anschauen ob das wirklich einfacher ist
Am einfachsten ist der Benzino Kompiler.
Der gitpod ist etwas aufwendiger aber dafür lässt sich dort der Quellcode der Dateien bearbeiten wie im Offline Compiler.
Ebenso die user_config_override.h
Spart einem die Mühe alles erst installieren zu müssen.
-
Was heißt ein echtes für Wemos, wo finde ich die?
Das "allsensor Binary" von dir hat nur 1MB Speicher von vorhandenen 4MB genutzt! Das von mir, nutzt 2MB für Flash-Speicher und 2MB für das Dateisystem!
Musst nicht suchen ... ist einfach so. Alles ausgenutzt, nichts verschenkt ...
-
Das "allsensor Binary" von dir hat nur 1MB Speicher von vorhandenen 4MB genutzt! Das von mir, nutzt 2MB für Flash-Speicher und 2MB für das Dateisystem!
Musst nicht suchen ... ist einfach so. Alles ausgenutzt, nichts verschenkt ...
Super,
aber nur zum Verständnis, hast du dieses dann selbst kompiliert;
und das heißt, ein off. BIN, welches wohl mit Vindrikning und BH1750 funktioniert, gibt es niergends als DL ?
-