Forum: Mikrocontroller und Digitale Elektronik ESP 32 Schaltung


von Marc U. (marc_u)



Lesenswert?

Hallo,

ich bin ganz neu hier und bin dabei mich in die Themen Elektronik und 
Mikrocontroller einzuarbeiten. Leider bin ich lediglich ein Maschinenbau 
Ingenieur und nicht allzu erfahren mit Schaltungsentwicklung.
Mein Projekt ist ein Smartes Gewächshaus. Als Grundlage der Elektronik 
dient ein ESP32 Node-MCU, der mit Sensoren für Luftfeuchte, Luftdruck, 
Lufttemperatur, Erdfeuchte und Helligkeit verbunden ist. Weiterhin 
sollen ein PC-Lüfter, eine Wasserpumpe und eine 230V LED-Pflanzenleuchte 
vom ESP gesteuert werden. Mit der Programmierung bin ich weitestgehend 
fertig und habe inzwischen ein Html-Webinterface zur Bedienung mit 
sämtlichen Sensorwerten und Aktorsteuerelementen. Versuchsweise habe ich 
alles an einem Breadboard aufgebaut und die Funktionen waren auch 
gegeben. Das nächste Ziel wäre das Design einer Platine. Wie ich jedoch 
anfangs dargestellt hatte, bin ich leider kein Profi und wäre sehr 
dankbar für ein Feedback bzw. Verbesserungsvorschlägen zu meiner 
Schaltung und vor allem für Hinweise bei groben Schnitzern. Im Anhang 
befinden sich ein Schaltplan (wenn man es so nennen kann) und eine Liste 
der angedachten Bauteile.

Vielen Dank und schöne Ostern!

Marc

von Paul (Gast)


Lesenswert?

Lern als erstes Schaltbilder zu zeichnen.
Solche Suchbilder wie im Anhang sind zwar modern, taugen aber zum 
Verständnis nicht mehr als eine Verdrahtungsliste.
Wozu brauche ich eine Zeichnung, wenn ich doch jede Verbindung suchen 
muß?

von Gerald K. (geku)


Lesenswert?

Ich nehme an, dass die Schaltung aufgebaut, getestet wurde und 
funktioniert.

Die Adressen des Temperatursensors und des Helligkeitssensors müssen 
unterschiedlich sein. Ich würde mich vergewissern, dass der ADDR Pin 
des Helligkeitssensors einen internen Pullup oder Pulldown hat. Sonst 
müsste der Eingang beschaltet werden.

Ich nehme weiters an, dass die Submodule verwendet werden und die zu 
entwickelnde Leiterplatte, ausgenommen Netzteil, nur als Trägerplatine 
dient. Dann sollten in der Schaltung die Steckverbindungen (Stecker) 
eingezeichnet werden.

Wichtig bei der Platzierung des ESP32 ist es, dass die Antenne über den 
Leiterplattenrand heraus ragt, sonst gibt es Einbusen bei der 
Reichweite.

Ich gehe davon aus, dass der ESP32 die 3,3V liefert. Dann ist die 
Richtung des Symbols am Pin 19 des ESP32 verkehrt gezeichnet.


Ergänzung zum vorangegangen Post :

Bis auf GND, Vcc (5V) und 3,3V sollten nach Möglichkeit alle 
Verbindungen gezeichnet werden. Für GND und Spannungsversorgungen gibt 
es spezielle Symbole.

von Pete K. (pete77)


Lesenswert?

Ich würde TX/RX mit VCC/GND noch auf eine Stiftleiste legen, so kann man 
auch mal etwas debuggen.

von Pete K. (pete77)


Lesenswert?

Marc U. schrieb:
> Das nächste Ziel wäre das Design einer Platine.

Na, dann zeig mal her :-)

Schau Dir die Module genau an, was Pullups an SCL/SDA angeht. Du 
solltest alle Pullups von den Modulen löten, da der NodeMCU schon welche 
hat.

P.S.: Muss EN nicht beschaltet werden?

: Bearbeitet durch User
von Marc U. (marc_u)


Angehängte Dateien:

Lesenswert?

Vielen Dank für die Rückmeldungen!

Dass die Schaltbilder nicht professionell oder gar normgerecht sind, 
hatte ich leider erwartet und hoffe mich bald zu verbessern. Ich habe 
jetzt nochmals eine Version erstellt, die die Steckverbinder und 
sämtliche Verbindungen enthält.

