OpenMV-MicroPython-Bibliotheken

Warnung

Wichtige Zusammenfassung dieses Abschnitts

  • MicroPython stellt eingebaute Module bereit, die die Funktionalität der Python-Standardbibliothek widerspiegeln (z. B. os, time), sowie MicroPython-spezifische Module (z. B. bluetooth, machine).

  • Die meisten Module der Python-Standardbibliothek implementieren eine Teilmenge der Funktionalität des entsprechenden Python-Moduls und stellen in einigen Fällen MicroPython-spezifische Erweiterungen bereit (z. B. array, os)

  • Aufgrund von Ressourcenbeschränkungen oder anderen Einschränkungen enthalten einige Ports oder Firmware-Versionen möglicherweise nicht die gesamte hier dokumentierte Funktionalität.

  • Um Erweiterbarkeit zu ermöglichen, können einige eingebaute Module durch Python-Code erweitert werden, der in das Dateisystem des Geräts geladen wird.

Dieses Kapitel beschreibt Module (Funktions- und Klassenbibliotheken), die in MicroPython integriert sind. Diese Dokumentation strebt im Allgemeinen danach, alle Module und Funktionen/Klassen zu beschreiben, die im MicroPython-Projekt implementiert sind. MicroPython ist jedoch hochgradig konfigurierbar, und jeder Port auf ein bestimmtes Board/eingebettetes System enthält möglicherweise nur eine Teilmenge der verfügbaren MicroPython-Bibliotheken.

Beachten Sie daher bitte, dass einige Funktionen/Klassen in einem Modul (oder sogar das gesamte Modul), die in dieser Dokumentation beschrieben sind, in einem bestimmten MicroPython-Build auf einem bestimmten System möglicherweise nicht verfügbar sind. Die beste Quelle für allgemeine Informationen zur Verfügbarkeit/Nichtverfügbarkeit einer bestimmten Funktion ist der Abschnitt „General Information“, der Informationen zu einem bestimmten MicroPython port enthält.

Auf einigen Ports können Sie die verfügbaren, eingebauten Bibliotheken, die importiert werden können, ermitteln, indem Sie Folgendes an der REPL eingeben:

help('modules')

Über die in dieser Dokumentation beschriebenen eingebauten Bibliotheken hinaus finden Sie viele weitere Module aus der Python-Standardbibliothek sowie weitere MicroPython-Erweiterungen dazu in micropython-lib.

Python-Standardbibliotheken und Mikrobibliotheken

Die folgenden Python-Standardbibliotheken wurden „mikrofiziert“, um zur Philosophie von MicroPython zu passen. Sie stellen die Kernfunktionalität des jeweiligen Moduls bereit und sind als direkter Ersatz für die Python-Standardbibliothek gedacht.

OpenMV-Cam-Bibliotheken

Die folgenden Abschnitte beschreiben die Bibliotheken, die auf jedem von OpenMV unterstützten Board verfügbar sind, einschließlich der MicroPython-spezifischen Built-ins und der eigenen Erweiterungen von OpenMV.

Gemeinsame Module

In die Firmware jedes OpenMV-Kameraboards integriert.

Eingefrorene Python-Hilfsmodule, die auf den meisten OpenMV-Kameraboards ausgeliefert werden (Treiber, Netzwerk und Dienstprogramme):

Netzwerk-Hilfsmodule (erfordern eine funktionierende Netzwerkschnittstelle):

Web-Framework

Webserver-Framework-Module. Welche Boards welches Modul enthalten, finden Sie in den boardspezifischen Abschnitten weiter unten.

Portspezifische Module

Module, die an eine bestimmte MCU-Familie gebunden sind. Welche Boards welches Modul enthalten, finden Sie in den boardspezifischen Abschnitten weiter unten.

Hardware-Treiber

Treiber für Sensoren, Displays und andere Peripheriegeräte, die auf einem oder mehreren von OpenMV unterstützten Boards ausgeliefert werden. Welche Boards welches Modul enthalten, finden Sie in den boardspezifischen Abschnitten weiter unten.

Verfügbarkeit je Board

Die folgenden Listen zeigen, welche portspezifischen und Treibermodule auf jedem Board ausgeliefert werden. Alle Module in Common, Frozen Python helpers und Networking helpers (oben) sind auf jedem Kameraboard verfügbar, sofern nicht anders angegeben.

