Forum: Mikrocontroller und Digitale Elektronik Frage zu ESP und Nodemcu


von Bernd B. (gorkde)


Lesenswert?

Ich hatte mal ein Projekt auf dem Esp8266 gemacht aber nachher zu wenig 
Pins.

Nun überlege ich dies weiter zu machen und es gibt ja jetzt den Esp32.

Nun werden so Nodemcu Boards angeboten und ich verstehe das nicht ganz. 
So wie ich gelesen habe, ist das eine Art Betriebssystem.

Ist Nodemcu im Flash abgelegt und ich würde das beim flashen 
überschreiben?

Hat das nur den Sinn die Eingangsspannung wegen USB zu steuern?

Kostet das Speicher den ich dann für mein Programm weniger hab?

Ich hab damalsden Esp8266 ganz normal mit der Arduino IDE programmiert, 
bei dem Nodemcu steht aber was von LUA, wovon ich keine Ahnung habe.

Aus dem was ich beim Googeln gefunden habe werde ich nicht schlau.
Kann mich bitte wer aufklären?

von Stefan F. (Gast)


Lesenswert?

Bernd B. schrieb:
> Nun werden so Nodemcu Boards angeboten und ich verstehe das nicht ganz.
> So wie ich gelesen habe, ist das eine Art Betriebssystem.

Nodemcu Board sind Boards mit ESP Chip.

Mit "Betriebssystem" meinst du wohl die NodeMCU Software. Du kannst 
diese Boards aber auch mit Arduino oder dem SDK von Espressif 
programmieren.

Letztendlich beruhen alle Varianten auf dem SDK von Espressif, deswegen 
haben sie viele gemeinsame Eigenschaften. Anders geht es auch nicht, 
denn der Firmware-Kern im SDK ist Closed-Source (wird nur als Binärdatei 
vertrieben) und auch der Chip ist nicht detailliert genug dokumentiert, 
dass dazu jemand seine eigene Firmware schreiben könnte.

> Ist Nodemcu im Flash abgelegt und ich würde das beim
> flashen überschreiben?

Korrekt. Auch deine Lua Scripte, die von der NodeMCU Firmware ausgeführt 
werden, liegen im Flash (in einem anderen Bereich mit einem Filesystem).

Wenn du da ein Arduino Programm drauf lädst, wird die ganze NodeMCU 
Software dadurch überschrieben. Und umgekehrt würde die Installation der 
NodeMCU Software dein Arduino Programm überschrieben.

> Hat das nur den Sinn die Eingangsspannung wegen USB zu steuern?

Die Frage verstehe ich nicht

> Kostet das Speicher den ich dann für mein Programm weniger hab?

Was kostet mehr Speicher? Der Firmware Kern von Espressif belegt beim 
ESP8266 ungefähr 250kB. Dazu kommt dann ggf. noch der LUA Interpreter 
von NodeMCU, sowie dein eigenes Programm und alle optionalen 
Bibliotheken, die du verwendest. Bei NodeMCU kannst du dein Paket von 
Firmware+LUA+Bibliotheken individuell zusammen stellen. Danach lädst du 
deine LUA Scripte hoch.

> Aus dem was ich beim Googeln gefunden habe werde ich
> nicht schlau. Kann mich bitte wer aufklären?

Der wesentliche Unterschied ist:

a) Arduino erzeugt Programme in Maschinensprache, die von der CPU 
ausgeführt werden. Sie können bis zu 1 Megabyte groß sein.

b) Die NodeMCU Firmware interpretiert hingegen LUA Scripte. Diese können 
beim ESP8266 nur einige zig kB groß sein, dafür kann man aber beliebig 
viele Scripte in den Flash Speicher legen, die sich gegenseitig 
aufrufen.

LUA ist logischerweise viel langsamer.

von JJ (Gast)


Lesenswert?

Du kannst dir auch mal ESP Easy anschauen, das ist ein weiteres 
Betriebssystem für verschiedene ESP Boards und reduziert die meisten 
GPIO+Wifi Aufgaben auf reine Konfigurationsarbeit.

