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
    +关注

    关注

    55

    文章

    4779

    浏览量

    84440
收藏 人收藏

    评论

    相关推荐

    什么是嵌入式?一文读懂嵌入式主板

    在现代科技浪潮中,嵌入式技术已成为支撑各种智能设备和系统运行的核心力量。那么,究竟什么是嵌入式嵌入式系统,顾名思义,是将计算机的硬件和软件嵌入到某种设备或系统中,以实现特定功能的计算
    的头像 发表于 10-16 10:14 479次阅读

    嵌入式主板是什么意思?嵌入式主板全面解析

    嵌入式主板,通常被称为嵌入式系统的核心组件,是一种用于控制和数据处理的计算机硬件,其设计旨在嵌入特定设备中执行专门任务。嵌入式主板如同是设备
    的头像 发表于 09-30 10:05 360次阅读

    飞凌嵌入式旗下教育品牌ElfBoard亮相全国大学生嵌入式竞赛总决赛现场

    ElfBoard作为嵌入式教育市场的新生力量,凭借母公司飞凌嵌入式多年深耕企业级嵌入式板卡的经验亮相全国嵌赛总决赛现场,希望将企业的实践经验与高校的理论研究相结合,共同推动产学研结合,
    的头像 发表于 08-15 09:39 644次阅读
    飞凌<b class='flag-5'>嵌入式</b>旗下<b class='flag-5'>教育</b>品牌ElfBoard亮相全国大学生<b class='flag-5'>嵌入式</b>竞赛总决赛现场

    嵌入式系统怎么学?

    、C++或者Python。这些语言在嵌入式系统开发中都被广泛应用。 3、微处理器/微控制器架构:学习常见的微处理器和微控制器架构,如ARM、AVR、PIC等,了解其特性和应用场景。 4、嵌入式系统开发
    发表于 07-02 10:10

    第61届高博会圆满闭幕,飞凌嵌入式教育品牌ElfBoard精彩回顾

    4月15~17日,备受瞩目的第61届中国高等教育博览会在福州隆重举行,在这场汇聚了众多高等院校、教育精英与科技创新成果的盛会上,飞凌嵌入式旗下的教育品牌ElfBoard盛装亮相,这是品
    的头像 发表于 05-27 17:03 279次阅读
    第61届高博会圆满闭幕,飞凌<b class='flag-5'>嵌入式</b><b class='flag-5'>教育</b>品牌ElfBoard精彩回顾

    第61届高博会圆满闭幕,飞凌嵌入式教育品牌ElfBoard精彩回顾

    4月15~17日,备受瞩目的第61届中国高等教育博览会在福州隆重举行,在这场汇聚了众多高等院校、教育精英与科技创新成果的盛会上,飞凌嵌入式旗下的教育品牌ElfBoard盛装亮相,这是品
    的头像 发表于 04-19 14:33 746次阅读
    第61届高博会圆满闭幕,飞凌<b class='flag-5'>嵌入式</b><b class='flag-5'>教育</b>品牌ElfBoard精彩回顾

    嵌入式主板,你了解多少?

    嵌入式主板,也称为嵌入式计算机主板,是一种专门设计用于嵌入式系统的计算机主板。与台式机和笔记本电脑中使用的常规主板不同,嵌入式主板设计
    的头像 发表于 04-17 15:11 1410次阅读

    嵌入式fpga是什么意思

    嵌入式FPGA是指将FPGA技术集成到嵌入式系统中的一种解决方案。嵌入式系统是一种为特定应用而设计的计算机系统,它通常包括处理器、内存、外设接口等组件,并且被嵌入到更大的设备或系统中,
    的头像 发表于 03-15 14:29 1188次阅读

    fpga是嵌入式

    FPGA(现场可编程门阵列)不是嵌入式系统,但FPGA在嵌入式系统中有着重要的应用。
    的头像 发表于 03-14 17:19 2138次阅读

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

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

    嵌入式系统发展前景?

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

    嵌入式工控机性能特点 嵌入式工控机应用场景

    嵌入式工控机性能特点 嵌入式工控机应用场景 嵌入式工控机是一种专门设计用于工业控制系统的计算机设备。它具有与传统计算机不同的性能特点,并且在各种工业领域中有广泛的应用场景。 一、
    的头像 发表于 02-04 11:35 633次阅读

    嵌入式学习步骤

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

    啥是嵌入式嵌入式都有啥?薪资如何?前景如何

    嵌入式系统(Embedded Systems)是一种特殊类型的计算机系统,被嵌入到其他设备或系统中,用于执行特定的任务或控制特定的功能。这些系统通常设计用于特定的应用领域,具有特定的硬
    的头像 发表于 01-17 16:39 830次阅读
    啥是<b class='flag-5'>嵌入式</b>?<b class='flag-5'>嵌入式</b>都有啥?薪资如何?前景如何

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

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