MicroPython库¶
警告
本节的重要概要
MicroPython 提供了内置模块,这些模块反映了 Python 标准库 (例如
os、time)的功能,以及 MicroPython 特定模块 (例如bluetooth、machine)。大多数 Python 标准库模块实现了相应 Python 模块功能的一个子集,并在少数情况下提供了一些 MicroPython 特定的扩展(例如
array、os)由于资源限制或其他限制,某些移植版本或固件版本可能不包括此处记录的所有功能。
为了允许扩展性,一些内置模块可以 从Python代码 扩展到设备文件系统。
本章描述了内置于 MicroPython 中的模块(函数和类库)。这份文档通常旨在描述 MicroPython 项目中实现的所有模块和函数/类。然而,MicroPython 是高度可配置的,每个移植到特定板/嵌入式系统的版本可能只包含可用 MicroPython 库的一个子集。
考虑到这一点,请注意,本文档中描述的模块中的一些函数/类(甚至整个模块)在特定系统上的 MicroPython 的特定构建中 可能不可用 。查找特定功能的可用性/不可用性的基本信息的最佳地方是包含特定 MicroPython 移植版本 相关信息的“基本信息”部分。
在一些移植版本上,您可以通过在 REPL 中输入以下内容来发现可以导入的可用内置库:
help('modules')
除了本文档中描述的内置库之外,还可以在 micropython-lib 中找到更多来自 Python 标准库的模块,以及对其的进一步 MicroPython 扩展。
Python标准库和微型库¶
以下标准 Python 库已被“微型化”,以符合 MicroPython 的理念。它们提供了该模块的核心功能,并旨在成为标准 Python 库的即插即用替代品。
array– 数组asyncio— 异步 I/O 调度器binascii– 二进制/ASCII 转换builtins– 内置模块和异常cmath– 复数的数学函数collections– 集合和容器类型errno– 系统错误代码gc– 控制垃圾收集器gzip– gzip 压缩与解压缩hashlib– 散列算法heapq– 堆队列算法io– 输入/输出流json– JSON 编码与解码math– 数学函数os– 基本的“操作系统”服务platform– 访问底层平台的识别数据random– 生成随机数re– 简单的正则表达式select– 等待一组流上的事件socket– socket模块ssl– SSL/TLS 模块struct– 打包和解压原始数据类型sys— 系统特定函数time– 时间相关函数zlib– zlib 压缩与解压缩_thread– 多线程支持
MicroPython-特定库¶
以下库中的功能是 MicroPython 实现特有的。
特定于OpenMV Cam的库¶
以下库专门用于OpenMV Cam。
pyb— 与板子相关的函数stm— 特定于STM32微控制器的功能sensor— 相机传感器image— 机器视觉ml— 机器学习gif— GIF 录制mjpeg— mjpeg 录音audio— Audio 模块display— 显示驱动fir— 热传感器驱动程序(fir == 远红外)tv— 图传扩展板板驱动程序cpufreq— CPU频率控制buzzer— 蜂鸣器驱动程序imu— IMU 传感器rpc— rpc 库rtsp— rtsp库omv— OpenMV Cam 信息gt911— 触摸屏驱动ft5x06— 触摸屏驱动tfp410— DVI/HDMI 控制器
OpenMV Cam上的第三方库¶
以下第三方库内置到您的OpenMV Cam固件中:
ulab — 类似于numpy的数组操作库¶
pid — 比例/积分/微分控制¶
bno055 — IMU驱动¶
示例脚本位于OpenMV IDE的 IMU Shield 示例文件夹中。
ssd1306 — OLED驱动¶
tb6612 — 步进电机驱动¶
示例脚本位于OpenMV IDE的 Motor Shield 示例文件夹中。
modbus — modbus协议库¶
示例脚本位于OpenMV IDE的 Modbus 示例文件夹中。
mqtt — mqtt协议库¶
示例脚本位于OpenMV IDE的 WiFi Shield 示例文件夹中。
vl53l1x — ToF距离传感器驱动¶
示例脚本位于OpenMV IDE的 Distance Shield 示例文件夹中。
从 Python 扩展内置库¶
Python代码可以通过在文件系统中提供同名模块来扩展内置模块的子集。这种扩展性适用于以下内置到固件中的 Python 标准库模块:array、binascii、collections、errno、gzip、hashlib、heapq、io、json、os、platform、random、re、select、socket、ssl、struct、time zlib,以及 MicroPython 特定的 machine 模块。所有其他内置模块不能从文件系统扩展。
这允许用户提供内置库的扩展实现(也许是为了提供额外的 CPython 兼容性或缺失的功能)。这在 micropython-lib 中被广泛使用,有关更多信息,请参见 包管理。文件系统模块通常会对内置模块进行通配符导入,以继承内置模块的所有全局变量(类、函数和变量)。
在 MicroPython v1.21.0 及更高版本中,为了防止文件系统模块导入自身,它可以通过在导入期间临时清除 sys.path 来强制导入内置模块。例如,要从 Python 扩展 time 模块,文件系统上名为 time.py 的文件将执行以下操作:
_path = sys.path
sys.path = ()
try:
from time import *
finally:
sys.path = _path
del _path
def extra_method():
pass
结果是 time.py 包含了内置 time 模块的所有全局变量,但添加了 extra_method。
在 MicroPython 的早期版本中,您可以通过在其名称前添加 u 来强制导入内置模块。例如,使用 import utime 而不是 import time。例如,文件系统上的 time.py 可能看起来像这样:
from utime import *
def extra_method():
pass
这种方式仍然受到支持,但现在更倾向于使用上述的 sys.path 方法,因为在 MicroPython 的未来版本中将从内置模块的名称中移除 u 前缀。
除了在特定需要强制使用内置模块的情况外,代码应该始终使用 import module 而不是 import umodule。