ESP8266 eLUA (NodeMCU) vs MicroPython

14

Szukam obiektywnego, aktualnego porównania eLUA (NodeMCU) i MicroPython na ESP8266.

Mogę znaleźć tylko bardzo powierzchowne raporty / blogi użytkowników próbujących jednego lub drugiego. - W których brakuje całkowicie szczegółów technicznych.

Najbliższe, co mogłem znaleźć, to prawdopodobnie beznadziejnie przestarzałe i trudne do zrozumienia porównanie w projekcie MicroPython.

Byłbym zainteresowany oczywistymi pytaniami:

  • użycie lampy błyskowej
  • Wykorzystanie pamięci RAM przez VM po uruchomieniu
  • Wykorzystanie pamięci RAM w zwykłym użyciu
  • model wykonania (tj. w jaki sposób mapowane są „zadania” ESP8266?)
  • wydajność wykonania
  • łatwość rozbudowy (tj. dodanie modułu)
  • wszystko inne, co może być istotne

Uważam, że po przestudiowaniu dokumentacji zrozumiałem następujące kwestie:

  • NodeMCU ma dość drobnoziarniste opcje kompilacji, które pozwalają budować tylko wymagane moduły. Wydaje się, że pozwala to na pracę z małymi rozmiarami lampy błyskowej. W przypadku Micropython 512 KB wydaje się być absolutnym dolnym limitem, w którym to przypadku nie ma miejsca na kod zdefiniowany przez użytkownika. Nie jestem pewien, jak to się ma do NodeMCU.
  • MicroPython ma wbudowaną funkcję WebREPL, która jest domyślnie automatycznie konfigurowana. Wydaje się, że NodeMCU nie ma podobnego wbudowanego.
  • Wydaje się, że NodeMCU korzysta obecnie z większej społeczności, prawdopodobnie ze względu na dłuższy okres.
  • Dokumentacja MicroPython jest dość nieformalna, brakuje jej całkowicie, jeśli chodzi o rozszerzenie kodu C. Dokumentacja NodeMCU wydaje się być doskonała.
ARF
źródło
Czy możesz podać dokładnie swoje MUSI MIEĆ wymagania i miło mieć:>) proszę? Rozmiar pamięci RAM, rozmiar tablicy, liczba zmiennoprzecinkowa lub liczba całkowita, wydajność pamięci RAM, szybkość procesora, czasy odpowiedzi itp. Itd.
Tony Stewart Sunnyskyguy EE75

Odpowiedzi:

17

Oto nieco inne podejście zamiast strzelaniny Lua vs. Python:

Sześć najpopularniejszych „środowisk uruchomieniowych” ESP8266:

  1. AT SET SET. Popularny, gdy 8266 jest sparowany z innym MCU. Komunikuje się przez port szeregowy. Dostępnych jest ~ 64 tys. 128k RAM.
  2. MicroPython. Interpretator skryptów MicroPython z przyjaznym interfejsem GUI, do którego można uzyskać dostęp przez port szeregowy lub WIFI / IP. Dostępnych jest ~ 30 000 128 KB pamięci RAM.
  3. Lua / NodeMCU. Interpreter skryptów LUA z przyjaznym dla użytkownika graficznym interfejsem użytkownika, do którego można uzyskać dostęp przez port szeregowy. Dostępnych jest ~ 40 tys. 128k RAM.
  4. JavaScript / Espruino. Tłumacz języka JavaScript z przyjaznym dla użytkownika graficznym interfejsem użytkownika, do którego można uzyskać dostęp poprzez port szeregowy lub WiFi / IP. Dostępnych jest około 20 tys.
  5. C / IDE-12E. Narzędzie flashujące ESP8266 oraz biblioteki / narzędzia C korzystające ze standardowego Arduino IDE. Dostępnych jest ~ 80 tys. 128k RAM.
  6. C / ESP8266_SDK. Biblioteki C / narzędzia od producenta. Również zbiór przykładowych aplikacji. ~ 512k Flash. Dostępny Guesstimate 80k 128k RAM.

Kluczową sprawą jest to, że większość kodu jest wspólna. Wszystkie biblioteki podstawowe w 1-5 pochodzą z 6. Pod cienką warstwą AT / Python / LUA / JavaScript / C kod podstawowy jest praktycznie identyczny. Oznacza to, że wydajność (RAM, FLASH, wykonanie) jest również podobna.

Ponieważ wydajesz się martwić szybkością i pamięcią RAM (flash jest ogólnie OK), co powiesz na opcję nr 5? Arduino to użyteczne IDE z dużą kolekcją przykładów. Możesz uruchomić swój pierwszy kod w niecałą godzinę i prawdopodobnie przewyższy on którykolwiek z silników skryptowych.

Z powodu braku znaczących różnic w użyciu pamięci wybrałbym MicroPython ze względu na większą liczbę bibliotek i aktywną społeczność online z czatem IRC. Udoskonalono dokumentację dodawania modułów C.

Opcja nr 6 zapewnia najwyższy potencjał optymalizacji, ale przy większej złożoności i bardziej stromej krzywej uczenia się.

Wreszcie dobra zasada ESP8266: Każde połączenie TCP / IP może zużywać do ~ 3k pamięci. Zawsze oczekuj mniej niż 5 jednoczesnych połączeń!

TL; DR: Aplikacje ESP8266 mają większość wspólnego kodu i działają podobnie. Wybierz silnik skryptowy, który Ci się podoba lub przejdź do C / IDE-12E. Nie oczekuj więcej niż 5 jednoczesnych połączeń IP.

neonzeon
źródło
Odpowiedni: Interesująca historia o tym, jak Ivan Grokhotkov i społeczność ESP8266 przetransportowali ESP8266 do programowania z Arduino IDE: makezine.com/2015/04/03/…
neonzeon
Chciałem tylko podziękować za podsumowanie tego. Tak naprawdę szukałem tych informacji, a ty zaoszczędziłeś mi sporo czasu, a także dodałeś kilka perspektyw, które warto wiedzieć ...
Scott Prive