什么是MicroPython 它能做什么有什么局限

描述

随着Python成为主流的编程语言,MicroPython在嵌入式系统领域也越来越热门起来,尤其是大家喜爱的ESP32以及树莓派基金会刚推出的基于RP2040微控制器的Pico模块都支持MicroPython。

作为一行代码都不会写的板农,在很多时候觉得非常受限,发誓一定要找个时机好好学会一门编程语言,这不国庆7天的假期我都奉献给了MicroPython,并在自己设计的Pico扩展学习板上实现了板上所有外设的功能:

花式点灯 - 单色、RGB三色,各种组合,还可以按键和传感器来控制

OLED屏幕上显示文本、图像、波形

将音频信号进行数据采集并显示在OLED屏幕上 - 做了一个炫酷的波形显示

用板上的蜂鸣器奏响了“我和我的祖国”

移植了别人的代码生成了任意波形 - 改变波形、改变频率、改变幅度等等

。。。。

通过这7天的“探索”我自己最大的感触就是,以MicroPython入门嵌入式系统实在是太方便了 - 丰富的开源资源、多种形式的参考,比如视频课程、文本案例等。

MicroPython确实是一个很好的编程语言 - 面向对象、灵活、简单、优美!

我个人的学习得益于别人的分享(开源)、传递知识最好的方式就是把自己所学、所悟也分享出去,因此我计划上线一套基于Pico的Micro Python嵌入式编程教程,一个月以后正式开播,当然,前期会有15节PCB设计的直播课程带着大家自己设计一款Pico的学习板,毕竟在打板都能免费且包邮的便利大环境下,基于一个Pico核心板,未来每个人都可以通过自己设计PCB来做各种有趣的应用出来,学会PCB的设计也会让嵌入式系统工程师如虎添翼。

从现在开始陆续连载与这个课程相关的技术文章,今天是第一篇:

1. 什么是MicroPython

MicroPython是一个小型的开源Python编程语言解释器,运行在小型嵌入式开发板上。使用MicroPython,您可以编写干净、简单的Python代码来控制硬件,而不必使用复杂的底层语言,如C或c++ (Arduino用于编程)。

Python编程语言的简单性使MicroPython成为编程和硬件新手的理想选择。MicroPython功能非常齐全,支持大多数Python语法,所以即使是经验丰富的Python老手也会发现使用MicroPython很熟悉和有趣。

除了易于使用之外,MicroPython还有一些独特的特性,使它有别于其它嵌入式系统:

使用交互式解释器:REPL(读Read-评估Evaluate-打印Print-循环Loop) - 这允许你连接到一个板,并让它执行代码,而不需要编译或上传-完美的快速学习和试验硬件!

丰富的软件库 - 像普通的Python编程语言一样,MicroPython内置了非常多的库来支持许多任务。例如,通过MicroPython的内置库,可以很容易地解析来自Web服务的JSON数据,使用正则表达式搜索文本,甚至进行网络套接字编程。

可扩展性 - 对于高级用户来说,MicroPython可以通过低级C/C++函数进行扩展,因此在需要时,您可以将富有表现力的高级MicroPython代码与更快的低级代码混合使用。

MicroPython是Python 3语言的一个变种,其思想来源于剑桥大学的Darrien P. George博士,他与一个众筹团队一起于2013年开发了一款支持MicroPython的硬件开发板 - 叫PyBoard,并于2014年的Python大会(PyCon)上提出了MicroPython1.0。George博士也建立了micro python.org网站(www.micropython.org)来支持MicroPython和Pyboard。

2. MicroPython能做什么?

MicroPython被设计用于快速有效地创建嵌入式系统控制程序。嵌入式系统可以简单定义为任何需要使用微控制器以满足工程需要的工程。典型的嵌入式系统通常使用传感器,有时会使用电子机械传动结构与微控制器接口,它们可能附接有人机接口设备,便于交互,但是更多为自动的,为单机运行或连接至云端进行远程访问。

就像Arduino板一样,MicroPython可以控制硬件和连接的设备 - 可以控制GPIO引脚闪烁灯、读取开关以及更多;可以驱动能够驱动伺服器、LED的PWM信号; 能通过模数转换器读取读取模拟传感器的信息,与I2C或SPI设备通信也很容易,你甚至可以在一些板上找到网络和WiFi支持。MicroPython甚至有用于控制其它硬件的库,如NeoPixels和LED条,微型OLED显示器等等。简而言之,MicroPython可以做很多事情!

3. MicroPython有什么局限?

MicroPython有很少的限制,几乎Arduino能做的任何事情都可以通过MicroPython板来完成。然而,需要注意的是,与类似的Arduino或其它基于C/C++的底层代码相比,MicroPython代码没有那么快,需要的内存也可能更大,不过通常这并不重要,因为速度和内存差异并不大,大多数的应用不会受到影响。要注意的是,那些对时间或性能要求很严格的代码可能无法在MicroPython中工作。

例如,在MicroPython中完全使用软件来驱动IO管脚实现一些高速的串行通信协议可能不是最好的主意。然而,有一些方法可以混合MicroPython和低级C/C++代码,这样我们就可以同时拥有这两个世界的优点 - 主要的逻辑是干净且易于理解的MicroPython代码,而性能关键部分使用更快的低级代码编写的。

MicroPython语言实现了大部分核心Python 3语言,但是MicroPython不能实现整个Python 3标准库。Python以拥有广泛的标准库而闻名,但是试图将这么大的库压缩到只有千字节内存的小板上是不可能的。相反,MicroPython实现了一些Python标准库的更小版本,为我们提供了很棒的开发体验。

编辑:jq

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分