Forum: Mikrocontroller und Digitale Elektronik Elektroniktaster an ESP32


von Michael (michael_dlh)


Lesenswert?

Hallo zusammen,

ich möchte den Busch-Jaeger Elektroniktaster an einen Mikrocontroller 
anbinden. Ziel ist es, das Drücken der Tasten zu detektieren sowie die 
Status-LEDs zu steuern. Später soll die Kommunikation per ESP-Now 
erfolgen, deshalb plane ich den Einsatz eines ESP32-C3. Das ganze Setup 
soll Unterputz eingebaut werden.

Hier sind ist der Verdrahtungsplan 
(https://search.abb.com/library/Download.aspx?DocumentID=2CKA000073B5087) 
und die Dokumentation für den Taster 
(https://library.e.abb.com/public/76e5025045094b54bf3d9e070f65eb7a/9AKK108471A3684_de_A_HowTo%20-%20Elektronic%20switch%2024V.pdf?x-sign=stWkg0O%2bhnZsGZBEtTr667CMj1ieuchXbP6oetn4xXhQyfnT30EeHmwMxlrhF30H#page=3).

Ich bin neu in der faszinierenden Welt der Mikrocontroller und würde 
gern wissen, ob das so technisch sinnvoll und sicher ist:

* Netzteil 230VAC -> 12VDC (z.B. 
https://www.reichelt.at/at/de/shop/produkt/led-netzteil_12_w_12_v_dc_1_a_ip40-248041) 
extern

Lochrasterplatine zum Löten von
* ESP32-C3 und
* Buck-Konverter 12VDC -> 3.3VDC (z.B. 
https://www.reichelt.de/de/de/shop/produkt/schaltregler_step-down_3_3v_1a_4_75-40vi_to220-5-255420) 
für den ESP32.

Dazu bräuchte ich auch noch ein Gehäuse.

Kann ich die Pins des Tasters einfach an die GPIOs des ESP32 hängen?

Danke und Gruß
Michael

von H. H. (hhinz)


Lesenswert?

Michael schrieb:
> Das ganze Setup
> soll Unterputz eingebaut werden.

Einschließlich des Netzteils?

von Michael (michael_dlh)


Lesenswert?

Ja, genau. Es gibt meines Wissens viele Netzteile für LED-Leuchten, die 
auch unterputz oder in Zwischendecken eingebaut werden. Gibt das ein 
Problem?

von H. H. (hhinz)


Lesenswert?

Michael schrieb:
> Gibt das ein
> Problem?

Baugröße.

https://www.reichelt.de/de/de/shop/produkt/netzteil_outdoor_12_w_5_v_2_a_kabelleitung_ip67-394066

Die üblichen ESP32 Platinchen haben ja einen 3,3V Regler drauf.

Ansonsten brauchst du noch einen Treiber für die LEDs, der ESP liefert 
ja nur 3,3V. Da könnte man einfach einen 74HCT04 nehmen.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Bei den üblichen ESP32-Boards braucht man 5V (oder 3,3V) und nicht 12V. 
Ein 12V->3,3V Wandler ist daher schon sehr sinnvoll, 12V schafft der 
Linearregler auf dem ESP32-Board wahrscheinlich wegen der 
Verlustleistung nicht und ich weiß auch nicht, ob da 5V-Schaltungen 
drauf sind (USB?), die an 12V dampfförmig das Board verlassen.

von Dieter S. (hotsystems)


Lesenswert?

Michael schrieb:
> Buck-Konverter

Statt dessen würde ich einen fertigen verwenden, wie z.B. diesen:
https://www.reichelt.de/de/de/shop/produkt/dc_dc-wandler_2_5_w_5_v_500_ma_sil-242834
Den gibt es auch in anderen Bauformen und Stromstärken.

Beitrag #7967057 wurde vom Autor gelöscht.
von Michael (michael_dlh)


Lesenswert?

Super, vielen Dank für eure Hilfe!

Dieter S. schrieb:
> Statt dessen würde ich einen fertigen verwenden, wie z.B. diesen:
> 
https://www.reichelt.de/de/de/shop/produkt/dc_dc-wandler_2_5_w_5_v_500_ma_sil-242834
Sieht super aus, danke!

H. H. schrieb:
> Die üblichen ESP32 Platinchen haben ja einen 3,3V Regler drauf.
Sehe ich das richtig, dass z.B. diese Platine 
(https://www.reichelt.at/at/de/shop/produkt/xiao_esp32c3_wifi_bt_mit_header-406869) 
keinen 3,3V Regler hat, d.h. 3,3V direkt haben will?

Welche Platine würdet ihr mir empfehlen? Ich habe gerade festgestellt, 
dass ich keine starke Präferenz für das C3 Modell habe. Wichtig ist nur 
die Unterstützung von ESP-Now. Ich brauche dann auch noch ein RTC-Modul 
- vielleicht gibt es das bereits alles auf einer Platine?

H. H. schrieb:
> Ansonsten brauchst du noch einen Treiber für die LEDs, der ESP liefert
> ja nur 3,3V. Da könnte man einfach einen 74HCT04 nehmen.
Damit bekomme ich dann 5V (also die Spannung meines Netzteils), oder? 
Denkt ihr, dass die LEDs damit hell genug leuchten werden?

: Bearbeitet durch User
von Dieter S. (hotsystems)


Lesenswert?

Michael schrieb:
> Ich brauche dann auch noch ein RTC-Modul

Wozu RTC ?
Hast du kein WLan um die Zeit vom Netz zu holen ?

von H. H. (hhinz)


Lesenswert?

Ben B. schrieb:
> Bei den üblichen ESP32-Boards braucht man 5V (oder 3,3V) und nicht 12V.
> Ein 12V->3,3V Wandler ist daher schon sehr sinnvoll,

Nö, ein 5V Netzteil ist sinnvoll.

von H. H. (hhinz)


Lesenswert?

Michael schrieb:
> Sehe ich das richtig, dass z.B. diese Platine
> 
(https://www.reichelt.at/at/de/shop/produkt/xiao_esp32c3_wifi_bt_mit_header-406869)
> keinen 3,3V Regler hat, d.h. 3,3V direkt haben will?

USB liefert 5V, also gibts da einen Regler.

von Michael (michael_dlh)


Lesenswert?

Dieter S. schrieb:
> Wozu RTC ?
Das Ganze muss auch ohne WLAN stabil laufen.

H. H. schrieb:
> USB liefert 5V, also gibts da einen Regler.
Danke! Entschuldige bitte, mein Fehler, ich habe "Eingangsspannung 
(VIN): 5 V" im Datenblatt übersehen.

von Dieter S. (hotsystems)


Lesenswert?

Michael schrieb:
> Das Ganze muss auch ohne WLAN stabil laufen.

Der ESP32 hat eine "RTC". Wie genau die läuft, k.A.
Allerdings, Spannung weg....Zeit weg.
Ich verwende immer NTP.
Alternativ zusätzlich eine DS3231 einbauen.

: Bearbeitet durch User
von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

> Nö, ein 5V Netzteil ist sinnvoll.
Wenn der TE die 12V nicht noch woanders braucht...

von Michael (michael_dlh)


Lesenswert?

Ben B. schrieb:
>> Nö, ein 5V Netzteil ist sinnvoll.
> Wenn der TE die 12V nicht noch woanders braucht...

Achso, danke für die Überlegung - ich brauche jedoch die 12V nicht.

von Michael (michael_dlh)


Angehängte Dateien:

Lesenswert?

Herzlichen Dank für die Unterstützung!

Ich versuche gerade, den Schaltplan zu zeichnen. Dabei stelle ich fest, 
dass ich mir nicht ganz sicher bin, ob ich alles richtig verstanden 
habe.

74HCT04:
VCC verbinde ich mit den 5V (+), GND mit GND. Die Eingänge A1...A6 
verbinde ich mit GPIOs. Am Taster muss ich dann LED1...LED6 mit den 
Ausgängen Y1...Y6 verbinden sowie GND an LED-C anschließen?

Weiters habe ich nun festgestellt, dass ich laut meinem Verständnis mit 
diesem spezifischen ESP-Modell zu wenig GPIO-Pins habe (benötigt 6x2) 
(?).

Im Anhang mein Entwurf zur Abfrage von 3 Tasten sowie Steuerung der 
zugehörigen LEDs.

Weitere Frage: Nun habe ich doch 5V an den GPIOs D3...5, vertragen die 
das?

von H. H. (hhinz)


Lesenswert?

SW-C auch noch an GND, und eigentlich auch noch drei Pullups (wenige 
10kOhm) nach 3.3V an die Schaltereingänge.

Beitrag #7967237 wurde vom Autor gelöscht.
von Michael (michael_dlh)


Angehängte Dateien:

Lesenswert?

H. H. schrieb:
> SW-C auch noch an GND, und eigentlich auch noch drei Pullups (wenige
> 10kOhm) nach 3.3V an die Schaltereingänge.
Dafür kann ich einen "normalen" Widerstand, z.B. 33kOhm (bspw. 
https://www.reichelt.at/de/de/shop/produkt/duennschichtwiderstand_axial_0_6_w_33_kohm_1_-233726) 
verwenden? Soll ich noch Zener-Dioden nach dem Widerstand dazunehmen, um 
sicher zu gehen, dass nie Spannungen >3.3V an den GPIOs anliegen, oder 
ist das unnötig?

(Verbesserter Plan siehe Anhang.)

von Ron-Hardy G. (ron-hardy)


Angehängte Dateien:

Lesenswert?

Michael schrieb:
> (Verbesserter Plan siehe Anhang.)

eher verschlimmbessert

von Michael (michael_dlh)


Angehängte Dateien:

Lesenswert?

Ron-Hardy G. schrieb:
> eher verschlimmbessert
Oje😂

Manchmal sehe ich halt nicht gut...

von H. H. (hhinz)


Lesenswert?

Michael schrieb:
> Manchmal sehe ich halt nicht gut...

Aber hast es ja jetzt richtig gezeichnet.

Michael schrieb:
> Dafür kann ich einen "normalen" Widerstand,

Ja.

von Michael (michael_dlh)


Lesenswert?

Vielen Dank für die Hilfe!

von H. H. (hhinz)


Lesenswert?

Noch eine Kleinigkeit: die unbenutzten Eingänge des HCT04 dürfen nicht 
unbeschaltet bleiben. Klemm die an GND.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Elektroniktaster... Wieviel Strom brauchen dessen LEDs, bekommt man die 
evtl. an 3,3V zum laufen? Falls ja, der ESP32 kann mit einem GPIO-Pin 
40mA gegen Masse liefern, das reicht für zwei normale (20mA) LEDs. Dann 
könnte man sich auch die 5V und den CMOS-IC sparen oder brauchen die 
LEDs (z.B. wegen interner Vorwiderstände) zwingend 5V?

Achtung, bei manchen ESPs können nicht alle GPIOs als Output verwendet 
werden, da muss man ggf. sinnvoll aufteilen.

Wegen der Taster/Schalter: Der ESP32 hat interne Pullups, man braucht 
keine externen. Was man eher machen sollte, wäre ein 10..47nF 
Keramikkondensator über die Taster (nach Masse) zur Entprellung. Dann 
muss man sich damit nicht in der Software herumplagen und 
störunterdrückend wirken die auch gleich noch mit.

von Joachim B. (jar)


Lesenswert?

Ben B. schrieb:
> das reicht für zwei normale (20mA) LEDs.

was sind "normale" 20mA LEDs?
Die gibt es ja kaum noch und moderne LEDs brennen einem bei 20mA die 
Netzhaut weg.

von H. H. (hhinz)


Lesenswert?

Ben B. schrieb:
> Elektroniktaster... Wieviel Strom brauchen dessen LEDs, bekommt man die
> evtl. an 3,3V zum laufen? Falls ja, der ESP32 kann mit einem GPIO-Pin
> 40mA gegen Masse liefern, das reicht für zwei normale (20mA) LEDs. Dann
> könnte man sich auch die 5V und den CMOS-IC sparen oder brauchen die
> LEDs (z.B. wegen interner Vorwiderstände) zwingend 5V?

Tja, hättest du mal lesen sollen:

https://library.e.abb.com/public/76e5025045094b54bf3d9e070f65eb7a/9AKK108471A3684_de_A_HowTo%20-%20Elektronic%20switch%2024V.pdf

"LED
Zur Visualisierung eines Status gibt die zentrale Steuerung (z.B. Aktor) 
an
einem definierten Ausgang eine Spannung 5..24V AC/DC heraus. Diese
wird über die Anschlussleitung/Anschlussblock zur entsprechenden LED
geleitet. Auf LED-C wird der entsprechende Gegenpol/Masse (für alle LEDs
pro Klemmblock gleich!) geschaltet. Stromaufnahme pro LED: ca. 1mA"

von N. M. (mani)


Lesenswert?

Wenn du nicht gerade irgendwas multiplext hast du sowieso etwas wenig 
Pins.
6 Eingänge (SW1-6).
6 Ausgänge (LED1-6).
Wäre so schon zu wenig bei deinem Board.
Dann noch 2 Pins für I2C an die gewünschte RTC.
Und dann musst du noch extrem vorsichtig mit den Stapping Pins [1] sein 
damit der ESP richtig bootet. Fallen also evtl auch noch ein paar 
nutzbare Pins weg.

Bei den LEDs brauchst du sowieso eine Pegelkonvertierung 3V3-->5V.
Ich würde deshalb über Portexpander nachdenken. Dann hast du mehr Pins 
und bekommst die Pegel Konvertierung quasi gratis. Ich persönlich würde 
SPI nehmen. Dann soll der DMA/SPI das einfach im Hintergrund zyklisch 
aktualisieren.

[1] 
https://wiki.seeedstudio.com/XIAO_ESP32C3_Getting_Started/#strapping-pins

: Bearbeitet durch User
von Michael (michael_dlh)


Lesenswert?

H. H. schrieb:
> Noch eine Kleinigkeit: die unbenutzten Eingänge des HCT04 dürfen nicht
> unbeschaltet bleiben. Klemm die an GND.
N. M. schrieb:
> Und dann musst du noch extrem vorsichtig mit den Stapping Pins [1] sein
> damit der ESP richtig bootet.
Danke👍

N. M. schrieb:
> Bei den LEDs brauchst du sowieso eine Pegelkonvertierung 3V3-->5V.
> Ich würde deshalb über Portexpander nachdenken. Dann hast du mehr Pins
> und bekommst die Pegel Konvertierung quasi gratis. Ich persönlich würde
> SPI nehmen.
Ich dachte gestern an einen MCP23017-E/SO, allerdings kann die Schaltung 
dank deinem Hinweis wohl deutlich vereinfacht werden.

Ich habe keinen passenden SPI-Konverter gefunden, jedoch einen mit 
I2C-Verbindung: MCP23017 
(https://www.reichelt.at/at/de/shop/produkt/entwicklerboards_-_i_o-erweiterungsboard_mcp23017-376528). 
Dieser arbeitet mit einer Logikspannung von 5V, d.h., ich kann mir 
sowohl den HCT04 als auch die Pullup-Widerstände sparen?

von N. M. (mani)


Lesenswert?

Michael schrieb:
> MCP23017

Kann IN/OUT. Bei Input kann er weak pullup. Bei Output kann er PUSH/PULL 
(25mA).
Ja, der ist doch gut. Den gibt es auch mit SPI, aber I2C hat den Vorteil 
dass du dich in den Specs bewegst. Bei SPI reicht es sonst mit 
VIOH=0.8*VCC nicht.

Den kannst du dann, wenn du willst, auf die gleiche I2C hängen wie deine 
RTC. Brauchst also nur 2 GPIOs auf deinem ESP Board. Wobei Reset/INTx je 
nach Programmablauf vielleicht auch interessant sind.

Pass aber auch hier auf, GPA/B7 sind reine Outputs.

Michael schrieb:
> d.h., ich kann mir sowohl den HCT04 als auch die Pullup-Widerstände
> sparen?

Ja

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Michael schrieb:
> Ich habe keinen passenden SPI-Konverter gefunden, jedoch einen mit
> I2C-Verbindung: MCP23017

MCP23S17

von N. M. (mani)


Lesenswert?

N. M. schrieb:
> Michael schrieb:
>> d.h., ich kann mir sowohl den HCT04 als auch die Pullup-Widerstände
>> sparen?
>
> Ja

Wobei die internen 100k je nach dem vielleicht etwas viel sind.

Rainer W. schrieb:
> MCP23S17

Wie gesagt: VIH=0.8*5V=4V ist evtl nicht ganz optimal bei einem 3V3 uC.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Jo, schade daß man zu diesen ominösen Supertastern kein Datenblatt 
findet, ob die einen 3,3V Pegel bereits sicher als high erkennen, da war 
sich Busch-Jäger anscheinend zu fein für. Naja nichts für ungut, dann 
noch viel Spaß mit den Doppel-Pullups, irgendwie muss die Komplexität so 
einfacher Schaltungen ja sinnlos gesteigert werden.

von Michael (michael_dlh)


Lesenswert?

N. M. schrieb:
> Pass aber auch hier auf, GPA/B7 sind reine Outputs.
Das verstehe ich leider nicht. Du beziehst dich auf den MCP23017 
(https://cdn-reichelt.de/documents/datenblatt/A300/IO-EXPANDER-MCP23017-BREAKOUT.pdf)?

Am ESP hätte ich den MCP23017 an GPIO6 und 7 angeschlossen, da laut 
diesem Bild (https://files.seeedstudio.com/wiki/XIAO_WiFi/pin_map-2.png) 
die SDA/SCL Pins an 6/7 sind.

https://wiki.seeedstudio.com/XIAO_ESP32C3_Getting_Started/#power-pins:
> 5V - This is 5v out from the USB port. You can also use this as a voltage input 
but you must have some sort of diode (schottky, signal, power) between your 
external power source and this pin with anode to battery, cathode to 5V pin.
Die Diode braucht man nur, wenn man eine Batterie als Spannungsquelle 
hat?

von H. H. (hhinz)


Lesenswert?

Ben B. schrieb:
> Jo, schade daß man zu diesen ominösen Supertastern kein Datenblatt
> findet, ob die einen 3,3V Pegel bereits sicher als high erkennen, da war
> sich Busch-Jäger anscheinend zu fein für.

Du bist nur zu dumm das Datenblatt zu verstehen. Die Taster wissen 
nichts von irgendwelchen Pegeln, da macht die Elektronik, an die sie 
angeschlossen werden.


> Naja nichts für ungut, dann
> noch viel Spaß mit den Doppel-Pullups, irgendwie muss die Komplexität so
> einfacher Schaltungen ja sinnlos gesteigert werden.

Sinnlos sind vor allem deine Postings.

von Michael (michael_dlh)


Angehängte Dateien:

Lesenswert?

Dann habe ich nun also einen Plan für den ersten Prototypen. Danke euch!

von H. H. (hhinz)


Lesenswert?

Michael schrieb:
> Dann habe ich nun also einen Plan für den ersten Prototypen. Danke
> euch!

Naja, kann gut sein, dass du den I2C mit extra Pullups versehen musst.

Besser wär eh ein Pegelwandler 3,3/5V.

: Bearbeitet durch User
von N. M. (mani)


Lesenswert?

Michael schrieb:
> Das verstehe ich leider nicht. Du beziehst dich auf den MCP23017
> 
(https://cdn-reichelt.de/documents/datenblatt/A300/IO-EXPANDER-MCP23017-BREAKOUT.pdf)?

Nein, auf das wirkliche Datenblatt des MCP23017:
https://ww1.microchip.com/downloads/aemDocuments/documents/APID/ProductDocuments/DataSheets/MCP23017-Data-Sheet-DS20001952.pdf

Seite 11, Spalte zu GPA7/GPB7, letzter Satz:
1
Bidirectional I/O pin. Can be enabled for interrupt-on-change and/or internal weak pull-up resistor./ 
2
Output only (MCP23017).

: Bearbeitet durch User
von Michael (michael_dlh)


Lesenswert?

@mani: Danke!

H. H. schrieb:
> Besser wär eh ein Pegelwandler 3,3/5V.
Z.B. 3x BSS138 oder hast du eine bessere Empfehlung?

von H. H. (hhinz)


Lesenswert?

Michael schrieb:
> @mani: Danke!
>
> H. H. schrieb:
>> Besser wär eh ein Pegelwandler 3,3/5V.
> Z.B. 3x BSS138 oder hast du eine bessere Empfehlung?

Für I2C nur 2x, und sowas gibt auch als fertiges Platinchen für 1€.

von Cyblord -. (cyblord)


Lesenswert?

Michael schrieb:
> Ich bin neu in der faszinierenden Welt der Mikrocontroller und würde
> gern wissen, ob das so technisch sinnvoll und sicher ist:

Ja super, absoluter Neuling und dann gleich Home Automatisierung mit ESP 
und Lichtschaltern.
Nimm einen Shelly. Der ist für DAUs.

von Michael (michael_dlh)


Lesenswert?

H. H. schrieb:
> Für I2C nur 2x, und sowas gibt auch als fertiges Platinchen für 1€.
https://www.reichelt.at/de/de/shop/produkt/entwicklerboards_-_bidirektionaler_logikpegelkonverter_4-kanal_-235503?search=BSS138&;

Der DAU findet zwar nur eins um 7€ - soll jedoch egal sein, sofern es 
funktioniert ;)

@Cyblord: Hast du eine Empfehlung für Hardware-Grundlagen-Literatur? 
(C/C++ kann ich schon.)

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Hast Du Dir überhaupt schon Gedanken gemacht, wie Du den ESP32 
programmieren möchtest?

von Michael (michael_dlh)


Angehängte Dateien:

Lesenswert?

Ben B. schrieb:
> Hast Du Dir überhaupt schon Gedanken gemacht, wie Du den ESP32
> programmieren möchtest?
Ich würde mit der Arduino IDE und C beginnen.

Zwischenzeitlich habe ich das Projekt etwas ruhen lassen, dafür aber 
einiges Neues gelernt.

Ich habe nun einen neuen Plan mit Kicad gezeichnet (unter Beachtung von 
https://www.mikrocontroller.net/articles/Schaltplan_richtig_zeichnen). 
Den I2C Bus zwischen PCA9555 und ESP32 muss ich dann mMn mit Pull-up 
Widerständen (R1, R2 im Plan) verbinden.
(Weggelassen am Schaltplan: LED-C---GND, SW-C---GND, LEDx---IO0_x, 
SWx---IO1_x.)

Ziel ist es, diese Schaltung als Prototyp mit Steckbrett und 
Breakout-Adaptern aufzubauen, zu programmieren und zu testen, bevor 
weitere Komponenten hinzugefügt werden. Später werde ich bei JLCPCB die 
Platinen fertig bestückt bestellen, damit das Endresultat kompakt und 
nicht von meinen Löt-Kenntnissen abhängig ist :)

Die Busch-Jaeger Taster wurden noch nicht geliefert. Weiß jemand 
zufällig, welcher Steckertyp verwendet wird? Ich denke, es wäre sauber, 
wenn ich auf meiner Platine eine Buchse (16 Pins) anbringe und zwischen 
meiner Buchse und der Busch-Jaeger Buchse ein vorgefertigtes Kabel 
(16-adrig) mit ebendiesen Steckern verwenden würde. (Datenblatt 
"Anschlussblock mit Steckklemmen", 
https://search.abb.com/library/Download.aspx?DocumentID=2CKA000073B5087)

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.