0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CircuitPython:用于教育的嵌入式 Python

gfhtrdfd 2022-12-29 10:02 次阅读

“变化是唯一不变的”是希腊哲学家赫拉克利特的智慧明珠。这一点在数字电子世界中最为真实。C 语言是 1970 年代初期计算热潮的产物,自从 BASIC 语言放弃其对微控制器编程的统治地位以来,它就一直主导着嵌入式开发。今天风向又变了,这次转向了日益流行的 Python 编程语言。MicroPython 在过去几年出现,以弥合面向桌面的 CPython 参考语言与相对有限的微控制器硬件规格之间的差距。

尽管如此,对于新手嵌入式开发人员来说,MicroPython 还是有点挑战。输入CircuitPython,它是 MicroPython 语言的一个分支,经过调整以满足学生和其他希望学习现代嵌入式系统开发的人的特定需求。自 2017 年夏季首次发布以来,由Adafruit Industries主办的CircuitPython 语言在制造商和教育标记中的受欢迎程度一直在稳步增长。

在其当前迭代中,即本文的 6.1.0 版,CircuitPython 支持由 Microchip Technology Atmel SAMD21和SAMD51微控制器以及 Nordic Semiconductor nRF52840片上系统 (SoC) 提供支持的众多开发板。以前的 CircuitPython 版本支持流行的 ESP8266 微控制器,但从版本 4 开始不再支持。虽然 CircuitPython 在许多方面与 MicroPython 相似,但它确实去除了复杂性并为那些刚刚接触嵌入式电子产品的人提供了更直接的开发工作流程。

CircuitPython 入门

首先,与 MicroPython 一样,CircuitPython 需要将特殊固件上传到开发板,称为 USB 闪存版本 2 或 UF2。许多受支持的开发板都预装了固件。但是,所有开发板都提供一种机制,使系统进入引导加载程序模式,从而允许刷新 UF2 固件。UF2 固件特定于每个开发板,因此请确保下载特定于您的开发板的最新固件。CircuitPython网站使这项任务变得简单。将开发板插入计算机并启用引导加载程序模式后,开发板应显示为名为BOOT的闪存驱动器。只需将之前下载的UF2文件拖入BOOT的根目录即可驾驶。成功安装后,将出现一个名为CIRCUITPY的新驱动器。至此,开发板已经为它的第一个项目做好了准备。

虽然任何代码编辑器都可用于编辑 CircuitPython 源文件 (.py ),但建议初学者使用Mu 编辑器。安装并运行编辑器后,只需单击“新建”按钮即可创建一个空白的 Python 脚本文件。有大量示例代码可以满足几乎所有需求。当然,举世闻名的Blinky LED就是硬件世界的Hello, World。这是一个闪烁 LED 的示例:

进口板

进口数码

导入时间

led = digitalio.DigitalInOut(board.D13)

led.direction = digitalio.Direction.OUTPUT

而真实的:

led.value = 真

时间.睡眠(0.5)

led.value = 假

时间.睡眠(0.5)

输入代码后,将文件命名为code.py并将其保存到CIRCUITPY驱动器的根目录。如果您将文件保存在其他地方,例如桌面,只需单击文件并将其从桌面拖动到CIRCUITPY驱动器图标即可。重要说明,文件名对 CircuitPython 很重要,因为有些文件名是为特殊目的保留的。code.py 文件在每次重新加载后运行。要建立仅在启动时运行一次的任何设置函数,请将该代码放在名为boot.py的文件中。

CircuitPython 的一个很好的特性是它可以检测到任何时候添加或更新文件并自动重新启动代码。无需按下重置按钮或拔下/重新插入开发板的 USB 电缆。所有源代码都保留为用户可读文件,因此您可以将开发板连接到任何计算机并以零配置管理工作进行代码更改。换句话说,您始终在设备上拥有最新的源代码。

