电路Python

../img/CircuitPython_Repo_header_logo.png

circuitpython.cn | 获取 CircuitPython | 文档 | 贡献 | 品牌推广 | 与 Micropython 的区别 | 项目结构

CircuitPython 是初学者友好的 Python 开源版本,适用于称为微控制器的小型廉价计算机。微控制器是许多电子产品的大脑,包括用于构建业余项目和原型的各种开发板。电子学中的 CircuitPython 是学习编码的最佳方式之一,因为它将代码与现实联系起来。通常只需通过拖放将 CircuitPython 安装在受支持的 USB 板上,然后code.py 在 CIRCUITPY 驱动器上编辑文件。代码将自动重新加载。除了文本编辑器外,无需安装任何软件(我们建议初学者使用Mu。)

从 CircuitPython 7.0.0 开始,某些板可能只能通过蓝牙低功耗 (BLE) 进行连接。这些板使用开放协议通过 BLE 而不是 USB 提供串行和文件访问。(某些板可能同时使用 USB 和 BLE。)可以从各种应用程序(包括 code.circuitpython.org)访问 BLE 。

CircuitPython 具有统一的 Python 核心 API 和越来越多的 300 多个与之配合使用的设备库和驱动程序。这些库还可以通过 Adafruit Blinka 库在具有常规 Python 的单板计算机上运行。

CircuitPython 基于 MicroPython。请参阅 下面 的差异。大多数(但不是全部)CircuitPython 开发由 Adafruit赞助,可在他们的教育开发板上获得。请同时支持 MicroPython 和 Adafruit。

获取 CircuitPython

所有支持的板的官方二进制文件都可以通过 circuitpython.org/downloads 获得。该站点包括稳定、不稳定和连续的构建。完整的发行说明也可通过 GitHub 发行版 获得。

文档

指南和视频可通过 Adafruit 学习系统CircuitPython 类别下获得。 阅读文档上还提供了 API 参考。可以在 Awesome CircuitPython找到一系列很棒的资源。

开始时特别有用的文档:

贡献

有关 完整指南,请参阅 CONTRIBUTING.md ,但请注意,为该项目做出贡献即表示您同意行为准则。 欢迎遵守行为准则 的贡献者提交拉取请求,项目管理员将及时对其进行审查。请也加入 Discord

品牌推广

虽然我们很高兴看到 CircuitPython 分叉和修改,但如果分叉版本不使用名称“CircuitPython”或 Blinka 徽标,我们将不胜感激。“CircuitPython”对我们和了解它的人来说意义非凡。因此,我们希望确保引用它的产品满足一组通用要求。

如果您想在您的产品中使用术语“CircuitPython”和 Blinka,我们会问:

  • 您的产品由主要的 “adafruit/circuitpython” 存储库支持。通过这种方式,我们可以在更新 CircuitPython 内部结构时更新任何自定义代码

  • 您的产品在 circuitpython.org上列出(来源 在这里)。这是为了确保您的产品用户始终可以从标准位置下载最新版本的 CircuitPython。

  • 您的产品有一个用户可访问的 USB 插头,插入时显示为 CIRCUITPY 驱动器和/或通过低功耗蓝牙提供文件和串行访问。不支持 USB 的电路板应明确标记为 BLE-only CircuitPython。

如果您选择不满足这些要求,那么我们会要求您将您的 CircuitPython 版本称为其他名称(例如 SuperDuperPython),并且不要使用 Blinka 徽标。如果大多数 CircuitPython 驱动程序都可以使用它,您可以说它是“CircuitPython 兼容的”。


与MicroPython 的区别 MicroPython

电路Python:

  • 在大多数板上支持原生 USB,否则支持 BLE,无需特殊工具即可编辑文件。

  • 所有构建都启用了浮点数(又名小数)。

  • 错误消息被翻译成 10 多种语言。

  • Python 中的并发性没有得到很好的支持。中断和线程被禁用。async/await 关键字在某些板上可用于协作多任务处理。对于需要它的任务(例如音频文件播放),使用本机模块实现了一些并发性。

