电路Python¶
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找到一系列很棒的资源。
开始时特别有用的文档:
代码搜索¶
GitHub 目前不支持在 fork 上进行代码搜索。因此,CircuitPython 没有通过 GitHub 进行代码搜索,因为它是 MicroPython 的一个分支。幸运的是,SourceGraph可以免费搜索诸如 CircuitPython 之类的公共存储库。因此,请访问sourcegraph.com/github.com/adafruit/circuitpython在线搜索 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。
模块¶
没有模块别名。(
uos
和utime
不可用作os
和time
分别。)相反os
,time
和random
是CPython的兼容。New
storage
管理文件系统挂载的新模块。(来自uos
MicroPython 的功能。)与 CPython 对应的模块,例如
time
,os
和random
,是 其 CPython 版本的严格 子集。因此,来自 CircuitPython 的代码可以在 CPython 上运行,但不一定相反。滴答计数可用作 time.monotonic()
项目结构¶
这是顶级源代码目录的概述。
核¶
MicroPython 的核心代码 在包括 CircuitPython 在内的端口之间共享:
docs
phinx reStructuredText 格式的高级用户文档。drivers
用 Python 编写的外部设备驱动程序。examples
一些示例 Python 脚本。extmod
在多个端口的模块中使用的共享 C 代码。lib
共享核心 C 代码,包括外部开发的库,如 FATFS。logo
CircuitPython 徽标。mpy-cross
在 MicroPython 中运行之前将 Python 文件转换为字节码的交叉编译器。用于减小库大小。py
核心 Python 实现,包括编译器、运行时和核心库。shared-bindings
Python 模块的共享定义、它们的文档和支持的 C API。端口必须实现 C API 以支持相应的模块。shared-module
Python 模块的共享实现可能基于common-hal
.tests
测试框架和测试脚本。tools
各种工具,包括 pyboard.py 模块。
端口¶
端口包括微控制器产品线独有的代码。
支持的 |
支持状态 |
---|---|
atmel-samd |
|
cxd56 |
stable(稳定的) |
浓缩咖啡 |
stable(稳定的) |
莱特克斯 |
alpha |
mimxrt10xx |
alpha |
nrf |
stable(稳定的) |
树莓派 |
stable |
stm |
|
unix |
alpha |
stable
极不可能有错误或缺少功能。beta
正在积极改进,但可能缺少功能并存在错误。alpha
将有错误和缺失的功能。