ESP8266 eLUA (NodeMCU) vs MicroPython

14

Ich suche nach einem unvoreingenommenen, aktuellen Vergleich von eLUA (NodeMCU) und MicroPython auf ESP8266.

Ich kann nur sehr oberflächliche Berichte / Blogs von Benutzern finden, die das eine oder andere ausprobieren. - Allesamt ohne technische Details.

Das Nächste, was ich finden konnte, ist der wahrscheinlich hoffnungslos veraltete und schwer zu verstehende Vergleich durch das MicroPython-Projekt.

Ich würde mich für die offensichtlichen Fragen interessieren:

  • Flash-Nutzung
  • RAM-Auslastung der VM nach dem Booten
  • RAM-Nutzung bei normaler Nutzung
  • Ausführungsmodell (dh wie werden die "Aufgaben" des ESP8266 abgebildet?)
  • Ausführungsleistung
  • einfache Erweiterung (dh Hinzufügen von Modulen)
  • alles andere, was relevant sein könnte

Nach dem Studium der Dokumentation habe ich meines Erachtens Folgendes verstanden:

  • NodeMCU verfügt über ziemlich detaillierte Erstellungsoptionen, mit denen nur die erforderlichen Module erstellt werden können. Dies scheint das Arbeiten mit kleinen Blitzgrößen zu ermöglichen. Für Micropython scheint 512 KB die absolute Untergrenze zu sein. In diesem Fall bleibt kein Platz für benutzerdefinierten Code. Nicht sicher, wie dies mit NodeMCU verglichen wird.
  • MicroPython verfügt über einen integrierten WebREPL, der standardmäßig automatisch konfiguriert wird. NodeMCU scheint nichts Vergleichbares eingebaut zu haben.
  • NodeMCU scheint derzeit von einer größeren Community zu profitieren, vermutlich weil es schon länger existiert.
  • Die MicroPython-Dokumentation ist recht informell, was die Erweiterung des C-Codes betrifft. Die NodeMCU-Dokumentation scheint ausgezeichnet zu sein.
ARF
quelle
Kannst du genau deine MUSS-ANFORDERUNGEN angeben und nett zu haben:>) bitte? RAM-Größe, Array-Größe, Floating oder Integer, RAM-Effizienz, CPU-Geschwindigkeit, Reaktionszeiten usw. usw.
Tony Stewart Sunnyskyguy EE75

Antworten:

17

Hier ist ein etwas anderer Ansatz anstelle eines Lua vs. Python Shootouts:

Sechs der beliebtesten ESP8266 "Runtimes":

  1. AT Command SET.Beliebt, wenn der 8266 mit einer anderen MCU gekoppelt ist. Kommuniziert über die serielle Schnittstelle. ~ 64k 128k RAM verfügbar.
  2. MicroPython. Ein MicroPython-Skriptinterpreter mit benutzerfreundlicher Benutzeroberfläche, auf den über die serielle Schnittstelle oder über WIFI / IP zugegriffen werden kann. ~ 30k 128k RAM verfügbar.
  3. Lua / NodeMCU. Ein LUA-Skriptinterpreter mit benutzerfreundlicher Benutzeroberfläche, auf den über die serielle Schnittstelle zugegriffen werden kann. ~ 40k 128k RAM verfügbar.
  4. JavaScript / Espruino.Ein JavaScript-Interpreter mit benutzerfreundlicher Benutzeroberfläche, der über die serielle Schnittstelle oder WiFi / IP erreichbar ist. ~ 20.000 von 128.000 RAM verfügbar.
  5. C / IDE-12E. ESP8266-Flashing-Tool & C-Bibliotheken / Tools mit der Standard-Arduino-IDE.~ 80.000 von 128.000 RAM verfügbar.
  6. C / ESP8266_SDK. C Bibliotheken / Tools vom Hersteller. Auch eine Sammlung von Beispielanwendungen. ~ 512k Flash. Guesstimate 80k von 128k RAM zur Verfügung.

Die wichtigste Erkenntnis ist, dass der Großteil des Codes gemeinsam ist. Die Primärbibliotheken in 1-5 stammen alle aus 6. Unter einer dünnen Schicht aus AT / Python / LUA / JavaScript / C ist der Primärcode praktisch identisch. Das bedeutet, dass die Leistung (RAM, FLASH, Ausführung) ebenfalls ähnlich ist.

Da Sie sich Gedanken über Geschwindigkeit und RAM machen (Flash ist im Allgemeinen in Ordnung), wie wäre es mit Option 5? Arduino ist eine verwendbare IDE mit einer großen Sammlung von Beispielen. Möglicherweise wird Ihr erster Code in weniger als einer Stunde ausgeführt und übertrifft wahrscheinlich alle Skriptmodule.

Da es keine signifikanten Unterschiede bei der Speichernutzung gibt, würde ich MicroPython aufgrund der größeren Anzahl an Bibliotheken und einer aktiven Online-Community mit IRC-Webchat wählen. Die Dokumentation zum Hinzufügen von C-Modulen wurde verbessert.

Option 6 bietet Ihnen das höchste Optimierungspotential, jedoch bei höherer Komplexität und steilerer Lernkurve.

Zuletzt eine gute Faustregel für ESP8266: Jede TCP / IP-Verbindung kann bis zu ~ 3k Speicher belegen. Erwarten Sie immer weniger als 5 gleichzeitige Verbindungen!

TL; DR: ESP8266-Anwendungen haben den größten Teil ihres Codes gemeinsam und verhalten sich ähnlich. Wählen Sie also die Skript-Engine, die Ihnen gefällt, oder greifen Sie auf C / IDE-12E zu. Erwarten Sie nicht mehr als 5 gleichzeitige IP-Verbindungen.

Neonzeon
quelle
Relevant: Interessante Geschichte darüber, wie Ivan Grokhotkov und die ESP8266-Community den von der Arduino IDE zu programmierenden ESP8266 portierten: makezine.com/2015/04/03/…
neonzeon
Ich wollte mich nur für die Zusammenfassung bedanken. Ich habe tatsächlich nach diesen Informationen gesucht und Sie haben mir eine Menge Zeit gespart und einige Perspektiven hinzugefügt, die gut zu wissen sind.
Scott Prive