行为

  • 文件运行的顺序以及它们之间共享的状态。CircuitPython 的目标是明确每个文件的作用,并使每个文件相互独立。

    • boot.py在 USB 初始化之前启动时只运行一次。这为在启动时配置 USB 而不是固定 USB 奠定了基础。由于串行不可用,输出被写入boot_out.txt.

    • code.py (或 main.py) 在每次重新加载后运行,直到它完成或被中断。运行完成后,重新初始化虚拟机和硬件。这意味着你不能再从 code.py REPL 中读取状态,因为 REPL 是一个新的虚拟机。 CircuitPython 进行此更改的目标包括减少对正在使用的引脚和内存的混淆。

    • 主代码完成后,可以按任意键输入 REPL。

    • 自动重载状态将在重载期间保持不变。

  • 添加一个安全模式,在硬崩溃或掉电后不运行用户代码。这使得通过在崩溃后通过大容量存储提供代码来修复导致严重崩溃的代码成为可能。修复后需要重置(按钮)才能恢复正常模式。

  • RGB 状态 LED 指示 CircuitPython 状态。

  • code.py 文件系统写入 USB 大容量存储后重新运行或其他主文件。(禁用supervisor.disable_autoreload())

  • 当 REPL 处于活动状态时,自动重新加载被禁用。

  • 主要是以下之一:code.txt, code.py, main.py, main.txt

  • 启动就是其中之一boot.py, boot.txt

应用程序接口

  • 统一的硬件 API。记录在 ReadTheDocs 上

  • API 文档是 .c 文件中的 Python 存根 shared-bindings

  • 没有 machine API。

模块

  • 没有模块别名。(uosutime 不可用作 ostime 分别。)相反os, timerandom 是CPython的兼容。

  • New storage管理文件系统挂载的新模块。(来自uosMicroPython 的功能。)

  • 与 CPython 对应的模块,例如 time, osrandom,是 其 CPython 版本的严格 子集。因此,来自 CircuitPython 的代码可以在 CPython 上运行,但不一定相反。

  • 滴答计数可用作 time.monotonic()


项目结构

这是顶级源代码目录的概述。

MicroPython 的核心代码 在包括 CircuitPython 在内的端口之间共享:

  • docsphinx reStructuredText 格式的高级用户文档。

  • drivers用 Python 编写的外部设备驱动程序。

  • examples一些示例 Python 脚本。

  • extmod 在多个端口的模块中使用的共享 C 代码。

  • lib共享核心 C 代码,包括外部开发的库,如 FATFS。

  • logoCircuitPython 徽标。

  • mpy-cross在 MicroPython 中运行之前将 Python 文件转换为字节码的交叉编译器。用于减小库大小。

  • py 核心 Python 实现,包括编译器、运行时和核心库。

  • shared-bindings Python 模块的共享定义、它们的文档和支持的 C API。端口必须实现 C API 以支持相应的模块。

  • shared-modulePython 模块的共享实现可能基于common-hal.

  • tests 测试框架和测试脚本。

  • tools各种工具,包括 pyboard.py 模块。

端口

端口包括微控制器产品线独有的代码。

支持的

支持状态

atmel-samd

SAMD21 stable(稳定的) | SAMD51 stable(稳定的)

cxd56

stable(稳定的)

浓缩咖啡

stable(稳定的)

莱特克斯

alpha

mimxrt10xx

alpha

nrf

stable(稳定的)

树莓派

stable

stm

F4stable(稳定的) | others beta(测试版)

unix

alpha

  • stable 极不可能有错误或缺少功能。

  • beta 正在积极改进,但可能缺少功能并存在错误。

  • alpha 将有错误和缺失的功能。

  • 每个 port都有一个boards目录,其中包含属于特定微控制器系列的板的变体。

  • 可以在此处找到特定板支持的本机模块列表 。

回到顶部