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.
array— Arrays numerischer Datenasyncio— asynchroner I/O-Schedulerbinascii— Binär/ASCII-Konvertierungenbuiltins— eingebaute Funktionen und Ausnahmencmath— mathematische Funktionen für komplexe Zahlencollections— Sammlungs- und Containertypenerrno— Systemfehlercodesgc— Steuerung des Garbage Collectorsgzip— gzip-Kompression & -Dekompressionhashlib— Hashing-Algorithmenheapq— Heap-Queue-Algorithmusio— Ein- und Ausgabeströmejson— JSON-Kodierung und -Dekodierungmarshal— Serialisierung von Python-Objektenmath— mathematische Funktionenos— grundlegende „Betriebssystem“-Diensteplatform— Zugriff auf die Identifikationsdaten der zugrunde liegenden Plattformrandom— Zufallszahlen erzeugenre— einfache reguläre Ausdrückeselect— auf Ereignisse auf einer Menge von Streams wartensocket— socket-Modulssl— SSL/TLS-Modulstring.templatelib— Unterstützung für Template-Stringsstruct— Packen und Entpacken primitiver Datentypensys— systemspezifische Funktionentime— zeitbezogene Funktionentypes— Namen für eingebaute Typenzlib— zlib-Komprimierung & -Dekomprimierung
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.
bluetooth— Low-Level-Bluetoothcryptolib— kryptografische Chiffrendeflate— Deflate-Komprimierung und -Dekomprimierungframebuf— Framebuffer-Manipulationmachine— Funktionen rund um die Hardwaremicropython— Zugriff auf und Steuerung von MicroPython-Internanetwork— Netzwerkkonfigurationopenamp— bietet Standardunterstützung für asymmetrisches Multiprocessing (AMP)uctypes— Zugriff auf Binärdaten in strukturierter Formvfs— Steuerung des virtuellen Dateisystemscsi— Kamerasensorensensor— Kamerasensorimage— maschinelles Sehengif— GIF-Aufnahmemjpeg— mjpeg-Aufnahmeaudio— Audio-Moduldisplay— Display-Treiberfir— Wärmesensortreiber (fir == far infrared)tof— Time-of-Flight-Sensortreiberimu— IMU-Sensoromv— OpenMV-Cam-Informationencrc— CRC-Berechnungml— Maschinelles Lernenulab— numpy-kompatible Array-Bibliothekprotocol— OpenMV-Protokollkanälelogging— Ereignisprotokollierungsenml— Sensor Markup Language
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.
dht— DHT11- und DHT22-Temperatur-/Feuchtigkeitssensorenonewire— 1-Wire-Busprotokollds18x20— DS18x20-Temperatursensortreiberneopixel— Ansteuerung von WS2812 / NeoPixel LEDslsm6dsox— LSM6DSOX 6-Achsen-IMUbmi270— BMI270 6-Achsen-IMUbmm150— BMM150 3-Achsen-Magnetometerlsm9ds1— LSM9DS1 9-Achsen-IMUhts221— HTS221 Feuchtigkeits-/Temperatursensorlps22h— LPS22HB/HH-Drucksensorhs3003— HS3003-Feuchte-/Temperatursensorespflash— ESP32-ROM-Bootloader-Firmware-Flasherimu— IMU-Hilfsmodul für das Arduino Nano 33 BLE Sensessd1306— OLED-Treibertb6612— TB6612-Motortreiberpca9674a— I2C-Expander-Treibertfp410— DVI/HDMI-Controllerft5x06— Touchscreen-Treibergt911— GT911 kapazitiver 5-Punkt-Touch-Controllerlora— LoRa-Modemtreiberapds9960— Treiber für Näherungs-, Gesten- und Farbsensorromfs— ROMFS-Hilfsprogramme
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 Boardstm— spezifische Funktionalität für STM32-MCUsssd1306— OLED-Treibertb6612— TB6612-Motortreiberjwt— JSON Web Tokensmicrodot— 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 SoCromfs— ROMFS-Hilfsdienstprogrammepca9674a— PCA9674A-I2C-Expander-Treiberjwt— JSON Web Tokensmicrodot— 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 RTdht— DHT11- und DHT22-Temperatur-/Feuchtigkeitssensorenonewire— 1-Wire-Busprotokollds18x20— DS18x20-Temperatursensortreiberneopixel— Steuerung von WS2812-/NeoPixel-LEDsssd1306— OLED-Treibertb6612— TB6612-Motortreiberpca9674a— PCA9674A-I2C-Expander-Treiberjwt— JSON Web Tokensmicrodot— 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 Boardstm— spezifische Funktionalität für STM32-MCUstfp410— DVI-/HDMI-Serialisiererft5x06— kapazitiver Touchscreen-Treiberdht— DHT11- und DHT22-Temperatur-/Feuchtigkeitssensorenonewire— 1-Wire-Busprotokollds18x20— DS18x20-Temperatursensortreiberneopixel— Steuerung von WS2812-/NeoPixel-LEDsssd1306— OLED-Treibertb6612— 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 Boardstm— spezifische Funktionalität für STM32-MCUsdht— DHT11- und DHT22-Temperatur-/Feuchtigkeitssensorenonewire— 1-Wire-Busprotokollds18x20— DS18x20-Temperatursensortreiberneopixel— Steuerung von WS2812-/NeoPixel-LEDsssd1306— OLED-Treibertb6612— 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 Boardstm— spezifische Funktionalität für STM32-MCUsdht— DHT11- und DHT22-Temperatur-/Feuchtigkeitssensorenonewire— 1-Wire-Busprotokollds18x20— DS18x20-Temperatursensortreiberneopixel— Steuerung von WS2812-/NeoPixel-LEDsssd1306— OLED-Treibertb6612— 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 Boardstm— spezifische Funktionalität für STM32-MCUsdht— DHT11- und DHT22-Temperatur-/Feuchtigkeitssensorenonewire— 1-Wire-Busprotokollds18x20— DS18x20-Temperatursensortreiberneopixel— Steuerung von WS2812-/NeoPixel-LEDsssd1306— OLED-Treibertb6612— 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 Boardstm— spezifische Funktionalität für STM32-MCUsdht— DHT11- und DHT22-Temperatur-/Feuchtigkeitssensorenonewire— 1-Wire-Busprotokollds18x20— DS18x20-Temperatursensortreiberneopixel— Steuerung von WS2812-/NeoPixel-LEDsssd1306— OLED-Treibertb6612— 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 Boardstm— spezifische Funktionalität für STM32-MCUslsm6dsox— LSM6DSOX 6-Achsen-IMUdht— DHT11- und DHT22-Temperatur-/Feuchtigkeitssensorends18x20— DS18x20-Temperatursensortreiberonewire— 1-Wire-Busprotokollneopixel— 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 Boardstm— spezifische Funktionalität für STM32-MCUsdht— DHT11- und DHT22-Temperatur-/Feuchtigkeitssensorends18x20— DS18x20-Temperatursensortreiberonewire— 1-Wire-Busprotokollneopixel— Steuerung von WS2812-/NeoPixel-LEDslora— LoRa-Modemtreiberssd1306— OLED-Treibertb6612— 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 Boardstm— spezifische Funktionalität für STM32-MCUsdht— DHT11- und DHT22-Temperatur-/Feuchtigkeitssensorenonewire— 1-Wire-Busprotokollneopixel— Steuerung von WS2812-/NeoPixel-LEDsgt911— GT911 kapazitiver 5-Punkt-Touch-Controllerft5x06— 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-Hilfsmoduleespflash— ESP32-ROM-Bootloader-Firmware-Flasherlsm6dsox— LSM6DSOX 6-Achsen-IMUdht— DHT11- und DHT22-Temperatur-/Feuchtigkeitssensorenonewire— 1-Wire-Busprotokollds18x20— DS18x20-Temperatursensortreiberneopixel— 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 SoftDevicebmi270— BMI270 6-Achsen-IMUbmm150— BMM150 3-Achsen-Magnetometerlsm9ds1— LSM9DS1 9-Achsen-IMUhts221— HTS221 Feuchtigkeits-/Temperatursensorlps22h— LPS22HB/HH Drucksensorhs3003— HS3003 Feuchtigkeits-/Temperatursensorapds9960— Treiber für Näherungs-, Gesten- und Farbsensordht— DHT11- und DHT22-Temperatur-/Feuchtigkeitssensorenonewire— 1-Wire-Busprotokollds18x20— DS18x20-Temperatursensortreiberneopixel— 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.