ESP8266 eLUA (NodeMCU) vs MicroPython

14

Je recherche une comparaison impartiale et à jour de l' eLUA (NodeMCU) et MicroPython sur ESP8266.

Je ne trouve que des rapports / blogs très superficiels d'utilisateurs essayant l'un ou l'autre. - Le tout dépourvu de détails techniques.

La chose la plus proche que j'ai pu trouver est probablement cette comparaison désespérément dépassée et difficile à comprendre par le projet MicroPython.

Je serais intéressé par les questions évidentes:

  • utilisation du flash
  • Utilisation de la RAM par la VM après le démarrage
  • Utilisation de la RAM en utilisation habituelle
  • modèle d'exécution (c'est-à-dire comment les "tâches" ESP8266 sont-elles mappées?)
  • performances d'exécution
  • facilité d'extension (c'est-à-dire ajout de module)
  • tout ce qui pourrait être pertinent

En étudiant la documentation, je pense avoir compris ce qui suit:

  • NodeMCU a des options de construction assez fines qui permettent de construire uniquement les modules requis. Cela semble permettre de travailler avec de petites tailles de flash. Pour Micropython, 512 Ko semblent être la limite inférieure absolue, auquel cas il ne reste plus d'espace pour le code défini par l'utilisateur. Je ne sais pas comment cela se compare à NodeMCU.
  • MicroPython possède un WebREPL intégré qui est configuré automatiquement par défaut. NodeMCU semble n'avoir rien de similaire intégré.
  • NodeMCU semble bénéficier actuellement d'une communauté plus large, probablement parce qu'elle existe depuis plus longtemps.
  • La documentation de MicroPython est assez informelle, manquant totalement lorsqu'il s'agit d'étendre le code C. La documentation de NodeMCU semble excellente.
ARF
la source
Pouvez-vous indiquer exactement vos exigences MUST HAVE et agréables à avoir:>) s'il vous plaît? Taille RAM, taille du tableau, flottant ou entier, efficacité de la RAM, vitesse du processeur, temps de réponse, etc. etc.
Tony Stewart Sunnyskyguy EE75

Réponses:

17

Voici une approche légèrement différente à la place d'une fusillade Lua vs Python:

Six des «runtimes» ESP8266 les plus populaires:

  1. AT SET DE COMMANDES. Populaire lorsque le 8266 est associé à un autre MCU. Communique via le port série. ~ 64 Ko de RAM 128 Ko disponibles.
  2. MicroPython. Un interpréteur de scripts MicroPython avec une interface graphique conviviale accessible via le port série ou WIFI / IP. ~ 30k de 128k RAM disponibles.
  3. Lua / NodeMCU. Un interpréteur de script LUA avec une interface graphique conviviale accessible via le port série. ~ 40k de 128k RAM disponibles.
  4. JavaScript / Espruino. Un interpréteur JavaScript avec une interface utilisateur conviviale qui peut être accessible via le port série ou WiFi / IP. ~ 20k de 128k RAM disponibles.
  5. C / IDE-12E. Outil de clignotement ESP8266 et bibliothèques / outils C utilisant l'IDE Arduino standard. ~ 80k de 128k RAM disponibles.
  6. C / ESP8266_SDK. Bibliothèques / outils C du fabricant. Également une collection d'exemples d'applications. ~ 512 Ko de Flash. Guesstimate 80k de 128k RAM disponibles.

L'idée clé est que la majeure partie du code est courante. Les bibliothèques primaires en 1-5 proviennent toutes de 6. Sous une fine couche d'AT / Python / LUA / JavaScript / C, le code primaire est pratiquement identique. Cela signifie que les performances (RAM, FLASH, exécution) sont également similaires.

Puisque vous semblez préoccupé par la vitesse et la RAM (le flash est généralement OK), qu'en est-il de l'option # 5? Arduino est un IDE utilisable avec une grande collection d'exemples. Vous pourriez avoir votre premier code exécuté en moins d'une heure et surpasseriez probablement n'importe lequel des moteurs de script.

En l'absence de différences significatives d'utilisation de la mémoire, je choisirais MicroPython en raison du plus grand nombre de bibliothèques et d' une communauté en ligne active avec IRC webchat. La documentation pour l'ajout de modules C a été améliorée.

L'option n ° 6 vous offre le potentiel d'optimisation le plus élevé, mais avec une complexité plus élevée et une courbe d'apprentissage plus abrupte.

Enfin une bonne règle de base ESP8266: chaque connexion TCP / IP peut consommer jusqu'à ~ 3k de mémoire. Attendez-vous toujours à moins de 5 connexions simultanées !

TL; DR: les applications ESP8266 ont la plupart de leur code en commun et fonctionnent de manière similaire. Choisissez donc le moteur de script que vous aimez ou passez au C / IDE-12E. Ne vous attendez pas à plus de 5 connexions IP simultanées.

néonzeon
la source
Pertinent: histoire intéressante sur la façon dont Ivan Grokhotkov et la communauté ESP8266 ont porté l'ESP8266 pour qu'il soit programmé depuis l'IDE Arduino: makezine.com/2015/04/03/…
neonzeon
Je voulais juste vous remercier d'avoir résumé cela. En fait, je cherchais ces informations et vous m'avez fait gagner beaucoup de temps, et vous avez ajouté des perspectives intéressantes à savoir ..
Scott Prive