ESP8266 eLUA (NodeMCU) vs MicroPython

12

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 prueben uno u otro. - Todo lo cual carece completamente de detalles técnicos.

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

Me interesarían las preguntas obvias:

  • uso de flash
  • Uso de RAM de la 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

Al estudiar la documentación, creo haber comprendido lo siguiente:

  • NodeMCU tiene opciones de compilación bastante precisas que permiten construir solo los módulos necesarios. 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 se compara esto con NodeMCU.
  • MicroPython tiene un WebREPL incorporado que se configura automáticamente de forma predeterminada. NodeMCU parece no tener nada similar incorporado.
  • NodeMCU parece beneficiarse actualmente de una comunidad más grande, probablemente debido a que ha existido por más tiempo.
  • La documentación de MicroPython es bastante informal, y carece por completo de la extensión del código C. La documentación de NodeMCU parece ser excelente.
pregunta ARF

1 respuesta

14

Este es un enfoque ligeramente diferente en lugar de un tiroteo de Lua contra Python:

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

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

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

Ya que parece preocupado por la velocidad y la memoria RAM (el flash generalmente está bien) ¿qué le parece la opción # 5? Arduino es un IDE utilizable con una gran colección de ejemplos. Puede 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 al mayor número de bibliotecas y una comunidad activa en línea con IRC webchat. Documentación para agregar módulos C ha mejorado .

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

Por último, una buena regla de oro de 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 su código en común y tienen un desempeño similar. Así que elija el motor de secuencia de comandos que desee o paso a C / IDE-12E. No espere más de 5 conexiones IP simultáneas.

    
respondido por el neonzeon

Lea otras preguntas en las etiquetas