OpenMV N6

STM32N657 (Cortex-M55 @ 800 MHz) mit einer 1-GHz-On-Chip-NPU mit 600 GOPS INT8. Kombiniert die NPU mit dem Global-Shutter-Sensor PAG7936 (1 MP).

  • pyb — Funktionen rund um das Board

  • stm — spezifische Funktionalität für STM32-MCUs

  • ssd1306 — OLED-Treiber

  • tb6612 — TB6612-Motortreiber

  • jwt — JSON Web Tokens

  • microdot — minimales HTTP-Framework

OpenMV AE3

Alif Ensemble E3 Dual-Core-SoC: Cortex-M55 @ 400 MHz (HP) plus Cortex-M55 @ 160 MHz (HE), mit zwei On-Chip-NPUs (400 MHz / 204 GOPS HP-NPU + 160 MHz / 46 GOPS HE-NPU).

  • alif — Funktionen für Alif Ensemble SoC

  • romfs — ROMFS-Hilfsdienstprogramme

  • pca9674a — PCA9674A-I2C-Expander-Treiber

  • jwt — JSON Web Tokens

  • microdot — minimales HTTP-Framework

OpenMV Cam RT1062

Stromsparendes Board für maschinelles Sehen rund um den NXP i.MX RT1062 (Cortex-M7 @ 600 MHz). Kombiniert USB-C-Highspeed-Netzwerk, Wi-Fi / Bluetooth und 10/100-Ethernet.

  • mimxrt — spezifische Funktionalität für NXP i.MX RT

  • dht — DHT11- und DHT22-Temperatur-/Feuchtigkeitssensoren

  • onewire — 1-Wire-Busprotokoll

  • ds18x20 — DS18x20-Temperatursensortreiber

  • neopixel — Steuerung von WS2812-/NeoPixel-LEDs

  • ssd1306 — OLED-Treiber

  • tb6612 — TB6612-Motortreiber

  • pca9674a — PCA9674A-I2C-Expander-Treiber

  • jwt — JSON Web Tokens

  • microdot — minimales HTTP-Framework

OpenMV Pure Thermal

Vollständiges System-Board für Wärmebildgebung rund um den STM32H743 (Cortex-M7 @ 480 MHz) mit 64 MB externem SDRAM, 32 MB QSPI-Flash, einem Hardware-JPEG-Codec und DVI-/HDMI-Ausgang.

  • pyb — Funktionen rund um das Board

  • stm — spezifische Funktionalität für STM32-MCUs

  • tfp410 — DVI-/HDMI-Serialisierer

  • ft5x06 — kapazitiver Touchscreen-Treiber

  • dht — DHT11- und DHT22-Temperatur-/Feuchtigkeitssensoren

  • onewire — 1-Wire-Busprotokoll

  • ds18x20 — DS18x20-Temperatursensortreiber

  • neopixel — Steuerung von WS2812-/NeoPixel-LEDs

  • ssd1306 — OLED-Treiber

  • tb6612 — TB6612-Motortreiber

OpenMV Cam H7 Plus

STM32H743 (Cortex-M7 @ 480 MHz) mit 32 MB externem SDRAM, 32 MB QSPI-Flash, einem Hardware-JPEG-Codec und dem 5-MP-Kameramodul OV5640.

  • pyb — Funktionen rund um das Board

  • stm — spezifische Funktionalität für STM32-MCUs

  • dht — DHT11- und DHT22-Temperatur-/Feuchtigkeitssensoren

  • onewire — 1-Wire-Busprotokoll

  • ds18x20 — DS18x20-Temperatursensortreiber

  • neopixel — Steuerung von WS2812-/NeoPixel-LEDs

  • ssd1306 — OLED-Treiber

  • tb6612 — TB6612-Motortreiber

OpenMV Cam H7

STM32H743 (Cortex-M7 @ 480 MHz) mit 1 MB internem SRAM, 2 MB internem Flash und einem Hardware-JPEG-Codec.

  • pyb — Funktionen rund um das Board

  • stm — spezifische Funktionalität für STM32-MCUs

  • dht — DHT11- und DHT22-Temperatur-/Feuchtigkeitssensoren

  • onewire — 1-Wire-Busprotokoll

  • ds18x20 — DS18x20-Temperatursensortreiber

  • neopixel — Steuerung von WS2812-/NeoPixel-LEDs

  • ssd1306 — OLED-Treiber

  • tb6612 — TB6612-Motortreiber