Die Adressen der I2C Sensoren sind tatsächlich bereits unterschiedlich 
und ich kann diese bereits auf dem Breadboard lesen. Die Platine enthält 
nur die Stromversorgung und die Steckverbindungen für die anderen Module 
(im neuen Schaltplan sind die Elemente der Platine rot gestrichelt 
eingerahmt). Die Pullup Widerstände werde ich von den Modulen entfernen, 
vielen Dank für den Hinweis. EN muss in meinem Fall nicht beschaltet 
werden, der ESP hat hier schon einen Taster.

Tatsächlich besteht die größte Unsicherheit bei der Stromversorgung, da 
ich diese nicht getestet habe und auf ein anderes Netzteil 
zurückgegriffen habe. Könnte das so funktionieren?

Vielen Dank nochmals und ich freue mich auf weitere Anregungen.

Grüße
Marc

von Michael U. (amiga)


Lesenswert?

Hallo,

wenn Du nur die beiden Sensoren am I2C dran hast, laß die PullUp wie sie 
sind. Üblicherweise sind da 4,7k oder 10k drauf, das passt also.
Leiterplatten mache ich persöhnlich für sowas nicht, endet bei mir auf 
einer passend großen Lochraster mit den Buchsenleisten und den paar 
Teilen und wird handverdrahtet. Sind hier normalerweise Einzelstücke und 
außerdem kann man gut nachträglich was ändern.
Schätz mal die Stromaufnahme der 5V Schiene ab, 200mA und (12-5) = 7V 
sind für den 7805 schon 1,4W, also Kühlkörper einplanen oder China 
StepDown.
Pass auch auf der 230V Seite auf die Abstände auf, wenn das Netztel 
selbst keine hat, plane eine übliche Feinsicherung mit ein.
Bei mir würde es wohl mit einer Buchse für die 12V enden und einer 
üblichen Wandwarze 12V/2A oder was nötig ist, die bleiben sowieso immer 
bei alten externen Festplatten o.ä. übrig.
Beim BME280 pass mit der Anordnung auf, der stört sich auch an geringen 
Wärmequellen in mehreren cm Abstand noch, außerdem möglichst im 
ForcenMode nutzen und nicht allzu oft auslesen.
BH1750 habe ich auch im Einsatz, die sind unkritisch.
NodeMCU nehme ich nur noch hier zum Testen, im Einsatz nur noch den D1 
mini, ist kleiner...

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Marc U. schrieb:
> Ich habe jetzt nochmals eine Version erstellt, die die Steckverbinder
> und sämtliche Verbindungen enthält.

Deine Schaltplanzeichenkünste kannst du noch weiter verbessern, indem du 
dir angewöhnst, den Signalfluss möglichst in Leserichtung von links nach 
rechts entsprechend dem EVA-Prinzip zu gestalten, also Eingänge/Sensoren 
links, Verarbeitung (µC) in der Mitte und Ausgänge/Aktuatoren rechts.

Symbole für Versorgungsspannungen findest du in Eagle in supply1.lbr und 
supply2.lbr

Um beispielsweise die ganzen Steuerleitungen für den L293D im Schaltplan 
optisch zusammen zu fassen, bietet sich in Eagle ein Bus zwischen µC und 
Treiber an.

Wasserpumpe und Lüfter sollen wahrscheinlich immer in die selbe Richtung 
drehen. Ein Anschluss kann dafür fest an der Versorgung hängen, i.e. die 
brauchen nicht jeweils zwei Outputs des L293D.

von Wolfgang (Gast)


Lesenswert?

p.s.
C2 muss dicht an den ESP32. DAS ist der Stromverbraucher mit den 
Impulslasten.

Anstelle des Linearreglers für die 5V-Stromversorgung könnte man wegen 
der geringeren Verlustleistung (und der Wärmeempfindlichkeit des 
Temperatursensors) auch einen kleinen DC/DC-Wandler nehmen, z.B. 
https://www.ebay.com/itm/201986971015

von Dietrich L. (dietrichl)


Lesenswert?

Marc U. schrieb:
> Ich habe jetzt nochmals eine Version erstellt,

Die Version ist schon deutlich besser, aber ...

Gerald K. schrieb:
> Bis auf GND, Vcc (5V) und 3,3V sollten nach Möglichkeit alle
> Verbindungen gezeichnet werden. Für GND und Spannungsversorgungen gibt
> es spezielle Symbole.

... das ist die Ausnahme von dem Wunsch, alle Signale wirklich zu 
zeichnen. Denn diese Verbindungen verwirren mehr als sie für das 
Schaltungsverständnis helfen.

von Joachim (Gast)


Lesenswert?