von Bernd B. (gorkde)


Lesenswert?

Also wenn ich richtig verstanden habe kann ich mir ein nodemcu Board 
holen und ganz normal über die serielle Schnittstelle ein Arduino 
Programm drauf laden, ohne Probleme zu bekommen dass danach irgenxwas 
nicht mehr geht (Schnittstelle etc) ?

Oder muss ich wenn ich nicht Lua programmieren will boards holen die 
nicht Nodemcu drauf haben

von Stefan F. (Gast)


Lesenswert?

Bernd B. schrieb:
> kann ich mir ein nodemcu Board
> holen und ganz normal über die serielle Schnittstelle ein Arduino
> Programm drauf laden, ohne Probleme zu bekommen

Korrekt

von Bernd B. (gorkde)


Lesenswert?

Vielen Dank!

von JJ (Gast)


Lesenswert?

Korrekt,
du musst lediglich beachten, dass der seriell/USB Chip auch an den ESP 
angeschlossen ist. Das stört aber (wahrscheinlich) nicht.

von Bernd B. (gorkde)


Lesenswert?

Nee das ist ja der Vorteil weswegen ich so einen holen will. Der geht 
doch wenn ich es richtig verstanden habe auch ohne nodemcu.

von Bernd B. (gorkde)


Lesenswert?

Nochmal nur um sicher zu gehen, weil ich in Videos immer sehe die wählen 
als Board z.B. den ESP8266 Nodemcu aus, laden aber ein normales Arduino 
Programm hoch.

Was ist der Unterschied dazu wenn ich nur esp8266 auswählen würde?

Wenn ich das mit Nodemcu wähle wird Nodemcu mit hochgeladen und mein 
Arduino Code läuft über Lua?

Wenn ich das ohne wähle wird das nodemcu überschrieben und mein Arduino 
Code in Maschinencode hochgeladen?

von Stefan F. (Gast)


Lesenswert?

> Was ist der Unterschied dazu wenn ich nur esp8266 auswählen würde?

Was meinst du mit "auswählen"? Kaufen? Oder irgendeine 
Programmeinstellung?

Lies Dir erstmal das durch, dann kannst du bessere Fragen stellen: 
http://stefanfrings.de/esp8266/index.html

> Wenn ich das mit Nodemcu wähle wird Nodemcu mit hochgeladen
> und mein Arduino Code läuft über Lua?

Also falls du damit die Board-Einstellung in der Arduino IDE meinst: 
Arduino hat mit NodeMCU Software und LUA gar nichts am Hut. Hinter den 
Boards verbergen sich einfach nur sinnvolle Voreinstellungen. Wenn du 
"Generic ESP8266" einstellst, hast du mehr Einstellmöglichkeiten und 
damit auch mehr mögliche Fehler.

> Wenn ich das ohne wähle wird das nodemcu überschrieben
> und mein Arduino Code in Maschinencode hochgeladen?

Die Arduino IDE überschreibt in jedem Fall die NodeMCU Firmware, egal 
was du einstellst.

von JJ (Gast)


Lesenswert?

Die NodeMCU Hardware ist ein Board das eine Stromversorgung und eine 
seriell-via-USB Schnittstelle an ein ESP Board bringt. (Wie beim 
Arduino)

Die NodeMCu Software ist eine firmware / ein Betriebssystem für den ESP 
das es dir erlaubt LUA Scripte auf dem Ding auszuführen. (Ohne flashen)

Wenn du willst kannst du eigene Firmware flashen. Die Schnittstelle und 
die Stromversorgung bleiben dabei natürlich.

von Bernd B. (gorkde)


Lesenswert?

Ich werde immer verwirrter....
Ich hab damals denESP einzeln gehabt, Draht dran gelötet  und aufs 
Steckbrett. Dann ESP8266 im Boardmanager ausgewählt (ohne Nodemcu) . Und 
hochgeladen.


Zum Verständnis:

