Forum: Mikrocontroller und Digitale Elektronik ESP8266 - GPIOs erweitern?


von Joh (Gast)


Lesenswert?

Hallo Forum,

ich experimentiere seit gestern Abend mit einem kleinen ESP8266-Board 
(ESP-01) herum.
Da dieses Board ja nur über zwei GPIOs verfügt, hätte ich eine Frage:

Die beiden GPIOs kann man als I²C-Schnittstelle nutzen. Dies habe ich 
auch vor, um ein Display über I²C anzusteuern. Das passende Display habe 
ich auch dafür, da ich das Ganze schon einmal mit einem Arduino getestet 
habe.

Wie aber kann ich die doch "sehr wenigen" GPIOs erweitern, um neben dem 
I²C (welcher beide GPIOs "belagert") auch einfache I/Os (und evtl. sogar 
PWM-Ausgang) habe?

Gibt es einen Art "Multiplexer", den man dann auch per I²C an die beiden 
Pins anschließt?

Wie würdet ihr das Ganze lösen?


Vielen Dank!

von Torsten B. (tbrox)


Lesenswert?

Hallo!

Es gibt für I²C so genannte Port Expander, bspw. PCF8574 oder MCP23017.

Gruß
Torsten

von Einer K. (Gast)


Lesenswert?

Joh schrieb:
> ich experimentiere seit gestern Abend mit einem kleinen ESP8266-Board
> (ESP-01) herum.

Ich nehme die auch ganz gerne und mache 3,3V Pro Mini als I2C 
Portexpaneder dran.

Wenn du nur einfache digitale IOs brauchst ist vielleicht der MCP23017 
die bessere Wahl.

von Joh (Gast)


Lesenswert?

Ah super, das hat geholfen! :)

Vielen Dank!

von Max M. (maxmicr)


Lesenswert?

Einfach nicht das ESP-01 Board benutzen...

von Stephan G. (Firma: privat) (morob)


Lesenswert?

selbst bei den anderen esp-201 sind teilweise zuwenig gpio dran.

von Pete K. (pete77)


Lesenswert?


von Einer K. (Gast)


Lesenswert?

Pete K. schrieb:
> mit ganz vielen I/Os:
Vielleicht dein "viele".
Mein "viele" sieht anders aus.

1. Einige brauchen beim Boot bestimmte Pegel, sind damit für manche 
Anwendungen verdorben

2. Einige zappeln beim Boot rum, sind damit für manche Anwendungen 
verdorben

3. Einige gehen fürs Flash drauf. Davon könnte man 2 frei schaufeln.

4. Zwei klemmen fest am CH340G

Nee...
Im Endeffekt ist es nur eine kleine Handvoll.

von André R. (andr_r619)


Lesenswert?

Eine hervorragende Idee. Blöde Frage: Wie schnell kann der ESP den I²C 
eigentlich beschicken? Der Arduino kommt ja soweit mir bekannt nur bis 
400 kHz.

von Chr. M. (snowfly)


Lesenswert?

>Das Nodemcu Board gibt es für kleines Geld mit ganz vielen I/Os:
NaJa, 11 IOs und davon auch noch welche doppelt belegt.
Aber schon viel besser als 2 IOs.
Andere esp Boards wie das "Witty Cloud" und das "WEMOS" haben auch 
Vorteile.

Oder im nächsten Schritt auf den esp32 wechseln.
Der hat die doppelte Anzahl an IOs.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Das ESP-01 Modul hat 4 GPIO Ports, nicht zwei. Und die kann man auch 
alle 4 tatsächlich benutzen - wenn man für den normalen Betrieb keine 
serielle Schnittstelle braucht.

Wenn Dir die üblichen I²C Port Expander nicht gefallen bietet sich ein 
zweiter Mikrocontroller an. Da hast du hunderte zur freien Auswahl, 
irgendeiner wird zusammen mit deiner selbst zu schreibenden Firmware 
dann wohl auch das können, was du brauchst.

Die Kommunikation zwischen ESP-Modul und Mikrocontroller kann ja 
weiterhin I²C, oder UART sein. Wenn du ein ESP-07 oder ESP-12 Modul 
verwendest, könntest du auch SPI verwenden, da wäre die schnellste 
Variante.

von Pete K. (pete77)


Lesenswert?

Arduino F. schrieb:
> Nee...
> Im Endeffekt ist es nur eine kleine Handvoll.

Aber mehr als fünf sind es schon...

von Alex (Gast)


Lesenswert?

Max M. schrieb:
> Einfach nicht das ESP-01 Board benutzen...

Ja eben, wofür hat man denn den ESP-12 <_< >_>

von Chr. M. (snowfly)


Lesenswert?

André R. schrieb:
> Wie schnell kann der ESP den I²C
> eigentlich beschicken?

Das Arduino Framework mit, laut Doku, ca. 450kHz.
Hier hat einer was darüber geschrieben:
https://tech.scargill.net/faster-esp-i2c/

Sowas gibt es aber auch:
https://github.com/pasko-zh/brzo_i2c
> 800 KHz @ 80 MHz CPU frequency
> 1 MHz @ 160 MHz CPU frequency

EDIT: Beim esp32 sieht es so aus:
>ESP32 has two I2C bus interfaces which can serve as I2C master or slave 
>depending on the user’s configuration.
>The I2C interfaces support:
>•Standard mode (100 kbit/s)
>•Fast mode (400 kbit/s)
>•Up to 5 MHz, but constrained by SDA pull up strength
>•7-bit/10-bit addressing mode
>•Dual addressing mode
>Users can program command registers to control I2C interfaces to have more 
>flexibility.

: Bearbeitet durch User
von André R. (andr_r619)


Lesenswert?

Danke für die schnelle Info!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.