CircuitPython 通过使用库使扩展功能变得非常简单。在CIRCUITPY驱动器的根文件夹中,应该有一个名为 lib 的文件夹。如果没有,使用计算机的文件资源管理器从头开始创建文件夹是安全的。这是存储添加功能或与传感器和执行器交互所需的所有支持文件的地方。CircuitPython 提供标准的库包,这些库在 CircuitPython 开发人员中很受欢迎。这些库文件针对嵌入式设备进行了显式优化,并以 . MPY文件扩展名。确保库包的版本号与您正在使用的 CircuitPython 的版本号相匹配至关重要。在升级 CircuitPython 固件时,不要忘记同时升级库包。

CircuitPython 与 MicroPython

CircuitPython 和 MicroPython 之间的其他一些主要区别包括:

所有构建都启用了浮点数。

不支持并发。

CircuitPython 中引入了一种安全模式,可在检测到硬崩溃或掉电情况时阻止用户代码运行。

模块别名不可用。换句话说,uos和utime模块不能作为os和time 使用。为了保持 CPython 兼容性,CircuitPython 操作系统和时间模块是其 CPython 对应项的子集。因此,CircuitPython 代码在 CPython 中是可执行的,但反之则不一定。

引入存储模块来挂载文件系统。

与其他 Python 版本一样,CircuitPython 通过读取-评估-打印循环 (REPL) 终端提供交互式编程体验。对于 CircuitPython,可以在主代码完成后通过串行终端连接到电路板并按键盘上的任意键进入 REPL 环境。输入 REPL 会禁用自动重新加载功能。

CircuitPython 的另一个令人兴奋的方面是Blinka。虽然 CircuitPython 在微控制器上运行,但 Blinka 将 CircuitPython 库带到了微型个人计算机上,这些个人计算机被称为单板计算机 (SBC),例如 Raspberry Pi。对于那些来自桌面开发人员背景的人,Blinka 使 MicroPython 成为可在面向桌面的 Python 版本中运行的 pip 可安装 Python 库,从而使使用与 SBC 相同的库与各种传感器和执行器交互成为可能用于微控制器。

Python,Python,无处不在

CircuitPython 是进入嵌入式系统软件开发“Python 化”的激动人心的入口。它的设计简单,加上强大的功能集,使其成为教育工作者和创客等人的诱人编程语言。CircuitPython 还为专业人士提供了独特的机会。对于嵌入式工程师来说,学习 Python 等强大语言的机会有助于教授桌面和 Web 应用程序技能。对于传统的桌面应用程序软件开发人员,CircuitPython 提供了一种将他们的编码技能从 PC 迁移到嵌入式系统的方法。

无论您的经验如何,CircuitPython 都是嵌入式开发领域值得一提的新编程语言。它的独特功能使嵌入式开发入门变得轻而易举,同时还提供了一些新概念,这些概念也应该会吸引资深程序员。CircuitPython 是嵌入式开发编程语言传奇历史中一个受欢迎的新成员。

我们想知道您是否有使用 CircuitPython 的经验?在Twitter 上与我们联系并与我们分享您的 CircuitPython 支持的项目!有兴趣开始使用 CircuitPython,请查看此Adafruit CircuitPython 入门工具包。

审核编辑黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • python
    +关注

    关注

    51

    文章

    4678

    浏览量

    83476