Nodemcu ist also im Chip statt der AT firmware die auf meinen war und 
wird nur gebraucht, wenn ich kein Programm hochladen will. Richtig 
verstanden?

Wenn ich also die Arduino IDE benutze meinen code hochladen will brauche 
ich das beides eh nicht

Es würden beide überschrieben. Dann mache ich die Wlan Geschichte uber 
die Arduino Funktionen das auch richtig?

Irgendwie muss ich oft die Grundzusammenhänge verstehen, damit es Klick 
macht.

von Stefan F. (Gast)


Lesenswert?

> Ich werde immer verwirrter....

Du verwirrst dich selbst, idem zu zu viele Fragen stellst, als es 
einfach mal auszuprobieren. Bei dem Preis kann doch gar nichts falsch 
machen. Ein guter Kaffee ist mancherorts schon teurer.

NodeMCU ist ein Programmpaket, basierend auf der Firmware von Espressif, 
welche LUA Script ausführt, die ebenfalls im Flash Speicher liegen.

NodeMCU ist aber auch Sammelbegriff für eine Reihe von Boards mit 
ESP8266 Chips.

Die AT Firmware ist ein Beispielprogramm von Espressif. Auf NodeMCU 
Boards ist meistens die NodeMCU Software vorinstalliert. Auf anderen 
ESP8266 Boards ist meistens die AT Firmware vorinstalliert. Verlassen 
kann man sich darauf allerdings nicht.

> Wenn ich also die Arduino IDE benutze meinen code
> hochladen will brauche ich das beides eh nicht

Ja

> Dann mache ich die Wlan Geschichte uber
> die Arduino Funktionen das auch richtig?

Die "WLAN Geschichte" wird von der Firmware des Chipherstellers 
gesteuert, also genau dem Teil, denn du nicht umprogrammieren kannst. 
Diese Firmware ist Bestandteil von allen anderen Programmen, also auch:

 * Der AT Firmware
 * Alle Arduino Programme, die mit dem ESP8666 Core compiliert wurden
 * NodeMCU Software
 * ESP Easy
 * Programme die du mit dem Espressif SDK erstellst (egal welches)
 * ...

Du kannst den Chip unmöglich ohne die Firmware von Espressif benutzen. 
Alle anderen Entwicklungsumgebungen bauen darauf auf. Sie erzeugen 
Programme, welche den Code von Espressif enthalten. Das sind 250 
Kilobytes, die schon für einen simplen LED Blinker drauf gehen.

> Irgendwie muss ich oft die Grundzusammenhänge verstehen,
> damit es Klick macht.

Lies meine Webseite, da steht alles, was du wissen willst.

von Bernd B. (gorkde)


Lesenswert?

Ok, dann hab ich es denke ich verstanden. Also brauche ich nodemcu z.B. 
nur wenn ich den Chip als Wlan sender an meinem Arduino nutze statt ihn 
selbst einzeln.
Dass die Boards auch so genannt werden hat mich verwirrt.
Testen kann ich nicht, weil ich ja gerade erst bestellen will und das 
vorher abklären wollte um nicht falsch zu bestellen.
Die Seite lese ich nachher durch wenn ich zuhause bin.

Das einzige was mir jetzt noch nicht klar ist warum gibt es dann genau 
den ESP8266 als auch den mit Nodemcu im Boardverwalter?
Wenn ich den mit Nodemcu verwende bleibt es drauf und der Rest wird 
dazugeschrieben?
Weil elektronisch unterscheiden sich die Boards dann ja nicht.

Was genau wird da denn unterschiedlich gemacht?

von Stefan F. (Gast)


Lesenswert?

Bernd B. schrieb:
> Also brauche ich nodemcu z.B.
> nur wenn ich den Chip als Wlan sender an meinem Arduino nutze statt ihn
> selbst einzeln.

Äh nein.

Die NodeMCU Software ist eine Alternative zu Arduino ist eine 
Alternative zum Espressif SDK. Alle drei sind für Leute gedacht, die den 
Chip programmieren möchten.

