OpenMV MicroPython 函式庫

警告

本節重要摘要

  • MicroPython 提供了與 Python 標準函式庫 功能相對應的內建模組(例如 ostime),以及 MicroPython 專屬模組(例如 bluetoothmachine)。

  • 大多數 Python 標準函式庫模組僅實作對應 Python 模組功能的一個子集,在少數情況下也會提供一些 MicroPython 專屬的擴充功能(例如 arrayos

  • 由於資源限制或其他因素,某些移植版本或韌體版本可能不會包含此處所記載的所有功能。

  • 為了便於擴充,某些內建模組可以透過載入到裝置檔案系統上的 Python 程式碼加以擴充

本章說明內建於 MicroPython 中的模組(函式與類別函式庫)。本文件大致上力求說明 MicroPython 專案中所實作的所有模組與函式/類別。然而,MicroPython 具有高度可設定性,針對特定開發板/嵌入式系統的每個移植版本可能僅包含可用 MicroPython 函式庫的一個子集。

有鑑於此,請注意本文件所述模組中的某些函式/類別(甚至整個模組)在特定系統上的特定 MicroPython 組建中可能無法使用。要瞭解特定功能是否可用的最佳資訊來源是「General Information」一節,其中包含與特定 MicroPython port 相關的資訊。

在某些移植版本上,您可以在 REPL 輸入以下指令來探索可匯入的內建函式庫::

help('modules')

除了本文件所述的內建函式庫外,許多來自 Python 標準函式庫的模組以及更多對其的 MicroPython 擴充,皆可在 micropython-lib 中找到。

Python 標準函式庫與微型函式庫

以下標準 Python 函式庫已被「微型化」以符合 MicroPython 的理念。它們提供該模組的核心功能,並設計為標準 Python 函式庫的即插即用替代品。

OpenMV Cam 函式庫

以下各節說明每個 OpenMV 支援開發板上可用的函式庫,包括 MicroPython 專屬的內建模組以及 OpenMV 自家的擴充。

共用模組

內建於每個 OpenMV 相機板的韌體中。

大多數 OpenMV 相機板上隨附的凍結式 Python 輔助模組(驅動程式、網路與工具程式):

網路輔助模組(需要可運作的網路介面):

Web 框架

Web 伺服器框架模組。請參閱下方各板專屬章節,瞭解各板包含哪些模組。

移植專屬模組

繫結至特定 MCU 系列的模組。請參閱下方各板專屬章節,瞭解各板包含哪些模組。

硬體驅動程式

用於一個或多個 OpenMV 支援開發板上隨附之感測器、顯示器與其他周邊裝置的驅動程式。請參閱下方各板專屬章節,瞭解各板包含哪些模組。

各板可用性

下方清單顯示每個開發板上隨附哪些移植專屬模組與驅動程式模組。除非另有說明,CommonFrozen Python helpersNetworking helpers(上述)中的所有模組在每個相機板上皆可使用。

OpenMV N6

STM32N657(Cortex-M55 @ 800 MHz),搭配額定 600 GOPS INT8 的 1 GHz 晶片內 NPU。將該 NPU 與 PAG7936 100 萬畫素全域快門感測器配對。

  • pyb --- 與開發板相關的函式

  • stm --- STM32 MCU 專屬功能

  • ssd1306 --- OLED 驅動程式

  • tb6612 --- TB6612 馬達驅動程式

  • jwt --- JSON Web Tokens

  • microdot --- 極簡 HTTP 框架

OpenMV AE3

Alif Ensemble E3 雙核心 SoC:Cortex-M55 @ 400 MHz(HP)加上 Cortex-M55 @ 160 MHz(HE),搭配兩顆晶片內 NPU(400 MHz / 204 GOPS HP NPU + 160 MHz / 46 GOPS HE NPU)。

  • alif --- Alif Ensemble SoC 函式

  • romfs --- ROMFS 輔助工具程式

  • pca9674a --- PCA9674A I2C 擴充器驅動程式

  • jwt --- JSON Web Tokens

  • microdot --- 極簡 HTTP 框架

OpenMV Cam RT1062

以 NXP i.MX RT1062(Cortex-M7 @ 600 MHz)為核心的低功耗機器視覺板。結合了 USB-C 高速網路、Wi-Fi / Bluetooth 以及 10/100 乙太網路。

  • mimxrt --- NXP i.MX RT 專屬功能

  • dht --- DHT11 與 DHT22 溫度/濕度感測器

  • onewire --- 1-Wire 匯流排協定

  • ds18x20 --- DS18x20 溫度感測器驅動程式

  • neopixel --- WS2812 / NeoPixel LED 控制

  • ssd1306 --- OLED 驅動程式

  • tb6612 --- TB6612 馬達驅動程式

  • pca9674a --- PCA9674A I2C 擴充器驅動程式

  • jwt --- JSON Web Tokens

  • microdot --- 極簡 HTTP 框架

OpenMV Pure Thermal

以 STM32H743(Cortex-M7 @ 480 MHz)為核心的全系統熱成像板,搭配 64 MB 外部 SDRAM、32 MB QSPI 快閃記憶體、硬體 JPEG 編解碼器與 DVI/HDMI 輸出。

  • pyb --- 與開發板相關的函式

  • stm --- STM32 MCU 專屬功能

  • tfp410 --- DVI/HDMI 序列化器

  • ft5x06 --- 電容式觸控螢幕驅動程式

  • dht --- DHT11 與 DHT22 溫度/濕度感測器

  • onewire --- 1-Wire 匯流排協定

  • ds18x20 --- DS18x20 溫度感測器驅動程式

  • neopixel --- WS2812 / NeoPixel LED 控制

  • ssd1306 --- OLED 驅動程式

  • tb6612 --- TB6612 馬達驅動程式

OpenMV Cam H7 Plus

STM32H743(Cortex-M7 @ 480 MHz),搭配 32 MB 外部 SDRAM、32 MB QSPI 快閃記憶體、硬體 JPEG 編解碼器與 OV5640 500 萬畫素相機模組。

  • pyb --- 與開發板相關的函式

  • stm --- STM32 MCU 專屬功能

  • dht --- DHT11 與 DHT22 溫度/濕度感測器

  • onewire --- 1-Wire 匯流排協定

  • ds18x20 --- DS18x20 溫度感測器驅動程式

  • neopixel --- WS2812 / NeoPixel LED 控制

  • ssd1306 --- OLED 驅動程式

  • tb6612 --- TB6612 馬達驅動程式

OpenMV Cam H7

STM32H743(Cortex-M7 @ 480 MHz),搭配 1 MB 內部 SRAM、2 MB 內部快閃記憶體與硬體 JPEG 編解碼器。

  • pyb --- 與開發板相關的函式

  • stm --- STM32 MCU 專屬功能

  • dht --- DHT11 與 DHT22 溫度/濕度感測器

  • onewire --- 1-Wire 匯流排協定

  • ds18x20 --- DS18x20 溫度感測器驅動程式

  • neopixel --- WS2812 / NeoPixel LED 控制

  • ssd1306 --- OLED 驅動程式

  • tb6612 --- TB6612 馬達驅動程式

OpenMV Cam M7

STM32F765(Cortex-M7 @ 216 MHz),搭配 512 KB 內部 SRAM 與 2 MB 內部快閃記憶體。隨附 OV7725 感測器。

  • pyb --- 與開發板相關的函式

  • stm --- STM32 MCU 專屬功能

  • dht --- DHT11 與 DHT22 溫度/濕度感測器

  • onewire --- 1-Wire 匯流排協定

  • ds18x20 --- DS18x20 溫度感測器驅動程式

  • neopixel --- WS2812 / NeoPixel LED 控制

  • ssd1306 --- OLED 驅動程式

  • tb6612 --- TB6612 馬達驅動程式

OpenMV Cam M4

STM32F427(Cortex-M4 @ 180 MHz),搭配 256 KB 內部 SRAM 與 1 MB 內部快閃記憶體。隨附 OV7725 感測器。

  • pyb --- 與開發板相關的函式

  • stm --- STM32 MCU 專屬功能

  • dht --- DHT11 與 DHT22 溫度/濕度感測器

  • onewire --- 1-Wire 匯流排協定

  • ds18x20 --- DS18x20 溫度感測器驅動程式

  • neopixel --- WS2812 / NeoPixel LED 控制

  • ssd1306 --- OLED 驅動程式

  • tb6612 --- TB6612 馬達驅動程式

Arduino Nicla Vision

以 STM32H747AII6 雙核心 SoC 為核心的 22.86 × 22.86 mm 機器視覺板:Cortex-M7 @ 400 MHz 加上 Cortex-M4 @ 200 MHz。

  • pyb --- 與開發板相關的函式

  • stm --- STM32 MCU 專屬功能

  • lsm6dsox --- LSM6DSOX 六軸 IMU

  • dht --- DHT11 與 DHT22 溫度/濕度感測器

  • ds18x20 --- DS18x20 溫度感測器驅動程式

  • onewire --- 1-Wire 匯流排協定

  • neopixel --- WS2812 / NeoPixel LED 控制

Arduino Portenta H7

以 STM32H747XI 雙核心 SoC 為核心的 66 × 25 mm 工業開發板:Cortex-M7 @ 400 MHz 加上 Cortex-M4 @ 200 MHz。

  • pyb --- 與開發板相關的函式

  • stm --- STM32 MCU 專屬功能

  • dht --- DHT11 與 DHT22 溫度/濕度感測器

  • ds18x20 --- DS18x20 溫度感測器驅動程式

  • onewire --- 1-Wire 匯流排協定

  • neopixel --- WS2812 / NeoPixel LED 控制

  • lora --- LoRa 數據機驅動程式

  • ssd1306 --- OLED 驅動程式

  • tb6612 --- TB6612 馬達驅動程式

Arduino Giga R1 WiFi

以 STM32H747XI 雙核心 SoC 為核心的 101 × 53 mm Mega 規格開發板:Cortex-M7 @ 480 MHz 加上 Cortex-M4 @ 240 MHz,搭配板載 800x480 觸控螢幕。

  • pyb --- 與開發板相關的函式

  • stm --- STM32 MCU 專屬功能

  • dht --- DHT11 與 DHT22 溫度/濕度感測器

  • onewire --- 1-Wire 匯流排協定

  • neopixel --- WS2812 / NeoPixel LED 控制

  • gt911 --- GT911 五點電容式觸控控制器

  • ft5x06 --- 電容式觸控螢幕驅動程式

Arduino Nano RP2040 Connect

以 RP2040 為基礎的 Nano 規格開發板,搭配 U-blox NINA-W102 Wi-Fi/Bluetooth 模組。已不再積極支援;此板最後一個 OpenMV 韌體版本予以保留供存檔使用。

  • rp2 --- RP2040 專屬的 PIO / DMA / 快閃記憶體輔助模組

  • espflash --- ESP32 ROM 開機載入程式韌體燒錄工具

  • lsm6dsox --- LSM6DSOX 六軸 IMU

  • dht --- DHT11 與 DHT22 溫度/濕度感測器

  • onewire --- 1-Wire 匯流排協定

  • ds18x20 --- DS18x20 溫度感測器驅動程式

  • neopixel --- WS2812 / NeoPixel LED 控制

Arduino Nano 33 BLE Sense

以 Nordic nRF52840 為核心的 Nano 規格開發板,搭配板載 Arduino 感測器套件。已不再積極支援;此板最後一個 OpenMV 韌體版本予以保留供存檔使用。

  • ubluepy --- 基於 Nordic SoftDevice 的 Bluetooth LE 周邊與中央裝置 API

  • bmi270 --- BMI270 六軸 IMU

  • bmm150 --- BMM150 三軸磁力計

  • lsm9ds1 --- LSM9DS1 九軸 IMU

  • hts221 --- HTS221 濕度/溫度感測器

  • lps22h --- LPS22HB/HH 壓力感測器

  • hs3003 --- HS3003 濕度/溫度感測器

  • apds9960 --- 接近、手勢與色彩感測器驅動程式

  • dht --- DHT11 與 DHT22 溫度/濕度感測器

  • onewire --- 1-Wire 匯流排協定

  • ds18x20 --- DS18x20 溫度感測器驅動程式

  • neopixel --- WS2812 / NeoPixel LED 控制

從 Python 擴充內建函式庫

內建模組中有一個子集可以透過在檔案系統中提供一個同名模組來以 Python 程式碼進行擴充。此擴充性適用於下列內建於韌體的 Python 標準函式庫模組:arraybinasciicollectionserrnogziphashlibheapqiojsonosplatformrandomreselectsocketsslstructtimezlib,以及 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