Forum: Mikrocontroller und Digitale Elektronik Alternative für ESP32 mit "etwas" mehr IO's - STM32 - Ein paar Fragen


von Daniel D. (darath)


Lesenswert?

Guten Tag,

In meinem aktuellem Projekt benutze ich einen ESP32 als MQTT Client. Bei 
der Gestaltung der ersten Version des PCB ist uns direkt aufgefallen, 
dass wir fast sämtliche Pins des ESP benötigen. Frei sind nur noch IO36 
& IO39.
Das Projekt hat 2 Sensoren-Inputs, 1x One-Wire und der Rest ist gefüllt 
mit Outputs für MOSTFETs.

Aktuell regelt der ESP32 alles alleine, bei dem Prozessor auch so weit 
kein Problem nur wenn wir die MQTT Daten zu schnell senden verwirrt es 
ihn und es kommt nur "Blödsinn" herum. Dazu wollen wir in der nächsten 
Version gerne Ethernet einbauen um das Board auch an stellen Einzusetzen 
wo kein WLAN vorhanden ist bzw. auch einen Geschwindigkeitsvergleich 
erstellen.

Normalerweise ist Ethernet auf einen ESP bauen kein Problem, entweder 
über SPI mit 4 Pins oder über ein externen PHY mit wesentlich mehr. 
(ESP32-Ethernet Board) - Leider ist aber alles belegt. Auf Verwendung 
von Expandern wollen wir verzichten.

Jetzt suche ich nach einer "einfachen" Möglichkeit das Projekt zu 
erweitern. Dabei ist mir die Idee gekommen den ESP32 (oder einen 8266) 
als WLAN Verbindung zu behalten und diesen mit Ethernet über TX/RX 
auszustatten. Dann über SPI an einen "stärkeren" MCU der dann die ganze 
Rechenarbeit erledigt.
(Oder auch ein W5500 über SPI an den neuen MCU)

Bei der suche bin ich aber auf so viele Möglichkeiten gestoßen das mir 
etwas der Kopf raucht. Dabei ist mir am meisten der STM32 im Kopf 
geblieben. Da ich nicht  100+ Outputs benötige dachte ich den kleinsten 
aber stärksten 64er STM32L476RG - Dieser scheint aber Leistungstechnisch 
schon nicht an den ESP heranzukommen sehe ich das richtig ? Die größeren 
144 sind zwar mächtiger (und hätten sogar Ethernet) aber einfach 
to-much.


Das "kurz" als Information, jetzt zu meinen Fragen:
Macht der Unterschied zwischen den beiden Prozessoren viel aus ?
Ich habe noch nie einen STM programmiert sondern nur mit ESP32 Arduino - 
Wie ist der Umstieg ? Habe ein paar Videos angeschaut und den 
Anfängerbeitrag gelesen fand mich aber etwas überschlagen (gerade die 
Clock Einstellungen?) und wie sieht es mit Libs aus bzw. Umcoden von 
Arduino Code aus ?
Habt ihr vielleicht sogar eine gänzlich andere Idee ?

Vielen Dank

MfG Darath

von Johannes S. (Gast)


Lesenswert?

Daniel D. schrieb:
> Die größeren
> 144 sind zwar mächtiger (und hätten sogar Ethernet) aber einfach
> to-much.

warum to-much wenn er die Forderungen erfüllt? Eine Alternative zu 
Arduino wäre Mbed, da ist Ethernet für diese STM32 Boards gut 
implementiert und EthernetInterfaces sind Klassen von denen es mehrere 
Instanzen geben darf. Zum EMAC vom µC kann man also wifi für einen ESP 
per UART und AT-Kommandos parallel betreiben. Die IP Schicht ist dann 
für beide Verbindungen gleich.
https://os.mbed.com/docs/mbed-os/v6.9/apis/connectivity-architecture.html
https://os.mbed.com/docs/mbed-os/v6.9/apis/wi-fi.html

von Εrnst B. (ernst)


Lesenswert?

Daniel D. schrieb:
> Habt ihr vielleicht sogar eine gänzlich andere Idee ?

Ich würde das mit dem "Expander-Ausschluss" nochmal überdenken.
So ein stupider IO-Expander am SPI oder i2c ist viel einfacher zu 
beherrschen als ein Zwei-CPU-System.
Gibt auch welche mit PWM (PCA9685 z.B), wenn das ein Kriterium ist.

Und nachdem ihr jetzt schon Probleme mit Bugs in der Software habt
(
Daniel D. schrieb:
> nur wenn wir die MQTT Daten zu schnell senden verwirrt es
> ihn und es kommt nur "Blödsinn" herum.
)
und wohl mit der Komplexität überfordert seid (sorry, liest sich so) 
würde ich auf jeden Fall zu einer KISS-Lösung raten.