Wer den Chip nur als Netzwerk-Interface benutzen möchte, verwendet die 
AT-Firmware (oder etwas selbst gestricktes). Wer den Chip als 
remote-Station für gängige Sensoren und Aktuatoren nutzen möchte, die 
von einem zentralen PC aus dirigiert werden, der nimmt ESP Easy (oder 
etwas selbst gestricktes).

AT-Firmware und ESP-Easy sind vollständige Programme, fix und fertig zur 
direkten Ausführung.

NodeMCU, Arduino und Espressif SDK sind Grundlagen für das Erstellen 
eigener Programme.

von Bernd B. (gorkde)


Lesenswert?

Ok, aber wo liegt jetzt der Unterschied zwischen den beiden auswahlen um 
Boardverwalter?

von Stefan F. (Gast)


Angehängte Dateien:

Lesenswert?

Bernd B. schrieb:
> Ok, aber wo liegt jetzt der Unterschied zwischen den beiden auswahlen um
> Boardverwalter?

In den Einstellbaren Parametern. Die meisten werden unten in der 
Statuszeile angezeigt. Du kannst auch in die entsprechende 
Konfigurationsdatei schauen:
Bei mir liegen die Datei in 
/opt/arduiono-1.8.7/portable/packages/esp8266/hardware/esp8266/2.3.0/boa 
rds.txt

von Bernd B. (gorkde)


Lesenswert?

Vielen Dank für die Erklärungen!

von Bernd B. (gorkde)


Lesenswert?

Also ich wollte jetzt mal gucken, hab die Boards beide installiert, 
werden auch angezeigt, aber in der Boards.txt ist nichts drin, das ist 
noch die alte von früher wie es scheint.

Kann es sein, dass das jetzt woanders abgelegt wird????

Und nur, da ich gerade woanders angemotzt wurde ich solle suchen....
Bei mir gibts nur eine einzige Boards.txt Datei im Arduino Ordner, hab 
Windows suchen lassen. Und das ist die uralte.

: Bearbeitet durch User
von Bernd B. (gorkde)


Lesenswert?

Habs gefunden, die haben getrennte Boards.txt die woanders lagen

von Timo N. (tnn85)


Lesenswert?

Bernd B. schrieb:
> Habs gefunden, die haben getrennte Boards.txt die woanders lagen

Hallo Bernd,

was dir Stefanus F. in mehreren Beiträgen durch die Blume sagen will:
Lies dir erst mal seine Webseite durch. Da hat der sich nämlich richtig 
viel Mühe gemacht alles zum Thema ESP8266 auf einer Seite 
zusammenzuschreiben und für Anfänger gut zu beschreiben. Ich hab 
nirgends im deutschsprachigen Bereich eine bessere Doku gesehen.

Er listet dort unter anderem auf welche Platinen es gibt, auf denen der 
ESP8266 Mikrocontroller verbaut ist und welche Pinbelegung diese haben 
bzw. worin sich diese Platinen unterscheiden.
Außerdem wird auch erklärt wie man den ESP8266 mit der Arduino IDE 
programmieren kann bzw. was diese AT Firmware von Espresif (Hersteller 
des ESP8266) oder LUA kann und worin die Vorteile/Nachteile der 
verschiedenen Formen der Programmierung liegen.

Ich denke bevor du noch eine Frage hier stellst, wäre es fair von dir 
die Seite von ihm mal komplett durchzulesen. Damit kommst du recht weit.

@Stefanus: Hat sich an deiner Aussage auf der Webseite (Herbst 2018) zum 
ESP32 schon was geändert?

von Stefan F. (Gast)


Lesenswert?

Timo N. schrieb:
> Hat sich an deiner Aussage auf der Webseite (Herbst 2018) zum
> ESP32 schon was geändert?

Ich habe mich seit dem nicht weiter mit dem ESP32 beschäftigt. Den 
aktuellen Stand kenne ich nicht.

Daran wird sich wahrscheinlich auch nichts mehr ändern, denn ich besitze 
immer noch einen üppigen Vorrat an ESP8266 Modulen. Ich hatte eigentlich 
vor, das ganze Haus damit zu vernetzen, bin dann aber rechtzeitig doch 
noch vernünftig geworden.

