CircuitPython 和 MicroPython 的区别【CircuitPython】

1,490 阅读4分钟

image.png

首先 CircuitPython 是从 MicroPython 衍化 (Fork) 来的,所以 CircuitPython 的很多内容和 MicroPython 是相似的。然而 CircuitPython 的侧重点是教育和 DIY,特别是教育,这是产生差异的主要原因。

b站说

  • 最直观的差异就是 CircuitPython 会把单片机当作一个优盘,链接电脑后使用电脑操作系统自带的文件管理器和文本编辑器就可以开发。(当然我的话会推荐使用我写的网页版开发环境,免安装的,请看上一个视频)。MicroPython 的话一般还是要安装 thonny 之类的 IDE 来管理单片机上的文件。这个差别虽小,但对教育领域特别是远程教育特别重要。
  • CircuitPython 将很多东西做了简化,比如 REPL 里只有 Ctrl-C 和 Ctrl-D 两个操作,而 MicroPython 有5个;CircuitPython 里面默认保存即触发运行;另外 CircuitPython 还砍掉了 MicroPython 中的中断功能,只保留了异步。
  • CircuitPython 强调代码的通用性,只要硬件支持,力求 A 芯片上的代码在不经任何修改的前提下就可以在 B 芯片上运行。MicroPython 则有 import esp,import pyb 这样的操作。
  • Adafruit 对 CircuitPython 的推动力很大,几乎所有资源都由 Adafruit 整合汇总,比较好找。MicroPython 的话很多资源需要自己找。这包括库、教程、档案、源码等。
  • MicroPython 的社区更大,在 Guthub 上项目数大约 6k 而 CircuitPython 约有 1k。
  • 芯片的支持以前有较大差别,不过最近 MicroPython 也加入了 SAMD21 和 SAMD51 的支持,这个差距有所减小。在 MicroPython 支持的芯片里面,CircuitPython 不支持 ESP8266,ESP32 系列仅支持 ESP32-S2。

老外说

它们都是基于流行的Python编程语言,并增加了对硬件的支持,Circuit Python和Micro Python基本相同,关键的区别是Circuit Python是由Adafruit制作的,用于支持Adafruit品牌的板子,那些专门为教育工作者和初学者制作的板子,而Micro Python是一个更广泛的类别。所以,Circuit Python是基于Micro Python的,所以每当Micro Python在更新时,也会在Circuit Python中推出,Circuit Python的不同之处在于,就像我说的,Adafruit支持Adafruit的板子,他们做了一些改变,只是为了让学习的人更容易理解他们的板子和代码中发生了什么,让故障排除更容易。

Circuit Python的第一个不同之处是你的代码在微控制器上的表现。所以,其中一个区别是,当你把文件放到你的微控制器上时,文件的运行顺序以及它们是否共享任何国家。在Micro Python中,你可以让不同的文件在同一时间运行,并共享相同的状态。而在Circuit Python中,没有共享状态,所以当一个东西在运行时,它是唯一在运行的东西,这可以使新来的人在出错时更容易理解正在发生什么。

启动文件,如 boot.py 或 settings.py,在 USB 被初始化之前,只在 Circuit Python 中运行一次,然后就不再运行了。

Code.py,所以你在Circuit Python中的主要代码在每次重载后都会运行,直到它完成,如果你想进入副本,你不能同时运行code.py,所以它会停止你的主要代码并进入副本。所以,它们之间没有共享状态,这对高端用户来说有一点功能上的损失,但对大多数用户来说,没有重叠是好的,所以可以有点清楚地知道正在发生什么。

Circuit Python改变的另一件好事是,他们已经在api上创建了统一的硬件。所以,当你想在你的电路板上使用硬件时,你需要包括库来实现,而Circuit Python的api's是非常简洁的,所以如果你想使用音频,它是audioIO,如果你想使用模拟,它是analogIO,它真的使利用实际的硬件部件变得简单,而不需要拉入一堆库或使用一堆不同的命令。

Circuit Pythons中的模块也有一些变化,所以有很多稍微不同的时间模块。所以,如果你正在做一些涉及到时间的事情,并且你要从Micro Python转向Circuit Python,那么只要注意看一下,并确定是否有任何影响你的代码的变化,如果你是第一次使用这两种语言,那么没有什么不同,你需要担心是否要在这两种语言中选择一种。

因此,这些包装了我认为普通用户在使用 Circuit Python 或 Micro Python 时会真正遇到的差异。如果你想学习如何使用Circuit Python,你想学习如何用它来编程,我们在教程部分有很多关于如何用Circuit Python为Adafruit Circuit playground Express编程的教程。