19 votos

ESP8266 eLUA (NodeMCU) vs MicroPython

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

Sólo encuentro informes/blogs muy superficiales de usuarios que prueban uno u otro. - Todos ellos carecen por completo de detalles técnicos.

Lo más parecido que he encontrado es esta comparación probablemente irremediablemente anticuada y difícil de entender por el proyecto MicroPython.

Me interesan las preguntas obvias:

  • uso de flash
  • Uso de RAM de la máquina virtual tras el arranque
  • Uso habitual de RAM
  • modelo de ejecución (es decir, ¿cómo se asignan las "tareas" del ESP8266?)
  • rendimiento de ejecución
  • facilidad de ampliación (es decir, adición de módulos)
  • cualquier otra cosa que pueda ser relevante

Del estudio de la documentación creo haber entendido lo siguiente:

  • NodeMCU tiene opciones de construcción bastante precisas que permiten construir sólo los módulos necesarios. Esto parece permitir trabajar con tamaños de flash pequeños. 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 se compara esto con NodeMCU.
  • MicroPython tiene un WebREPL incorporado que está auto-configurado por defecto. NodeMCU parece no tener nada similar incorporado.
  • NodeMCU parece beneficiarse actualmente de una comunidad más amplia, presumiblemente debido a que lleva más tiempo funcionando.
  • La documentación de MicroPython es bastante informal, faltando por completo cuando se trata de extender el código C. La documentación de NodeMCU parece ser excelente.

23voto

user64099 Puntos 21

He aquí un enfoque ligeramente diferente en lugar de un tiroteo Lua vs Python:

Seis de los "runtimes" ESP8266 más populares:

  1. Comando AT SET. Popular cuando el 8266 está emparejado con otra MCU. Se comunica a través del puerto serie. ~64k de 128k de RAM disponible.
  2. MicroPython. Un script MicroPython con interfaz gráfica de usuario amigable que se puede acceder a través de la serie serie o WIFI/IP. ~30k de 128k RAM disponible.
  3. Lua/NodeMCU. Un intérprete de scripts LUA con interfaz gráfica de usuario amigable que se puede acceder a través del puerto serie. ~40k de 128k de RAM disponible.
  4. JavaScript/Espruino. Un intérprete de JavaScript fácil de usar GUI que se puede acceder a través del puerto serie o WiFi / IP. ~20k de 128k RAM disponible.
  5. C/IDE-12E. ESP8266 herramienta de flasheo y C bibliotecas/herramientas utilizando el IDE estándar de Arduino. ~80k de 128k de RAM disponibles.
  6. C/ESP8266_SDK. Bibliotecas/herramientas C del fabricante. También una colección de aplicaciones de ejemplo. ~512k Flash. Estimación 80k de 128k RAM disponible.

La idea clave es que el La mayor parte del código es común. Todas las bibliotecas principales de 1-5 proceden de 6. Bajo una fina capa 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.

Ya que pareces preocupado por la velocidad y la RAM (la flash suele estar bien), ¿qué te parece la opción nº 5? Arduino es un IDE utilizable con una gran colección de ejemplos. Podrías tener tu primer código funcionando en menos de una hora y probablemente superaría a cualquiera de los motores de scripting.

En ausencia de diferencias significativas en el uso de la memoria Elegiría MicroPython debido al mayor número de bibliotecas y una activa comunidad en línea con webchat IRC. Documentación para añadir módulos C ha mejorado.

La opción nº 6 le ofrece mayor potencial de optimización pero con una mayor complejidad y una curva de aprendizaje más pronunciada.

Por último una buena regla de ESP8266: Cada conexión TCP/IP puede consumir hasta ~3k de memoria. Espere siempre menos del 5 simultánea ¡Conexiones!

TL;DR: Las aplicaciones ESP8266 tienen la mayor parte de su código en común y funcionan de forma similar. Así que elija el motor de script que le guste o paso a C/IDE-12E. No esperes más de 5 conexiones IP simultáneas.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X