MicroPython是Python 3编程语言的精简高效实现 ,包括Python标准库的一小部分,并且经过优化,可在微控制器和受限环境中运行。 MicroPython pyboard是一个紧凑的电子电路板,在裸机上运行MicroPython,为您提供一个低级Python操作系统,可用于控制各种电子项目。 MicroPython包含许多高级功能,如交互式提示,任意精度整数,闭包,列表理解,生成器,异常处理等。然而它非常紧凑,可以在仅256k的代码空间和16k的RAM内运行。 MicroPython旨在尽可能与普通Python兼容,以便您轻松地将代码从桌面传输到微控制器或嵌入式系统。 微控制器是缩小到单个非常小的芯片上的计算机。 嵌入式系统是在更大的机械或电气系统中起作用的计算机。嵌入式系统通常使用微控制器。 这提出了两个重要问题:
回答这些问题说明了为什么围绕MicroPython有如此多的趣味性。
为何选择Micro?
电脑是惊人的,看似神奇的东西。
Damien George是一名计算机工程师,他每天都要使用Python语言工作,同时也在做一些机器人项目。有一天,他突然冒出了一个想法:能否用Python语言来控制单片机,进行实现对机器人的操控呢?
要知道,Python是一款比较容易上手的脚本语言,而且有强大的社区支持,一些非计算机专业领域的人都选它作为入门语言。遗憾的是,它不能实现一些非常底层的操控,所以在硬件领域并不起眼。
Damien为了突破这种限制,他花费了六个月的时间来打造Micro Python。它基于ANSI C,语法跟Pyton 3基本一致,拥有自家的解析器、编译器、虚拟机和类库等。目前它支持基于32-bit的ARM处理器,比如说pyboard(STM32F405),支持NRF51822(micro:bit)、支持FireBeetle-ESP32、支持WiPy、支持ESP8266核心主控、支持CC3200等等。
Python是一种易于学习,使用广泛且富有表现力的编程语言。用简洁简单的代码在Python中编写你的程序很容易。此外,Python蓬勃发展,因为它拥有一个组织良好,积极主动,多样化和热情的全球社区。
MicroPython是Python 3的完全重新实现。除了在后面的段落中描述的一些差异之外,您对Python的了解也适用于MicroPython。常规Python和MicroPython之间最明显的区别是MicroPython被设计为在极其受限的条件下工作(例如Micro:bit上只有16千字节的RAM)。 MicroPython直接在硬件上运行“裸机”:没有像Windows,macOS或Linux这样的底层操作系统。通常由操作系统提供的所有操作和服务都由MicroPython直接处理。MicroPython具有完整和直接的硬件控制,因此,实际上,MicroPython是操作系统。 除了少数例外,Python的所有语言功能也都在MicroPython中。由于设备的性质有限,默认情况下MicroPython没有附带完整的标准库。相反,根据设备的不同,它将附带标准库的子集,通常以高效的嵌入式友好方式重新实现。
由于MicroPython在具有不同功能的设备上运行,因此功能和模块的可用性有时会有所不同。当然,具有特殊功能的设备(如WiFi)将包含支持这些功能的模块。
支持MicroPython的开发板有很多?
比如:
下面将介绍部分开发板
pyboard是官方的MicroPython微控制器板,完全支持软件功能。硬件有:
micro:bit是由英国广播公司BBC推出的可编程微型计算机,可以帮助用户学习基础编程知识。它最大的亮点在于支持图形化编程,支持microPython编程。micro:bit主控采用nrf51822芯片作为主控,IC包括256KB片上闪存,16KB RAM,32位ARM®Cortex™ M0 CPU,支持Bluetooth低功耗,在低功耗模式下,最低功耗可以达到0.6uA。
WiPy是支持microPython编程、支持WiFi和蓝牙的开发板,定位于物联网应用的设计。WiPy控制器的核心采用Espressif ESP32芯片,其最大的特点在于体积小巧,支持蓝牙和WiFi。
麦克纳姆轮的移动方式是基于一个有许多位于机轮周边的轮轴的中心轮的原理上,这些成角度的周边轮轴把一部分的机轮转向力转化到一个机轮法向力上面。
machine.pwm是MicroPython中用于控制PWM输出的模块之一,它提供了一些方法和属性,用于设置和控制PWM输出的频率、占空比等参数,从而实现对各种应用场景的控制。
Pin 类是 machine 模块下面的一个硬件类,用于对引脚的配置和控制,提供对 GPIO 的操作方法。
本文学习如何使用ESP32开发板来进行多线程的开发。
MicroPython的SPI是一个用于进行串行外设接口总线协议的类。
本文以一个简单的例程帮助大家在 MicroPython 下使用 I2C