OpenMV Cam M7

STM32F765 (Cortex-M7 @ 216 MHz) mit 512 KB internem SRAM und 2 MB internem Flash. Im Paket mit dem OV7725-Sensor.

  • pyb — Funktionen rund um das Board

  • stm — spezifische Funktionalität für STM32-MCUs

  • dht — DHT11- und DHT22-Temperatur-/Feuchtigkeitssensoren

  • onewire — 1-Wire-Busprotokoll

  • ds18x20 — DS18x20-Temperatursensortreiber

  • neopixel — Steuerung von WS2812-/NeoPixel-LEDs

  • ssd1306 — OLED-Treiber

  • tb6612 — TB6612-Motortreiber

OpenMV Cam M4

STM32F427 (Cortex-M4 @ 180 MHz) mit 256 KB internem SRAM und 1 MB internem Flash. Im Paket mit dem OV7725-Sensor.

  • pyb — Funktionen rund um das Board

  • stm — spezifische Funktionalität für STM32-MCUs

  • dht — DHT11- und DHT22-Temperatur-/Feuchtigkeitssensoren

  • onewire — 1-Wire-Busprotokoll

  • ds18x20 — DS18x20-Temperatursensortreiber

  • neopixel — Steuerung von WS2812-/NeoPixel-LEDs

  • ssd1306 — OLED-Treiber

  • tb6612 — TB6612-Motortreiber

Arduino Nicla Vision

22,86 × 22,86 mm großes Board für maschinelles Sehen rund um den Dual-Core-SoC STM32H747AII6: Cortex-M7 @ 400 MHz plus Cortex-M4 @ 200 MHz.

  • pyb — Funktionen rund um das Board

  • stm — spezifische Funktionalität für STM32-MCUs

  • lsm6dsox — LSM6DSOX 6-Achsen-IMU

  • dht — DHT11- und DHT22-Temperatur-/Feuchtigkeitssensoren

  • ds18x20 — DS18x20-Temperatursensortreiber

  • onewire — 1-Wire-Busprotokoll

  • neopixel — Steuerung von WS2812-/NeoPixel-LEDs

Arduino Portenta H7

66 × 25 mm großes Industrie-Entwicklungsboard rund um den Dual-Core-SoC STM32H747XI: Cortex-M7 @ 400 MHz plus Cortex-M4 @ 200 MHz.

  • pyb — Funktionen rund um das Board

  • stm — spezifische Funktionalität für STM32-MCUs

  • dht — DHT11- und DHT22-Temperatur-/Feuchtigkeitssensoren

  • ds18x20 — DS18x20-Temperatursensortreiber

  • onewire — 1-Wire-Busprotokoll

  • neopixel — Steuerung von WS2812-/NeoPixel-LEDs

  • lora — LoRa-Modemtreiber

  • ssd1306 — OLED-Treiber

  • tb6612 — TB6612-Motortreiber

Arduino Giga R1 WiFi

101 × 53 mm großes Board im Mega-Formfaktor rund um den Dual-Core-SoC STM32H747XI: Cortex-M7 @ 480 MHz plus Cortex-M4 @ 240 MHz, mit einem On-Board-Touchscreen mit 800x480.

  • pyb — Funktionen rund um das Board

  • stm — spezifische Funktionalität für STM32-MCUs

  • dht — DHT11- und DHT22-Temperatur-/Feuchtigkeitssensoren

  • onewire — 1-Wire-Busprotokoll

  • neopixel — Steuerung von WS2812-/NeoPixel-LEDs

  • gt911 — GT911 kapazitiver 5-Punkt-Touch-Controller

  • ft5x06 — kapazitiver Touchscreen-Treiber

Arduino Nano RP2040 Connect