von simon (Gast)


Lesenswert?

Ich würde auch die I/O expander variante wählen. Alles andere ist 
deutlich mehr Aufwand ohne Gewinn.

von ... (Gast)


Lesenswert?

Nimm einfach ein paar 74HC595 fuer die doofen FETs.
Zack hast du Pins ohne Ende frei.

Wer nimmt schon einen ESP32. Der skaliert doch nicht.
Ende Fahnenstange := Ende Gelaende.

von Stefan F. (Gast)


Lesenswert?

... schrieb:
> Nimm einfach ein paar 74HC595 fuer die doofen FETs.
> Zack hast du Pins ohne Ende frei.

Wenn man die mit 5V betreibt, hat man gleich schön kräftige Gate Treiber 
- verglichen mit dem nackten ESP32.

von S.P. (Gast)


Lesenswert?

... schrieb:
> Nimm einfach ein paar 74HC595 fuer die doofen FETs.
> Zack hast du Pins ohne Ende frei.

Für den Fall, dass Lasten nicht allzu groß sind, könnte man diese auch 
direkt mit einem TPIC6C595 treiben und die FETs einsparen.

von Daniel D. (darath)


Lesenswert?

Danke für die Antworten. Ich habe mir mal ein paar Expander bestellt und 
werde es einfach mal testen.
Da die Daten ja wirklich simpel sind, die über die Expander übertragen 
werden und die Leitung kurz würde ich wahrscheinlich 2-3 I2C Expander 
anhängen und den Ethernetanschluss über SPI.
Alternativ tauschen und 2-3SPI Expander und Ethernet über TX/RX

S.P. schrieb:
> Für den Fall, dass Lasten nicht allzu groß sind, könnte man diese auch
> direkt mit einem TPIC6C595 treiben und die FETs einsparen.
Leider sind die Lasten größer, da hinter den FETS entweder SSRs oder 
Pumpmotoren liegen.(12-24V)

... schrieb:
> Wer nimmt schon einen ESP32. Der skaliert doch nicht.
> Ende Fahnenstange := Ende Gelaende.
Kosten-Nutzen Effektiv, für den Preis ist die Coregeschwindigkeit echt 
top. Leichter zu programmieren als STM (Würden wir wohl gerne nehmen, 
aber zugegeben keine Ahnung davon)

Stefan ⛄ F. schrieb:
> Wenn man die mit 5V betreibt, hat man gleich schön kräftige Gate Treiber
> - verglichen mit dem nackten ESP32.
Die MFETS die dran sind, sind alle TTL - Reicht zum schalten, wenn auch 
nicht "kräftig". Alternativ könnte man ein Level-Shifter dran hängen, 
wie viel würde das denn bringen? Wie man am ESP32 IO sieht, hab ich 
12MOSFETS-N und 4PMOSFETS-N
Heißt dass, ich würde auch 16~ Level Shifter benötigen oder kann man da 
was "schummeln" an den Ausgängen der Expander ?


EDIT:
Kurzer Anhang - Aktuell werden die FETS:
RF3704 & IRLL014 betrieben. Wir haben einen 10K PullDown Widerstand aber 
sie schalten nicht richtig sauber ab. Ist der Widerstand zu niedrig oder 
zu hoch ? Wie kann ich das "nachrechnen"? Oft wird nur gesagt nimmt 
"1K/10K/100K und das passt."

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Daniel D. schrieb:
> Alternativ könnte man ein Level-Shifter dran hängen,
> wie viel würde das denn bringen?

Solange es nur um einfache an/aus Signale (kein PWM) oder niedrige PWM 
Frequenzen (< 1 kHz) geht, würde ich mir keinen großen Kopp machen und 
die Schaltung so einfach wie möglich halten.

Richtige Treiber braucht man dank der modernen Logic-Level MOSFET nur 
noch für hohe Frequenzen oder Spannungen.

von ... (Gast)


Lesenswert?

> Kosten-Nutzen Effektiv

Effektiv ist da gar nichts. Das was an Pins fehlt muss per
Expander dran gestueckelt werden und von der
> Coregeschwindigkeit
bleibt bei
> Ethernetanschluss über SPI
exakt auch nichts uebrig.

Wenn die IOs des ESP32 so schwach sind, dass sie nicht
mal LogicLevel-FETs ohne extra Buffer/Levelshifter treiben
koennen, ist das "Effektiv" nur schlecht.

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.