ESP8266 eLUA (NodeMCU) 与 MicroPython

电器工程 ESP8266 Python
2022-01-14 17:56:24

我正在寻找ESP8266 上eLUA (NodeMCU)MicroPython的公正、最新的比较。

我只能找到尝试其中一种的用户的非常肤浅的报告/博客。- 所有这些都完全缺乏技术细节。

我能找到的最接近的东西可能是MicroPython 项目的这种比较可能已经过时且难以理解。

我会对明显的问题感兴趣:

  • 闪存使用
  • 启动后 VM 的 RAM 使用情况
  • 正常使用中的 RAM 使用情况
  • 执行模型(即 ESP8266“任务”是如何映射的?)
  • 执行性能
  • 易于扩展(即模块添加)
  • 其他任何可能相关的东西

通过研究文档,我相信已经理解了以下内容:

  • NodeMCU 具有相当细粒度的构建选项,允许仅构建所需的模块。这似乎允许使用小闪存尺寸。对于 Micropython,512 KB 似乎是绝对下限,在这种情况下,用户定义的代码就没有空间了。不确定这与 NodeMCU 相比如何。
  • MicroPython 有一个默认自动配置的内置 WebREPL。NodeMCU 似乎没有内置类似的东西。
  • NodeMCU 目前似乎受益于一个更大的社区,大概是因为它存在的时间更长。
  • MicroPython 文档是非常正式的,在扩展 C 代码方面完全缺乏。NodeMCU 文档似乎很棒。
1个回答

这是一种稍微不同的方法,而不是 Lua 与 Python 的枪战:

六个最受欢迎的 ESP8266 “运行时”:

  1. AT 命令设置。当 8266 与另一个 MCU 配对时很受欢迎。通过串行端口进行通信。约 64k 的 128k RAM 可用。
  2. 微蟒。 具有用户友好 GUI 的 MicroPython 脚本解释器,可通过串行端口或 WIFI/IP 访问。约 30k 的 128k RAM 可用。
  3. Lua/NodeMCU。 具有用户友好 GUI 的 LUA 脚本解释器,可通过串行端口访问。约 40k 的 128k RAM 可用。
  4. JavaScript/Espruino。具有用户友好 GUI 的 JavaScript 解释器,可通过串行端口或 WiFi/IP 访问。约 20k 的 128k RAM 可用。
  5. C/IDE-12E。使用标准 Arduino IDE 的ESP8266 刷写工具和 C 库/工具。大约 80k 的 128k RAM 可用。
  6. C/ESP8266_SDK。 制造商提供的 C 库/工具。也是示例应用程序的集合。~512k 闪存。估计 128k RAM 中有 80k 可用。

关键的见解是大部分代码是通用的。1-5 中的主要库都源自 6。在 AT/Python/LUA/JavaScript/C 的薄层之下,主要代码实际上是相同的。这意味着性能(RAM、FLASH、执行)也相似。

既然您似乎关心速度和 RAM(闪存一般都可以),那么选项 #5 怎么样?Arduino 是一个可用的 IDE,包含大量示例。您可以在不到一个小时的时间内运行您的第一个代码,并且可能会胜过任何脚本引擎。

在没有显着的内存使用差异的情况下,我会选择 MicroPython,因为它有更多的库和一个带有 IRC 网络聊天的活跃在线社区。添加 C 模块的文档已得到改进。

选项 #6 为您提供了最大的优化潜力,但复杂性更高,学习曲线更陡峭。

最后是一个好的 ESP8266 经验法则:每个 TCP/IP 连接最多可以消耗约 3k 的内存。总是期望少于 5 个同时连接!

TL;DR: ESP8266 应用程序的大部分代码是相同的,并且性能相似。所以选择你喜欢的脚本引擎或者升级到 C/IDE-12E。不要期望超过 5 个同时 IP 连接。