Auf der Suche nach mehr Input...

Ich bräuchte 3 weitere Input-Ports an meinem ESPNodeMCU

GPIO 0,2,4,5,12,13,14,15 sind mit Output's belegt. GPIO01 & 03 sind für I2C (OLED-Display) belegt.

GPIO16 soll an einen Bewegungsmelder.

GPIO09, 10 sind nicht nutzbar - weil am Flash IC

Welche Möglichkeiten habe ich für 3 weitere Input's?

Sollte möglichst auch recht klein sein weil ich kaum noch Platz auf der Leiterplatte habe. Sollte mit 3,3V des ESP's & mit 5V des Sendemoduls klarkommen. Sollte möglichst mit leichter Programmierung auskommen (jedenfalls für mich verständlich :grin: )

Also eigentlich die "Eierlegende-Input-WollmilchSau"! :D 8)

Hänge einen Arduino Pro Mini als intelligenten I2C Portexpander dran.

hi,

zeig' doch mal Dein layout für die leiterplatte (ich route für mein leben gern, ist 'ne schöne tüftelei...).

gruß stefan

Ein Bild ist oben verlinkt. Beitrag #0

Einen Schaltplan habe ich nicht - alles Freestyle... :grin:

Aber eigentlich auch nix groß dran: ESP schaltet 8 Eingänge eines Homematic Funksenders. Und natürlich Stromversorgung.

hi,

es ist also alles schon verlötet...

dann isses schwer, obwohl ja rechts unten noch ein wenig platz wär. ich hätte vor dem verlöten einen oder zwei input/output-port-expander UNTER dem ESP untergebracht, aber danach ist leicht reden.

gruß stefan

stoni99: ... für I2C (OLED-Display) belegt.

I2C ist bekanntlich ein Bus, da paßt noch mehr dran. Beispielsweise MCP23017 als Portexpander mit 16 IOs und 28 Beinchen.

stoni99: Sollte möglichst mit leichter Programmierung auskommen (jedenfalls für mich verständlich :grin: )

Wenn Du eine Bibliothek (Adafruit_MCP23017) nutzt, funktioniert sowas wie mcp.digitalWrite(ledPin, HIGH); (Anleitung: Endlicher Automat mit millis())

Alternativ gibt es noch MCP23008 mit 8 IOs und 20 Beinchen. Da habe ich aber noch keine persönliche Erfahrung.

Wie die ICs mit den ESPs zusammenarbeiten, weiß ich nicht.

Gute Idee!

Esp & Sender sind gesteckt.

Damit wäre unter dem Esp noch Platz für einen Expander-Chip. Muss ich mir mal näher anschauen...auch den MCP vom Adafrüchtchen...

Da Du mit Polling den I2C-Bus beantspruchst, würde ich die Eingänge auf den ESP schalten und den MCP besser für Ausgänge nutzen.

Mach doch so ne i2c Platine für LCDs dran. 8 GPIO FÜR 1€

ElEspanol: Mach doch so ne i2c Platine für LCDs dran. 8 GPIO FÜR 1€

Du meinst so eine mit PCF8574 drauf, das ist auch eine gute Alternative. Gibt es auch als IO-Expander oder als nacktes IC.

ElEspanol: Mach doch so ne i2c Platine für LCDs dran. 8 GPIO FÜR 1€

Zu einfach!

combie:
Zu einfach!

Spielverderber :smiley: Wovon sollen dann die Chinesen leben?

Ich bestell die im 5er Pack, damit ich immer was da habe. dann liegen die bei meinem Freunden in Fernost unter einem Euro inkl. Shipping.

hi,

Damit wäre unter dem Esp noch Platz für einen Expander-Chip.

wenn das ding gesteckt ist, und es sich in der höhe nicht ausgeht, dann zerschneide einen IC-sockel und klemme dazwischen. also platine<>sockel<>sockel<>ESP. und platine<>sockel<>expander.

gruß stefan

Erst mal Danke für eure Ideen!

Der MCP23017 gefäll mir ganz gut - wegen der einfach zu bedienenden Lib - sehr Stoni-freundlich... mcp.digitalWrite(ledPin, HIGH); - das verstehe sogar ich... :grin: Der kleinere MCP23008 soll wohl auch mit der Adafruit-Lib gehen.

Leider finde ich keine fertige SMD-Platine .... soll ja "mini" werden...schaun wa mal...

Ich werde wohl eine kleine MCP23008-Platine löten und senkrecht aufstecken - braucht den wenigsten Platz.

Lt. Beschreibung kann ich den MCP mit 5V oder 3V betreiben.

Mit den 3V bin ich gut kompatibel mit dem ESP-I2C-Bus.

Es kommen aber 5V Signale vom Sender auf den MCP. Ist der dann auch 5V tolerant wenn ich die Betriebsspannung auf 3V habe? Oder muss ich Pegelwandler zusätzlich einbauen?

stoni99:
Leider finde ich keine fertige SMD-Platine … soll ja “mini” werden…schaun wa mal…

In Indien wäre man so freundlich, es für Dich für 5,2257 Euro zu tun.

stoni99:
Der kleinere MCP23008 soll wohl auch mit der Adafruit-Lib gehen.

Der hat eine eigene: Adafruit-MCP23008-library, die aber auch mcp.digitalRead(eingPin) bietet. Nur INPUT_PULLUP geht so nicht, sondern:

mcp.pinMode(eingPin, INPUT);
mcp.pullUp(eingPin, HIGH); // turn on a 100K pullup internally

stoni99:
Ist der dann auch 5V tolerant wenn ich die Betriebsspannung auf 3V habe?

Nein, Spannungen oberhalb der Betriebsspannung führen in der Regel zu Problemen. Das Datenblatt sagt: "Voltage on all other pins with respect to VSS (except VDD) … -0.6V to (VDD + 0.6V)

Oha, Indien! Na das lohnt nicht - löte ich lieber selber...

Danke für den "pullUp" Hinweis!

Ehe ich auf alle 3 Eingänge einen 5V --> 3,3V Converter tüddle - kann ich auch einen bidirektionalen I2C-Bus 5V --> 3,3V Converter nehmen und den MCP mit 5V betreiben.

Vielleicht kannst du ja ganz auf die Erweiterung verzichten, wenn du auf Charlieplexing umschwenkst....

Du meinst sowas? Kannte ich noch nicht. Danke für den Tip.

Geht das auch für Input?

Hab aber keine 2 bis 3 Ports mehr frei. Einer reicht leider nicht. Müsste sonst kräftig umlöten. Das artet meisst in eine Lötzinnsauerei aus.