ESP8266 eLUA (NodeMCU) vs MicroPython

14

Estoy buscando una comparación imparcial y actualizada de eLUA (NodeMCU) y MicroPython en ESP8266.

Solo puedo encontrar informes / blogs muy superficiales de usuarios que prueban uno u otro. - Todo lo cual carece por completo de detalles técnicos.

Lo más cercano que pude encontrar es esta comparación probablemente desactualizada y difícil de entender por el proyecto MicroPython.

Me interesarían las preguntas obvias:

  • uso de flash
  • Uso de RAM de VM después del arranque
  • Uso de RAM en uso habitual
  • modelo de ejecución (es decir, ¿cómo se asignan las "tareas" ESP8266?)
  • rendimiento de ejecución
  • facilidad de extensión (es decir, adición de módulo)
  • cualquier otra cosa que pueda ser relevante

De estudiar la documentación creo haber entendido lo siguiente:

  • NodeMCU tiene opciones de construcción bastante finas que permiten construir solo los módulos requeridos. Esto parece permitir trabajar con pequeños tamaños de flash. Para Micropython, 512 KB parece ser el límite inferior absoluto, en cuyo caso no queda espacio para el código definido por el usuario. No estoy seguro de cómo esto se compara con NodeMCU.
  • MicroPython tiene un WebREPL incorporado que se configura automáticamente de manera predeterminada. NodeMCU parece no tener nada similar incorporado.
  • NodeMCU parece beneficiarse actualmente de una comunidad más grande, presumiblemente debido a que ha existido por más tiempo.
  • La documentación de MicroPython es informal, faltante por completo cuando se trata de extender el código C. La documentación de NodeMCU parece ser excelente.
ARF
fuente
¿Puede indicar exactamente los requisitos que DEBE TENER y es bueno tener:>) por favor? Tamaño de RAM, tamaño de matriz, flotante o entero, eficiencia de RAM, velocidad de CPU, tiempos de respuesta, etc., etc.
Tony Stewart Sunnyskyguy EE75

Respuestas:

17

Aquí hay un enfoque ligeramente diferente en lugar de un tiroteo entre Lua y Python:

Seis de los "tiempos de ejecución" ESP8266 más populares:

  1. En el comando SET. Popular cuando el 8266 se combina con otro MCU. Se comunica a través del puerto serie. ~ 64k de 128k RAM disponibles.
  2. MicroPython. Un intérprete de script de MicroPython con una GUI fácil de usar a la que se puede acceder a través del puerto serie o WIFI / IP. ~ 30k de 128k RAM disponibles.
  3. Lua / NodeMCU. Un intérprete de script LUA con una GUI fácil de usar a la que se puede acceder a través del puerto serie. ~ 40k de 128k RAM disponibles.
  4. JavaScript / Espruino. Un intérprete de JavaScript con una GUI fácil de usar que se puede acceder a través del puerto serie o WiFi / IP. ~ 20k de 128k RAM disponibles.
  5. C / IDE-12E. Herramienta de flasheo ESP8266 y bibliotecas / herramientas C usando el IDE Arduino estándar. ~ 80k de 128k RAM disponibles.
  6. C / ESP8266_SDK. C bibliotecas / herramientas del fabricante. También una colección de ejemplos de aplicaciones. ~ 512k Flash. Adivine 80k de 128k RAM disponibles.

La idea clave es que la mayor parte del código es común. Todas las bibliotecas primarias en 1-5 se originan en 6. Debajo de una capa delgada de AT / Python / LUA / JavaScript / C, el código primario es prácticamente idéntico. Eso significa que el rendimiento (RAM, FLASH, ejecución) también es similar.

Dado que parece preocupado por la velocidad y la RAM (el flash generalmente está bien), ¿qué tal la opción # 5? Arduino es un IDE utilizable con una gran colección de ejemplos. Podría tener su primer código ejecutándose en menos de una hora y probablemente superaría a cualquiera de los motores de secuencias de comandos.

En ausencia de diferencias significativas en el uso de la memoria , elegiría MicroPython debido a la mayor cantidad de bibliotecas y a una comunidad activa en línea con IRC webchat. La documentación para agregar módulos C ha mejorado.

La opción n. ° 6 le brinda el mayor potencial de optimización pero a una mayor complejidad y una curva de aprendizaje más pronunciada.

Por último, una buena regla general ESP8266: cada conexión TCP / IP puede consumir hasta ~ 3k de memoria. ¡Siempre espere menos de 5 conexiones simultáneas !

TL; DR: las aplicaciones ESP8266 tienen la mayoría de sus códigos en común y funcionan de manera similar. Así que elige el motor de script que te guste o pasa a C / IDE-12E. No esperes más de 5 conexiones IP simultáneas.

neonzeon
fuente
Relevante: Historia interesante sobre cómo Ivan Grokhotkov y la comunidad ESP8266 portaron el ESP8266 para ser programado desde el IDE de Arduino: makezine.com/2015/04/03/…
neonzeon
Solo quería decir gracias por resumir esto. En realidad estaba buscando esta información y me ahorró un montón de tiempo, además de agregar algunas perspectivas que es bueno saber ..
Scott Prive