Irgendwie kann ich nicht den Vorteil erkennen, den der überarbeitete 
Schaltplan haben soll. Den ursprünglichen Schaltplan mit den Labels fand 
ich persönlich völlig klar und übersichtlich, der überarbeitete 
Schaltplan mit den ganzen Verbindungen hingegen erinnert mich an eines 
dieser Rätsel, bei dem man in einem Wirrwarr von Linien eine bestimmte 
Linie vom Start bis zum Ende verfolgen soll. Und das, obwohl diese 
Schaltung hier ja ziemlich simpel und das Relais-Modul bei der 
überarbeiteten Version irgendwie verschwunden ist.

Lediglich die Wahl der Labels fand ich im ursprünglichen Schaltplan 
etwas suboptimal: Statt bspw. die Signalleitung, über die die gemessene 
Feuchtigkeit an den µc übertragen wird, "ESP 34" zu nennen (nach dem 
GPIO-Pin des µc, an den sie angeschlossen ist), hätte ich da als Label 
sowas wie "MOISTURE" benutzt, damit man sofort sieht, wozu diese Leitung 
da ist.

Ansonsten noch zwei Gedanken zum eigentlichen Schaltung:
1. Warum ein vglw. teurer L293, um einen PC-Lüfter und eine Pumpe 
anzusteuern? Und dafür dann auch noch gleich sechs GPIO-Pins 
verschwenden?
Sowohl PC-Lüfter als auch Pumpe werden doch wohl nur in eine Richtung 
betrieben. Warum also H-Brücken, wenn für beide Komponenten doch 
eigentlich je eine Leitung zum Ansteuern genügt. Ein billiger ULN2803 
oder so würde hier vermutlich genügen, und man könnte damit sogar noch 
bis zu sechs weitere Sachen steuern.

2. Im überarbeiteten Schaltplan wurde entsprechend eines 
Verbesserungsvorschlages nun eine Pinleiste für serielle Kommunikation 
eingebaut, zum Debugging etc. Die ist im Grunde aber unnötig, Du 
verwendest ja eine komplette NodeMCU-DevKit-Platine, da dafür bereits 
eine USB-Schnittstelle eingebaut hat.

von Wolfgang (Gast)


Lesenswert?

Joachim schrieb:
> der überarbeitete
> Schaltplan mit den ganzen Verbindungen hingegen erinnert mich an eines
> dieser Rätsel, bei dem man in einem Wirrwarr von Linien eine bestimmte
> Linie vom Start bis zum Ende verfolgen soll.

Darum:

Wolfgang schrieb:
> Um beispielsweise die ganzen Steuerleitungen für den L293D im Schaltplan
> optisch zusammen zu fassen, bietet sich in Eagle ein Bus zwischen µC und
> Treiber an.

von Joachim (Gast)


Lesenswert?

Wolfgang schrieb:
> Joachim schrieb:
>> der überarbeitete
>> Schaltplan mit den ganzen Verbindungen hingegen erinnert mich an eines
>> dieser Rätsel, bei dem man in einem Wirrwarr von Linien eine bestimmte
>> Linie vom Start bis zum Ende verfolgen soll.
>
> Darum:
>
> Wolfgang schrieb:
>> Um beispielsweise die ganzen Steuerleitungen für den L293D im Schaltplan
>> optisch zusammen zu fassen, bietet sich in Eagle ein Bus zwischen µC und
>> Treiber an.

Ja, aber im vorliegenden Fall sind die ganzen Steuerleitungen für den 
L293D doch eh unnötig. Wie Du ja selbst bereits geschrieben hast, werden 
sich PC-Lüfter und Pumpe doch wohl eh nur in eine Richtung drehen, es 
genügt für beide Aktoren also eigentlich je eine Leitung zum µc, nämlich 
das Enable-Signal. Die vier Input-Leitungen könnte man fest auf Masse 
bzw. 3.3V legen.

Anyway, ich würde wirklich gerne verstehen, was bei der vorliegenden 
Schaltung der Vorteil davon sein soll, alle Verbindungen in Form von 
Linien einzuzeichnen, statt sinnvoll benannte Labels zu verwenden.
Ich will wohlgemerkt nicht behaupten, dass es keine sehr guten Gründe 
dafür gibt. Ich habe vielmehr einfach nur vglw. wenig Erfahrung mit 
Schaltungsentwurf, und möchte daher einfach verstehen, welche Vorteile 
das haben soll; für mich als Laien sieht der ursprüngliche Schaltplan 
viel übersichtlicher und verständlicher aus.

von Stefan F. (Gast)


Lesenswert?

Joachim schrieb:
> Anyway, ich würde wirklich gerne verstehen, was bei der vorliegenden
> Schaltung der Vorteil davon sein soll, alle Verbindungen in Form von
> Linien einzuzeichnen, statt sinnvoll benannte Labels zu verwenden.

