MicroPython vs ESP8266 eLUA (NodeMCU)

14

Estou procurando uma comparação imparcial e atualizada do eLUA (NodeMCU) e MicroPython no ESP8266.

Só consigo encontrar relatórios / blogs muito superficiais de usuários testando um ou outro. - Todos com falta de detalhes técnicos.

A coisa mais próxima que pude encontrar é essa comparação provavelmente irremediavelmente desatualizada e difícil de entender pelo projeto MicroPython.

Eu estaria interessado nas perguntas óbvias:

  • uso do flash
  • Uso de RAM da VM após a inicialização
  • Uso de RAM no uso usual
  • modelo de execução (ou seja, como as "tarefas" do ESP8266 são mapeadas?)
  • desempenho de execução
  • facilidade de extensão (isto é, adição de módulo)
  • qualquer outra coisa que possa ser relevante

Ao estudar a documentação, acredito ter entendido o seguinte:

  • O NodeMCU possui opções de construção bastante refinadas que permitem a construção apenas dos módulos necessários. Isso parece permitir trabalhar com tamanhos pequenos de flash. Para o Micropython, 512 KB parece ser o limite inferior absoluto; nesse caso, não resta espaço para o código definido pelo usuário. Não tenho certeza de como isso se compara ao NodeMCU.
  • O MicroPython possui um WebREPL interno configurado automaticamente por padrão. O NodeMCU parece não ter nada semelhante embutido.
  • O NodeMCU parece se beneficiar atualmente de uma comunidade maior, presumivelmente devido ao fato de já existir há mais tempo.
  • A documentação do MicroPython é bastante informal, faltando totalmente quando se trata de estender o código C. A documentação do NodeMCU parece ser excelente.
ARF
fonte
Você pode indicar exatamente seus DEVE TER requisitos e é bom ter:>) por favor? Ram tamanho, o tamanho da matriz, flutuante ou número inteiro, a eficiência de RAM, a velocidade da CPU, os tempos de resposta, etc. etc
Tony Stewart Sunnyskyguy EE75

Respostas:

17

Aqui está uma abordagem ligeiramente diferente em vez de um tiroteio Lua vs. Python:

Seis dos "tempos de execução" ESP8266 mais populares:

  1. AT Command SET.Popular quando o 8266 está emparelhado com outro MCU. Comunica-se através da porta serial. ~ 64k de 128k RAM disponível.
  2. MicroPython. Um interpretador de script MicroPython com GUI amigável que pode ser acessado via porta serial ou WIFI / IP. ~ 30k de 128k RAM disponível.
  3. Lua / NodeMCU. Um interpretador de script LUA com GUI amigável que pode ser acessado via porta serial. ~ 40k de 128k RAM disponível.
  4. JavaScript / Espruino.Um intérprete JavaScript com GUI amigável que pode ser acessado via porta serial ou WiFi / IP. ~ 20k de 128k RAM disponível.
  5. C / IDE-12E. Ferramenta de piscamento ESP8266 e bibliotecas / ferramentas C usando o Arduino IDE padrão.~ 80k de 128k RAM disponível.
  6. C / ESP8266_SDK. Bibliotecas C / ferramentas do fabricante.Também uma coleção de aplicativos de exemplo. ~ 512k Flash. Adivinhe 80k de 128k RAM disponível.

O principal insight é que a maior parte do código é comum. Todas as bibliotecas primárias em 1-5 são originárias de 6. Abaixo de uma fina camada de AT / Python / LUA / JavaScript / C o código primário é praticamente idêntico.Isso significa que o desempenho (RAM, FLASH, execução) também é semelhante.

Como você parece preocupado com velocidade e RAM (o flash geralmente é bom), que tal a opção 5? O Arduino é um IDE utilizável com uma grande coleção de exemplos.Você pode ter seu primeiro código em execução em menos de uma hora e provavelmente superaria qualquer um dos mecanismos de script.

Na ausência de diferenças significativas no uso da memória, eu escolheria o MicroPython devido ao maior número de bibliotecas e a uma comunidade online ativa com o IRC webchat. Documentação para adicionar módulos C foi aprimorada.

A opção nº 6 fornece a você maior potencial de otimização mas com maior complexidade e curva de aprendizado mais acentuada.

Por fim, uma boa regra prática do ESP8266: Cada conexão TCP / IP pode consumir até ~ 3k de memória. Sempre espere menos de 5 simultâneos conexões !

Os aplicativos TL; DR: ESP8266 têm a maior parte de seu código em comum e apresentam desempenho semelhante. Portanto, escolha o mecanismo de script que você gosta ou avance para C / IDE-12E. Não espere mais de 5 conexões IP simultâneas.

neonzeon
fonte
Relevante: História interessante sobre como Ivan Grokhotkov e a comunidade ESP8266 portaram o ESP8266 para serem programados no Arduino IDE: makezine.com/2015/04/03/…
neonzeon
Só queria agradecer por resumir isso. Eu estava realmente procurando por esta informação e você me salvou um monte de tempo, com adição de algumas perspectivas que são bom saber ..
Scott Prive