收藏 人收藏

    评论

    相关推荐

    嵌入式热门发展方向有哪些?

    热门发展方向,包括但不限于: 1.物联网: 随着物联网的快速发展,嵌入式系统在物联网领域的应用也越来越广泛。嵌入式系统可以用于物联网设备的控制、监测和数据处理等方面。例如,在服务领域,如远程点菜器等
    发表于 04-11 14:17

    嵌入式会越来越卷吗?

    “卷”的挑战和机遇有清晰的认识。 嵌入式系统的发展趋势与影响 嵌入式系统作为一种融入更大系统中的计算机硬件和软件,通常用于执行特定功能或任务。然而,这个看似局限的技术领域,却拥有着广泛而深远
    发表于 03-18 16:41

    嵌入式人工智能的就业方向有哪些?

    联网ARM开发 NB-IoT开发及实战 七:python工程师,人工智能工程师 python语法基础 python核心编程 基于OpenCV的机器视觉开发 嵌入式人工智能渗入生活的方
    发表于 02-26 10:17

    嵌入式系统发展前景?

    的发展前景也十分广阔。 随着物联网和智能设备的快速发展,嵌入式系统将更为普遍地应用于各种设备和设施,包括家用电器、医疗设备、交通工具等。这些设备将通过嵌入式系统实现智能化、网络化,从而为用户提供更为便捷
    发表于 02-22 14:09

    嵌入式学习步骤

    语言编写。但是,有些嵌入式系统也使用其他编程语言,例如Python或Java。 (3).了解硬件:深入了解您要控制的硬件设备的功能和特性。您需要了解嵌入式系统的处理器、内存、I/O端口、传感器和其他
    发表于 02-02 15:24

    什么是嵌入式系统?嵌入式系统的具体应用

    嵌入式,一般是指嵌入式系统。用于控制、监视或者辅助操作机器和设备的装置。
    的头像 发表于 12-20 13:33 735次阅读

    嵌入式硬件和软件哪个好?

    嵌入式硬件和软件哪个好? 嵌入式软硬件工程师哪个更有前途呢?一起来看看。 嵌入式是分为软硬件工程师的,首先我们先来看看嵌入式硬件工程师吧! 嵌入式
    发表于 12-05 15:17

    为什么嵌入式没有35岁危机?

    嵌入式技术是指将计算机系统嵌入到其他设备或系统中的一种技术。它广泛应用于汽车、家电、医疗设备等领域,并且在智能手机、智能家居和物联网等新兴领域中扮演着重要角色。那么,为什么嵌入式
    发表于 11-17 10:33

    请问python能用在嵌入式arm吗?

    python能用在嵌入式arm吗?
    发表于 10-23 06:39

    什么是嵌入式Linux?

    什么是嵌入式Linux? 对于很多电气、电信、通信专业的同学来说,对口专业就业方向主要有软、硬件两个方向。无论是对于学生还是就业而言,软硬件的开发学习,嵌入式物联网在近年来无疑是一个摆在面前
    发表于 10-11 13:47

    从事嵌入式工作有哪些优势?

    随着物联网和人工智能的发展,嵌入式技术越来越值钱,学嵌入式的人也越来越多,现在开始入行嵌入式。根据一些权威部门统计,我国目前嵌入式软件人才缺口每年为40万人左右,
    发表于 10-08 15:05

    基于树莓派的嵌入式Linux开发教学

    树莓派对于全球嵌入式 Linux 开发及教育已经并将继续带来广泛的影响,及早将之引入我国主流的嵌入式开发与教学环境中或将是有益的。尽管传统的 “ARM 开发板硬件设计 +Linux 移植裁剪
    发表于 09-21 07:09

    Arm编译器嵌入式FuSa 6.16.2版LTS用户指南

    用于Embedded FUSA 6的ARM®编译器是ARM为ARM®Cortex®和ARM®Neoverse®处理器提供的最先进的C和C++编译工具链。 嵌入式FUSA 6的ARM编译器是在ARM
    发表于 08-18 06:42

    用于嵌入式版本6.20的ARM编译器参考指南

    Arm®编译器嵌入式命令行选项的语法。此外,还有用于识别本文档中描述的各种功能的支持级别的描述。
    发表于 08-10 07:46

    如何构建我自己的嵌入式C编译器?

    只是为了获得如何构建我自己的嵌入式 C 编译器的知识,如预处理、汇编、链接器、生成 Hex 文件、elf 文件、映射文件。 任何有用的链接可用? 我是嵌入式软件工程师,并且具有 c 编程 python、bat 脚本方面的知识。
    发表于 06-08 08:10