OpenMV MicroPython 函式庫¶
警告
本節重要摘要
MicroPython 提供了與 Python 標準函式庫 功能相對應的內建模組(例如
os、time),以及 MicroPython 專屬模組(例如bluetooth、machine)。大多數 Python 標準函式庫模組僅實作對應 Python 模組功能的一個子集,在少數情況下也會提供一些 MicroPython 專屬的擴充功能(例如
array、os)由於資源限制或其他因素,某些移植版本或韌體版本可能不會包含此處所記載的所有功能。
為了便於擴充,某些內建模組可以透過載入到裝置檔案系統上的 Python 程式碼加以擴充。
本章說明內建於 MicroPython 中的模組(函式與類別函式庫)。本文件大致上力求說明 MicroPython 專案中所實作的所有模組與函式/類別。然而,MicroPython 具有高度可設定性,針對特定開發板/嵌入式系統的每個移植版本可能僅包含可用 MicroPython 函式庫的一個子集。
有鑑於此,請注意本文件所述模組中的某些函式/類別(甚至整個模組)在特定系統上的特定 MicroPython 組建中可能無法使用。要瞭解特定功能是否可用的最佳資訊來源是「General Information」一節,其中包含與特定 MicroPython port 相關的資訊。
在某些移植版本上,您可以在 REPL 輸入以下指令來探索可匯入的內建函式庫::
help('modules')
除了本文件所述的內建函式庫外,許多來自 Python 標準函式庫的模組以及更多對其的 MicroPython 擴充,皆可在 micropython-lib 中找到。
Python 標準函式庫與微型函式庫¶
以下標準 Python 函式庫已被「微型化」以符合 MicroPython 的理念。它們提供該模組的核心功能,並設計為標準 Python 函式庫的即插即用替代品。
array--- 數值資料陣列asyncio--- 非同步 I/O 排程器binascii--- 二進位/ASCII 轉換builtins--- 內建函式與例外cmath--- 複數的數學函式collections--- 集合與容器型別errno--- 系統錯誤碼gc--- 控制垃圾回收器gzip--- gzip 壓縮與解壓縮hashlib--- 雜湊演算法heapq--- 堆積佇列演算法io--- 輸入/輸出串流json--- JSON 編碼與解碼marshal--- Python 物件序列化math--- 數學函式os--- 基本的「作業系統」服務platform--- 存取底層平台的識別資料random--- 產生亂數re--- 簡單的正規表示式select--- 等待一組串流上的事件socket--- socket 模組ssl--- SSL/TLS 模組string.templatelib--- 樣板字串支援struct--- 封裝與解封裝基本資料類型sys--- 系統特定函式time--- 時間相關函式types--- 內建型別的名稱zlib--- zlib 壓縮與解壓縮
OpenMV Cam 函式庫¶
以下各節說明每個 OpenMV 支援開發板上可用的函式庫,包括 MicroPython 專屬的內建模組以及 OpenMV 自家的擴充。
共用模組¶
內建於每個 OpenMV 相機板的韌體中。
bluetooth--- 低階藍牙cryptolib--- 密碼學加密演算法deflate--- deflate 壓縮與解壓縮framebuf--- 影格緩衝區操作machine--- 與硬體相關的函式micropython--- 存取與控制 MicroPython 內部機制network--- 網路設定openamp--- 提供標準的非對稱多處理(Asymmetric Multiprocessing,AMP)支援uctypes--- 以結構化的方式存取二進位資料vfs--- 虛擬檔案系統控制csi--- 相機感測器sensor--- 相機感測器image--- 機器視覺gif--- gif 錄製mjpeg--- mjpeg 錄製audio--- 音訊模組display--- 顯示器驅動程式fir--- 熱感測器驅動程式 (fir == far infrared,遠紅外線)tof--- 飛時測距感測器驅動程式imu--- imu 感測器omv--- OpenMV Cam 資訊crc--- CRC 計算ml--- 機器學習ulab--- 與 numpy 相容的陣列函式庫protocol--- OpenMV 協定通道logging--- 事件記錄senml--- 感測器標記語言 (Sensor Markup Language)
大多數 OpenMV 相機板上隨附的凍結式 Python 輔助模組(驅動程式、網路與工具程式):
網路輔助模組(需要可運作的網路介面):
Web 框架¶
Web 伺服器框架模組。請參閱下方各板專屬章節,瞭解各板包含哪些模組。
移植專屬模組¶
繫結至特定 MCU 系列的模組。請參閱下方各板專屬章節,瞭解各板包含哪些模組。
硬體驅動程式¶
用於一個或多個 OpenMV 支援開發板上隨附之感測器、顯示器與其他周邊裝置的驅動程式。請參閱下方各板專屬章節,瞭解各板包含哪些模組。
dht--- DHT11 與 DHT22 溫濕度感測器onewire--- 1-Wire 匯流排協定ds18x20--- DS18x20 溫度感測器驅動程式neopixel--- 控制 WS2812 / NeoPixel LEDlsm6dsox--- LSM6DSOX 6 軸 IMUbmi270--- BMI270 六軸 IMUbmm150--- BMM150 三軸磁力計lsm9ds1--- LSM9DS1 9 軸 IMUhts221--- HTS221 濕度/溫度感測器lps22h--- LPS22HB/HH 壓力感測器hs3003--- HS3003 濕度/溫度感測器espflash--- ESP32 ROM 開機載入程式韌體燒錄工具imu--- Arduino Nano 33 BLE Sense 的 IMU 輔助模組ssd1306--- OLED 驅動程式tb6612--- TB6612 馬達驅動程式pca9674a--- I2C 擴充器驅動程式tfp410--- DVI/HDMI 控制器ft5x06--- 觸控螢幕驅動程式gt911--- GT911 五點電容式觸控控制器lora--- LoRa 數據機驅動程式apds9960--- 接近、手勢與色彩感測器驅動程式romfs--- ROMFS 輔助工具
各板可用性¶
下方清單顯示每個開發板上隨附哪些移植專屬模組與驅動程式模組。除非另有說明,Common、Frozen Python helpers 與 Networking 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 Tokensmicrodot--- 極簡 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 Tokensmicrodot--- 極簡 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 Tokensmicrodot--- 極簡 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 六軸 IMUdht--- 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 六軸 IMUdht--- 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 周邊與中央裝置 APIbmi270--- BMI270 六軸 IMUbmm150--- BMM150 三軸磁力計lsm9ds1--- LSM9DS1 九軸 IMUhts221--- HTS221 濕度/溫度感測器lps22h--- LPS22HB/HH 壓力感測器hs3003--- HS3003 濕度/溫度感測器apds9960--- 接近、手勢與色彩感測器驅動程式dht--- DHT11 與 DHT22 溫度/濕度感測器onewire--- 1-Wire 匯流排協定ds18x20--- DS18x20 溫度感測器驅動程式neopixel--- WS2812 / NeoPixel LED 控制
從 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。