ESP8266 eLUA (NodeMCU) vs MicroPython


14

Sto cercando un confronto imparziale e aggiornato di eLUA (NodeMCU) e MicroPython su ESP8266.

Posso trovare solo report / blog molto superficiali di utenti che provano l'uno o l'altro. - Tutto ciò privo di dettagli tecnici.

La cosa più vicina che ho potuto trovare è questo confronto probabilmente irrimediabilmente obsoleto e difficile da capire dal progetto MicroPython.

Sarei interessato alle domande ovvie:

  • utilizzo del flash
  • Utilizzo della RAM della VM dopo l'avvio
  • Utilizzo della RAM nell'uso normale
  • modello di esecuzione (ovvero come vengono mappati i "task" ESP8266?)
  • performance di esecuzione
  • facilità di estensione (ad es. aggiunta del modulo)
  • qualsiasi altra cosa che potrebbe essere rilevante

Dallo studio della documentazione credo di aver compreso quanto segue:

  • NodeMCU ha opzioni di costruzione abbastanza dettagliate che consentono di creare solo i moduli richiesti. Ciò sembra consentire di lavorare con flash di piccole dimensioni. Per Micropython 512 KB sembra essere il limite inferiore assoluto, nel qual caso non rimane spazio per il codice definito dall'utente. Non sono sicuro di come si confronta con NodeMCU.
  • MicroPython ha un WebREPL integrato configurato automaticamente per impostazione predefinita. NodeMCU sembra non avere nulla di simile incorporato.
  • NodeMCU sembra beneficiare attualmente di una comunità più ampia, presumibilmente a causa del fatto che è in circolazione da più tempo.
  • La documentazione di MicroPython è fiabesca e informale, manca del tutto quando si tratta di estendere il codice C. La documentazione di NodeMCU sembra essere eccellente.

Puoi dichiarare esattamente i tuoi DEVE AVERE requisiti e bello avere:>) per favore? Dimensione della ram, dimensione della matrice, mobile o intero, efficienza della RAM, velocità della CPU, tempi di risposta, ecc. Ecc.
Tony Stewart Sunnyskyguy EE75

Risposte:


17

Ecco un approccio leggermente diverso al posto di uno sparatutto Lua vs. Python:

Sei dei "runtime" ESP8266 più popolari:

  1. Comando AT SET. Popolare quando l'8266 è accoppiato con un altro MCU. Comunica tramite la porta seriale. ~ 64k di 128k RAM disponibili.
  2. MicroPython. Un interprete di script MicroPython con GUI intuitiva a cui è possibile accedere tramite la porta seriale o WIFI / IP. ~ 30k di 128k RAM disponibili.
  3. Lua / NodeMCU. Un interprete di script LUA con GUI intuitiva a cui è possibile accedere tramite la porta seriale. ~ 40k di 128k RAM disponibili.
  4. JavaScript / Espruino. Un interprete JavaScript con una GUI intuitiva che può essere acceduta tramite la porta seriale o WiFi / IP. ~ 20k di 128k RAM disponibili.
  5. C / IDE-12E. Strumento lampeggiante ESP8266 e librerie / strumenti C che utilizzano l'IDE Arduino standard. ~ 80k di 128k RAM disponibili.
  6. C / ESP8266_SDK. Librerie / strumenti C dal produttore. Anche una raccolta di applicazioni di esempio. ~ 512k Flash. Guesstimate 80k di 128k RAM disponibili.

L'intuizione chiave è che la maggior parte del codice è comune. Le librerie primarie in 1-5 hanno tutte origine da 6. Sotto un sottile strato di AT / Python / LUA / JavaScript / C il codice primario è praticamente identico. Ciò significa che anche le prestazioni (RAM, FLASH, esecuzione) sono simili.

Dato che sembri preoccupato per la velocità e la RAM (il flash è generalmente OK) che ne dici dell'opzione n. 5? Arduino è un IDE utilizzabile con una vasta raccolta di esempi. Potresti avere il tuo primo codice in esecuzione in meno di un'ora e probabilmente supererebbe qualsiasi motore di scripting.

In assenza di differenze significative nell'uso della memoria, sceglierei MicroPython a causa del maggior numero di librerie e di una comunità online attiva con webchat IRC. La documentazione per l'aggiunta di moduli C è migliorata.

L'opzione n. 6 offre il massimo potenziale di ottimizzazione, ma a una complessità più elevata e una curva di apprendimento più ripida.

Infine una buona regola empirica ESP8266: ogni connessione TCP / IP può consumare fino a ~ 3k di memoria. Aspettatevi sempre meno di 5 connessioni simultanee !

TL; DR: le applicazioni ESP8266 hanno la maggior parte del loro codice in comune e funzionano in modo simile. Quindi scegli il motore di script che ti piace o passa a C / IDE-12E. Non aspettarti più di 5 connessioni IP simultanee.


Rilevante: storia interessante su come Ivan Grokhotkov e la comunità ESP8266 hanno portato ESP8266 per essere programmato dall'IDE di Arduino: makezine.com/2015/04/03/…
neonzeon

Volevo solo ringraziarti per aver riassunto così. In realtà stavo cercando queste informazioni e mi hai risparmiato un sacco di tempo, oltre ad aggiungere alcune prospettive che è bello sapere ..
Scott Prive
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.