Dann sieht man zum Beispiel direkt, dass da einige Teile parallel an den 
selben Leitungen hängen (Bus

Wenn du noch die Leserichtung wie empfohlen änderst, sieht er viel 
besser aus. Denn wir alle werden schon in der Grundschule darauf 
getrimmt, von links nach rechts und oben nach unten zu lesen.

von Joachim (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Joachim schrieb:
>> Anyway, ich würde wirklich gerne verstehen, was bei der vorliegenden
>> Schaltung der Vorteil davon sein soll, alle Verbindungen in Form von
>> Linien einzuzeichnen, statt sinnvoll benannte Labels zu verwenden.
>
> Dann sieht man zum Beispiel direkt, dass da einige Teile parallel an den
> selben Leitungen hängen (Bus

Dass das bei Bussen eine vorteilhaftere Darstellung sein kann, leuchtet 
mir durchaus ein. Aber im vorliegenden Fall gibt es doch gerade mal zwei 
kleine Sensoren an einem I2C-Bus. Der Nachteil, dass bei den zahlreichen 
anderen Leitungen (die ja allesamt Versorgungsleitungen oder 
Ende-zu-Ende-Leitungen sind, die an fast beliebigen GPIO-Pins des ESP32 
anliegen könnten) die Darstellung dafür unübersichtlicher ist, überwiegt 
da meiner Meinung nach unter'm Strich.

von Wolfgang (Gast)


Lesenswert?

Joachim schrieb:
> Anyway, ich würde wirklich gerne verstehen, was bei der vorliegenden
> Schaltung der Vorteil davon sein soll, alle Verbindungen in Form von
> Linien einzuzeichnen, statt sinnvoll benannte Labels zu verwenden.

Der Nachteil dieser graphisch unterstützten Netzlisten ist, dass man 
sich zum Auffinden des Gegenstücks zu einem Label erstmal 
labellesenderweise durch den ganzen Schaltplan hangeln muss, weil es 
keine Linie gibt, die einen dort hin führt.

Du als Erfinder der Schaltung weisst - zumindest jetzt noch - wie alles 
zusammen gehört, ein Außenstehender erstickt im Labellesen.

Wie du selbst siehst, sind auf der andere Seite Drahtverhaue von 
Netzlinie, wie du sie bei deinem "Motor Driver" erzeugt hast, als 
"Fernverbindung" zu anderen Baugruppen auch nicht hilfreich - darum die 
Zusammenfassung zu einem Bus. Der Bus sagt wo es hin geht und die Label 
an den Buseinleitungen verraten die Details.

von Joachim (Gast)


Lesenswert?

Wolfgang schrieb:
> Joachim schrieb:
>> Anyway, ich würde wirklich gerne verstehen, was bei der vorliegenden
>> Schaltung der Vorteil davon sein soll, alle Verbindungen in Form von
>> Linien einzuzeichnen, statt sinnvoll benannte Labels zu verwenden.
>
> Der Nachteil dieser graphisch unterstützten Netzlisten ist, dass man
> sich zum Auffinden des Gegenstücks zu einem Label erstmal
> labellesenderweise durch den ganzen Schaltplan hangeln muss, weil es
> keine Linie gibt, die einen dort hin führt.

Das leuchtet mir grundsätzlich sofort ein. In vielen oder den meisten 
Schaltungen ist es offensichtlich einfacher/vorteilhafter, einfach einer 
Verbindungslinie zu folgen, statt im ganzen Schaltplan nach allen 
Vorkommen des gleichen Labels suchen zu müssen.

Aber bei vielen Mikrocontroller-Schaltplänen wie dieser hier ist die 
Lage imho etwas anders. Denn hier gibt es doch nur eine Reihe von 
modularen Sensoren/Aktoren, deren Schnittstelle eigentlich nur aus zwei 
Arten von Leitungen besteht:

- Versorgungsleitungen, bei denen ja allgemeiner Konsens zu sein 
scheint, dass da Labels/Symbole sinnvoller als Verbindungslinien sind

- Daten-/Steuer-Leitungen, an deren einem Ende der entsprechende 
Sensor-/Aktor, und an deren einzigem anderen anderem Ende ein (häufig: 
beliebiger) GPIO-Pin des immer gleichen Mikrocontrollers hängt. In der 
Praxis wird man da eh nicht lange nach Labels suchen, das gesuchte Label 
befindet sich an einem der IO-Pins des Mikrocontrollers.

Kurzum, ich sehe ein, dass Linien häufig sinnvoller sind, z.B. bei 
Bussen etc. Aber bei sternförmigen Punkt-zu-Punkt-Verbindungen von und 
zu einem zentralen Mikrocontroller erscheinen mir Labels unter'm Strich 
vorteilhafter.

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.