von Gnorm (Gast)


Lesenswert?

Aber anscheinend nicht rechtzeitig genug...

von Michael U. (amiga)


Lesenswert?

Hallo,

Bernd B. schrieb:
> Habs gefunden, die haben getrennte Boards.txt die woanders lagen

meine Sicht zu den diversen ESP8266-Varianten und Boards:
ich programmiere die immer mit eigeneer Software aus der ArduinoIDE. Mir 
ist also völlig egal, ob da im Lieferzustand LUA oder die AT-Software 
drauf ist, wird ja ohnehin überschrieben.

Es ist prinzipiell egal, ob man Generic ESP8266 oder einen direkten 
Modultyp auswählt.
Wenn man Generic benutzt, muß man natürlich wissen, was man da auf dem 
Board hat, also Flashgröße und Programmiermode richtig auswählen.
Bei falscher Einstellung geht nichts kaputt, aber man bekommt Probleme 
beim Flashen oder im Betrieb. Die voreingestellten Werte für CPU-Freq., 
Flashtakt usw. passen in wohl 95% für alle ESP-Module.
Upload Speed wird bei mir generell auf 921600 gesetzt, machen alle 
CH34x, FTDI, CP210x USB-Chips mit und spart Zeit.

Eigentliches Problem: die diversen Boardhersteller bei den ESP-Modulen 
sind sehr kreativ, was die Pinbezeichnungen angeht, die auf die Boards 
gedruckt werden. Wenn man im Sketch z.B. die Bezeichnungen der NodeMCU 
nutzen will (D1, D2 usw.) sollte man das passende Board einstellen, weil 
dann dann die #defines für die IDE passend gesetzt werden.
Da ich generell die GPIO-Nummern nutze, ist mir das auch egal, muß eben 
ein Bild es jeweiligen Boards oder eine Referenzliste parat liegen.

ESP32: das IDF und die Arduino-Version 1.0.2 halte ich für recht stabil 
und nutzbar. Problem ist, daß der ESP32 zuvile kann und etliches noch 
nicht sauber in die ArduinoIDE eingebaut ist, auch die Beispiele im IDF 
sind teilweise noch unvollständig. Speziell betrifft das BT und die 
Threadzuordnungen für die Cores im RTOS, aber auch so muß man manchmal 
auf direkte IDF-Funktionen zurückgreifen.
Ansonsten gilt das Gleiche: man kann alles mit ESP32 Dev Modul 
programmieren, da aber noch mehr Boardversionen existieren (Flashgröße, 
PSRAM usw.) muß man eben wissen, was man da gefauft hat.

Gruß aus Berlin
Michael

von bingo (Gast)


Lesenswert?

Vielleicht noch eine Ergänzung dazu: es gibt seit einiger Zeit auch 
MicroPython für ESP8266 und ESP32. Python ist eine einfach zu erlernende 
Sprache, wenn man keine grossen Ansprüche an Geschwindigkeit stellt.

von Einer K. (Gast)


Lesenswert?

Bernd B. schrieb:
> Bei mir gibts nur eine einzige Boards.txt Datei im Arduino Ordner, hab
> Windows suchen lassen. Und das ist die uralte.
Wer in der falschen Ecke sucht, findet auch nur das falsche, wenn 
überhaupt.
Das ist der "Beobachter Selektionseffekt"

In dem Fall ist es auch egal, in wie vielen Foren man fragt.
Es ist eher ein Problem der inneren Justage.



Arduino zeigt übrigens beim kompilieren genau an, welche Hardware 
Definition es verwendet.
Man muss der IDE nur die Chance dazu geben.
Die ausführliche Ausgabe aktivieren.



Lesenswert, für alle, welche sich mit den Arduino Hardware Definitionen 
beschäftigen (wollen/müssen):
https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5-3rd-party-Hardware-specification
Das dort vermittelte Wissen ermöglicht einige interessante Tänze.

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.