RP2040-basiertes Board im Nano-Formfaktor mit dem U-blox-NINA-W102-Wi-Fi-/Bluetooth-Modul. Wird nicht mehr aktiv unterstützt; die letzte OpenMV-Firmware-Version für dieses Board wird für Archivzwecke aufbewahrt.

  • rp2 — RP2040-spezifische PIO-/DMA-/Flash-Hilfsmodule

  • espflash — ESP32-ROM-Bootloader-Firmware-Flasher

  • lsm6dsox — LSM6DSOX 6-Achsen-IMU

  • dht — DHT11- und DHT22-Temperatur-/Feuchtigkeitssensoren

  • onewire — 1-Wire-Busprotokoll

  • ds18x20 — DS18x20-Temperatursensortreiber

  • neopixel — Steuerung von WS2812-/NeoPixel-LEDs

Arduino Nano 33 BLE Sense

Nordic-nRF52840-Board im Nano-Formfaktor mit der On-Board-Arduino-Sensor-Suite. Wird nicht mehr aktiv unterstützt; die letzte OpenMV-Firmware-Version für dieses Board wird für Archivzwecke aufbewahrt.

  • ubluepy — Bluetooth-LE-Peripherie- und -Central-API auf dem Nordic SoftDevice

  • bmi270 — BMI270 6-Achsen-IMU

  • bmm150 — BMM150 3-Achsen-Magnetometer

  • lsm9ds1 — LSM9DS1 9-Achsen-IMU

  • hts221 — HTS221 Feuchtigkeits-/Temperatursensor

  • lps22h — LPS22HB/HH Drucksensor

  • hs3003 — HS3003 Feuchtigkeits-/Temperatursensor

  • apds9960 — Treiber für Näherungs-, Gesten- und Farbsensor

  • dht — DHT11- und DHT22-Temperatur-/Feuchtigkeitssensoren

  • onewire — 1-Wire-Busprotokoll

  • ds18x20 — DS18x20-Temperatursensortreiber

  • neopixel — Steuerung von WS2812-/NeoPixel-LEDs

Eingebaute Bibliotheken aus Python erweitern

Eine Teilmenge der eingebauten Module kann durch Python-Code erweitert werden, indem ein Modul mit demselben Namen im Dateisystem bereitgestellt wird. Diese Erweiterbarkeit gilt für die folgenden Module der Python-Standardbibliothek, die in die Firmware integriert sind: array, binascii, collections, errno, gzip, hashlib, heapq, io, json, os, platform, random, re, select, socket, ssl, struct, time, zlib sowie für das MicroPython-spezifische machine-Modul. Alle anderen eingebauten Module können nicht aus dem Dateisystem erweitert werden.

Dies ermöglicht es dem Benutzer, eine erweiterte Implementierung einer eingebauten Bibliothek bereitzustellen (etwa um zusätzliche CPython-Kompatibilität oder fehlende Funktionalität bereitzustellen). Dies wird ausgiebig in micropython-lib verwendet, siehe Paketverwaltung für weitere Informationen. Das Dateisystem-Modul führt typischerweise einen Wildcard-Import des eingebauten Moduls durch, um alle Globals (Klassen, Funktionen und Variablen) vom eingebauten Modul zu erben.

In MicroPython v1.21.0 und höher kann das Dateisystem-Modul, um zu verhindern, dass es sich selbst importiert, einen Import des eingebauten Moduls erzwingen, indem sys.path während des Imports vorübergehend geleert wird. Um beispielsweise das time-Modul aus Python zu erweitern, würde eine Datei namens time.py im Dateisystem Folgendes tun:

_path = sys.path
sys.path = ()
try:
  from time import *
finally:
  sys.path = _path
  del _path

def extra_method():
  pass

Das Ergebnis ist, dass time.py alle Globals des eingebauten time-Moduls enthält, aber extra_method hinzufügt.

In früheren Versionen von MicroPython können Sie einen Import eines eingebauten Moduls erzwingen, indem Sie ein u an den Anfang seines Namens anhängen. Zum Beispiel import utime statt import time. Beispielsweise könnte time.py im Dateisystem so aussehen:

from utime import *

def extra_method():
  pass

Diese Methode wird weiterhin unterstützt, aber die oben beschriebene sys.path-Methode wird nun bevorzugt, da das u-Präfix in einer zukünftigen Version von MicroPython aus den Namen der eingebauten Module entfernt wird.

Außer wenn ausdrücklich die Verwendung des eingebauten Moduls erzwungen werden muss, sollte Code immer import module statt import umodule verwenden.