OpenMV MicroPython-bibliotek¶
Varning
Viktig sammanfattning av detta avsnitt
MicroPython tillhandahåller inbyggda moduler som speglar funktionaliteten i Pythons standardbibliotek (t.ex.
os,time), liksom MicroPython-specifika moduler (t.ex.bluetooth,machine).De flesta moduler i Pythons standardbibliotek implementerar en delmängd av funktionaliteten i motsvarande Python-modul, och i några fall tillhandahåller de vissa MicroPython-specifika tillägg (t.ex.
array,os)På grund av resursbegränsningar eller andra begränsningar kanske vissa portar eller firmwareversioner inte inkluderar all funktionalitet som dokumenteras här.
För att möjliggöra utbyggbarhet kan vissa inbyggda moduler utökas från Python-kod som laddas in i enhetens filsystem.
Det här kapitlet beskriver moduler (funktions- och klassbibliotek) som är inbyggda i MicroPython. Den här dokumentationen strävar generellt efter att beskriva alla moduler och funktioner/klasser som är implementerade i MicroPython-projektet. MicroPython är dock i hög grad konfigurerbart, och varje port till ett visst kort/inbyggt system kan inkludera endast en delmängd av de tillgängliga MicroPython-biblioteken.
Med det i åtanke, var medveten om att vissa funktioner/klasser i en modul (eller till och med hela modulen) som beskrivs i den här dokumentationen kan vara otillgängliga i en viss build av MicroPython på ett visst system. Den bästa platsen att hitta allmän information om tillgängligheten/otillgängligheten för en viss funktion är avsnittet ”General Information”, som innehåller information som rör en specifik MicroPython port.
På vissa portar kan du upptäcka de tillgängliga inbyggda biblioteken som kan importeras genom att ange följande vid REPL
help('modules')
Utöver de inbyggda biblioteken som beskrivs i den här dokumentationen kan många fler moduler från Pythons standardbibliotek, liksom ytterligare MicroPython-tillägg till det, hittas i micropython-lib.
Pythons standardbibliotek och mikrobibliotek¶
Följande Python-standardbibliotek har ”mikro-ifierats” för att passa in i MicroPythons filosofi. De tillhandahåller modulens kärnfunktionalitet och är avsedda att vara en direkt ersättning för Pythons standardbibliotek.
array— arrayer av numerisk dataasyncio— asynkron I/O-schemaläggarebinascii— binär/ASCII-konverteringarbuiltins— inbyggda funktioner och undantagcmath— matematiska funktioner för komplexa talcollections— samlings- och behållartypererrno— systemfelkodergc— styr skräpsamlarengzip— gzip-komprimering och dekomprimeringhashlib— hashalgoritmerheapq— heap-köalgoritmio— in-/utströmmarjson— JSON-kodning och -avkodningmarshal— Serialisering av Python-objektmath— matematiska funktioneros— grundläggande ”operativsystemstjänster”platform— åtkomst till den underliggande plattformens identifieringsdatarandom— generera slumptalre— enkla reguljära uttryckselect— vänta på händelser på en uppsättning strömmarsocket— socket-modulssl— SSL/TLS-modulstring.templatelib— Stöd för mallsträngarstruct— packa och packa upp primitiva datatypersys— systemspecifika funktionertime— tidsrelaterade funktionertypes— namn för inbyggda typerzlib— zlib-komprimering och -dekomprimering
OpenMV Cam-bibliotek¶
Följande avsnitt beskriver biblioteken som är tillgängliga på varje OpenMV-stött kort, inklusive både de MicroPython-specifika inbyggda modulerna och OpenMV:s egna tillägg.
Gemensamma moduler¶
Inbyggda i firmware på varje OpenMV-kameramodell.
bluetooth— lågnivå-Bluetoothcryptolib— kryptografiska chifferdeflate— deflate-komprimering och -dekomprimeringframebuf— manipulering av bildbuffertmachine— funktioner relaterade till hårdvaranmicropython— åtkomst till och kontroll av MicroPython-interna delarnetwork— nätverkskonfigurationopenamp— ger stöd för standardiserad asymmetrisk multiprocessing (AMP)uctypes— åtkomst till binära data på ett strukturerat sättvfs— styrning av virtuellt filsystemcsi— kamerasensorersensor— kamerasensorimage— maskinseendegif— gif-inspelningmjpeg— mjpeg-inspelningaudio— Ljudmoduldisplay— display-drivrutinfir— drivrutin för värmesensor (fir == far infrared)tof— drivrutin för time-of-flight-sensorimu— imu-sensoromv— Information om OpenMV Camcrc— CRC-beräkningml— Maskininlärningulab— numpy-kompatibelt matrisbibliotekprotocol— OpenMV-protokollkanalerlogging— händelseloggningsenml— Sensor Markup Language
Frusna Python-hjälpmoduler som levereras med de flesta OpenMV-kameramodeller (drivrutiner, nätverk och verktyg):
aioble— Asynkron BLErpc— rpc-bibliotekrtsp— rtsp-bibliotekmqtt— Enkel MQTT-klientrequests— HTTP-klientmutex— mutex-modulpid— Proportionell-Integrerande-Deriverande regulatorbno055— BNO055 IMU-drivrutinmodbus— Modbus RTU slavprotokollvl53l1x— Drivrutin för VL53L1X ToF-avståndssensor
Nätverkshjälpmoduler (kräver ett fungerande nätverksgränssnitt):
Webbramverk¶
Moduler för webbserverramverk. Se de kortspecifika avsnitten nedan för vilka kort som inkluderar respektive modul.
Portspecifika moduler¶
Moduler kopplade till en specifik MCU-familj. Se de kortspecifika avsnitten nedan för vilka kort som inkluderar respektive modul.
Hårdvarudrivrutiner¶
Drivrutiner för sensorer, skärmar och annan kringutrustning som levereras med ett eller flera OpenMV-stödda kort. Se de kortspecifika avsnitten nedan för vilka kort som inkluderar respektive modul.
dht— DHT11- och DHT22-temperatur-/fuktighetssensoreronewire— 1-Wire-bussprotokollds18x20— drivrutin för DS18x20-temperatursensorneopixel— styrning av WS2812-/NeoPixel-lysdioderlsm6dsox— LSM6DSOX 6-axlig IMUbmi270— BMI270 6-axlig IMUbmm150— BMM150 3-axlig magnetometerlsm9ds1— LSM9DS1 9-axlig IMUhts221— HTS221 fukt-/temperatursensorlps22h— LPS22HB/HH trycksensorhs3003— HS3003 fuktighets-/temperatursensorespflash— flashare för ESP32 ROM-startladdarens fasta programvaraimu— IMU-hjälpmodul för Arduino Nano 33 BLE Sensessd1306— OLED-drivrutintb6612— TB6612 motordrivrutinpca9674a— I2C-expanderdrivrutintfp410— DVI/HDMI-styrenhetft5x06— drivrutin för pekskärmgt911— GT911 kapacitiv pekstyrenhet med 5 punkterlora— LoRa-modemdrivrutinapds9960— drivrutin för närhets-, gest- och färgsensorromfs— ROMFS-hjälpverktyg
Tillgänglighet per kort¶
Listorna nedan visar vilka portspecifika moduler och drivrutinsmoduler som levereras på varje kort. Alla moduler i Gemensamma moduler, Frusna Python-hjälpmoduler och Nätverkshjälpmoduler (ovan) är tillgängliga på varje kameramodell om inget annat anges.
OpenMV N6
STM32N657 (Cortex-M55 @ 800 MHz) med en 1 GHz NPU på chipet klassad till 600 GOPS INT8. Kombinerar NPU:n med PAG7936 1 MP global-shutter-sensorn.
pyb— funktioner relaterade till kortetstm— funktionalitet specifik för STM32-MCU:erssd1306— OLED-drivrutintb6612— TB6612 motordrivrutinjwt— JSON Web Tokensmicrodot— minimalt HTTP-ramverk
OpenMV AE3
Alif Ensemble E3 tvåkärnig SoC: Cortex-M55 @ 400 MHz (HP) plus Cortex-M55 @ 160 MHz (HE), med två NPU:er på chipet (400 MHz / 204 GOPS HP-NPU + 160 MHz / 46 GOPS HE-NPU).
alif— funktioner för Alif Ensemble SoCromfs— ROMFS-hjälpverktygpca9674a— PCA9674A I2C-expanderdrivrutinjwt— JSON Web Tokensmicrodot— minimalt HTTP-ramverk
OpenMV Cam RT1062
Energisnålt maskinseendekort baserat på NXP i.MX RT1062 (Cortex-M7 @ 600 MHz). Kombinerar USB-C-höghastighetsnätverk, Wi-Fi / Bluetooth och 10/100 Ethernet.
mimxrt— funktionalitet specifik för NXP i.MX RTdht— DHT11- och DHT22-temperatur-/fuktsensoreronewire— 1-Wire-bussprotokollds18x20— DS18x20-temperatursensordrivrutinneopixel— styrning av WS2812 / NeoPixel-lysdioderssd1306— OLED-drivrutintb6612— TB6612 motordrivrutinpca9674a— PCA9674A I2C-expanderdrivrutinjwt— JSON Web Tokensmicrodot— minimalt HTTP-ramverk
OpenMV Pure Thermal
Komplett värmekamerakort baserat på STM32H743 (Cortex-M7 @ 480 MHz) med 64 MB externt SDRAM, 32 MB QSPI-flashminne, en hårdvaru-JPEG-codec och DVI/HDMI-utgång.
pyb— funktioner relaterade till kortetstm— funktionalitet specifik för STM32-MCU:ertfp410— DVI/HDMI-serialiserareft5x06— drivrutin för kapacitiv pekskärmdht— DHT11- och DHT22-temperatur-/fuktsensoreronewire— 1-Wire-bussprotokollds18x20— DS18x20-temperatursensordrivrutinneopixel— styrning av WS2812 / NeoPixel-lysdioderssd1306— OLED-drivrutintb6612— TB6612 motordrivrutin
OpenMV Cam H7 Plus
STM32H743 (Cortex-M7 @ 480 MHz) med 32 MB externt SDRAM, 32 MB QSPI-flashminne, en hårdvaru-JPEG-codec och OV5640 5MP-kameramodulen.
pyb— funktioner relaterade till kortetstm— funktionalitet specifik för STM32-MCU:erdht— DHT11- och DHT22-temperatur-/fuktsensoreronewire— 1-Wire-bussprotokollds18x20— DS18x20-temperatursensordrivrutinneopixel— styrning av WS2812 / NeoPixel-lysdioderssd1306— OLED-drivrutintb6612— TB6612 motordrivrutin
OpenMV Cam H7
STM32H743 (Cortex-M7 @ 480 MHz) med 1 MB internt SRAM, 2 MB internt flashminne och en hårdvaru-JPEG-codec.
pyb— funktioner relaterade till kortetstm— funktionalitet specifik för STM32-MCU:erdht— DHT11- och DHT22-temperatur-/fuktsensoreronewire— 1-Wire-bussprotokollds18x20— DS18x20-temperatursensordrivrutinneopixel— styrning av WS2812 / NeoPixel-lysdioderssd1306— OLED-drivrutintb6612— TB6612 motordrivrutin
OpenMV Cam M7
STM32F765 (Cortex-M7 @ 216 MHz) med 512 KB internt SRAM och 2 MB internt flashminne. Levereras med OV7725-sensorn.
pyb— funktioner relaterade till kortetstm— funktionalitet specifik för STM32-MCU:erdht— DHT11- och DHT22-temperatur-/fuktsensoreronewire— 1-Wire-bussprotokollds18x20— DS18x20-temperatursensordrivrutinneopixel— styrning av WS2812 / NeoPixel-lysdioderssd1306— OLED-drivrutintb6612— TB6612 motordrivrutin
OpenMV Cam M4
STM32F427 (Cortex-M4 @ 180 MHz) med 256 KB internt SRAM och 1 MB internt flashminne. Levereras med OV7725-sensorn.
pyb— funktioner relaterade till kortetstm— funktionalitet specifik för STM32-MCU:erdht— DHT11- och DHT22-temperatur-/fuktsensoreronewire— 1-Wire-bussprotokollds18x20— DS18x20-temperatursensordrivrutinneopixel— styrning av WS2812 / NeoPixel-lysdioderssd1306— OLED-drivrutintb6612— TB6612 motordrivrutin
Arduino Nicla Vision
22,86 × 22,86 mm maskinseendekort baserat på STM32H747AII6 tvåkärnig SoC: Cortex-M7 @ 400 MHz plus Cortex-M4 @ 200 MHz.
pyb— funktioner relaterade till kortetstm— funktionalitet specifik för STM32-MCU:erlsm6dsox— LSM6DSOX 6-axlig IMUdht— DHT11- och DHT22-temperatur-/fuktsensorerds18x20— DS18x20-temperatursensordrivrutinonewire— 1-Wire-bussprotokollneopixel— styrning av WS2812 / NeoPixel-lysdioder
Arduino Portenta H7
66 × 25 mm industriellt utvecklingskort baserat på STM32H747XI tvåkärnig SoC: Cortex-M7 @ 400 MHz plus Cortex-M4 @ 200 MHz.
pyb— funktioner relaterade till kortetstm— funktionalitet specifik för STM32-MCU:erdht— DHT11- och DHT22-temperatur-/fuktsensorerds18x20— DS18x20-temperatursensordrivrutinonewire— 1-Wire-bussprotokollneopixel— styrning av WS2812 / NeoPixel-lysdioderlora— LoRa-modemdrivrutinssd1306— OLED-drivrutintb6612— TB6612 motordrivrutin
Arduino Giga R1 WiFi
101 × 53 mm kort i Mega-formfaktor baserat på STM32H747XI tvåkärnig SoC: Cortex-M7 @ 480 MHz plus Cortex-M4 @ 240 MHz, med en inbyggd 800x480 pekskärm.
pyb— funktioner relaterade till kortetstm— funktionalitet specifik för STM32-MCU:erdht— DHT11- och DHT22-temperatur-/fuktsensoreronewire— 1-Wire-bussprotokollneopixel— styrning av WS2812 / NeoPixel-lysdiodergt911— GT911 5-punkts kapacitiv pekstyrenhetft5x06— drivrutin för kapacitiv pekskärm
Arduino Nano RP2040 Connect
RP2040-baserat kort i Nano-formfaktor med U-blox NINA-W102 Wi-Fi/Bluetooth-modulen. Stöds inte längre aktivt; den senaste OpenMV-firmwareversionen för det här kortet behålls för arkivbruk.
rp2— RP2040-specifika PIO-/DMA-/flashhjälpmodulerespflash— ESP32 ROM-startladdarens firmwareflasharelsm6dsox— LSM6DSOX 6-axlig IMUdht— DHT11- och DHT22-temperatur-/fuktsensoreronewire— 1-Wire-bussprotokollds18x20— DS18x20-temperatursensordrivrutinneopixel— styrning av WS2812 / NeoPixel-lysdioder
Arduino Nano 33 BLE Sense
Nordic nRF52840-kort i Nano-formfaktor med den inbyggda Arduino-sensoruppsättningen. Stöds inte längre aktivt; den senaste OpenMV-firmwareversionen för det här kortet behålls för arkivbruk.
ubluepy— API för Bluetooth LE-kringenhet och central enhet på Nordic SoftDevicebmi270— BMI270 6-axlig IMUbmm150— BMM150 3-axlig magnetometerlsm9ds1— LSM9DS1 9-axlig IMUhts221— HTS221 fukt-/temperatursensorlps22h— LPS22HB/HH trycksensorhs3003— HS3003 fukt-/temperatursensorapds9960— drivrutin för närhets-, gest- och färgsensordht— DHT11- och DHT22-temperatur-/fuktsensoreronewire— 1-Wire-bussprotokollds18x20— DS18x20-temperatursensordrivrutinneopixel— styrning av WS2812 / NeoPixel-lysdioder
Utöka inbyggda bibliotek från Python¶
En delmängd av de inbyggda modulerna kan utökas med Python-kod genom att tillhandahålla en modul med samma namn i filsystemet. Den här utbyggbarheten gäller följande moduler i Pythons standardbibliotek som är inbyggda i firmware: array, binascii, collections, errno, gzip, hashlib, heapq, io, json, os, platform, random, re, select, socket, ssl, struct, time, zlib, liksom den MicroPython-specifika machine-modulen. Alla andra inbyggda moduler kan inte utökas från filsystemet.
Detta gör att användaren kan tillhandahålla en utökad implementering av ett inbyggt bibliotek (kanske för att tillhandahålla ytterligare CPython-kompatibilitet eller saknad funktionalitet). Detta används i stor utsträckning i micropython-lib, se Pakethantering för mer information. Filsystemsmodulen gör vanligtvis en wildcard-import av den inbyggda modulen för att ärva alla globala variabler (klasser, funktioner och variabler) från den inbyggda modulen.
I MicroPython v1.21.0 och senare kan filsystemsmodulen tvinga fram en import av den inbyggda modulen genom att tillfälligt tömma sys.path under importen, för att förhindra att den importerar sig själv. För att till exempel utöka modulen time från Python skulle en fil med namnet time.py på filsystemet göra följande:
_path = sys.path
sys.path = ()
try:
from time import *
finally:
sys.path = _path
del _path
def extra_method():
pass
Resultatet är att time.py innehåller alla globala variabler från den inbyggda time-modulen, men lägger till extra_method.
I tidigare versioner av MicroPython kan du tvinga fram en import av en inbyggd modul genom att lägga till ett u i början av dess namn. Till exempel import utime istället för import time. Till exempel skulle time.py på filsystemet kunna se ut så här:
from utime import *
def extra_method():
pass
Detta sätt stöds fortfarande, men sys.path-metoden som beskrivs ovan föredras nu, eftersom u-prefixet kommer att tas bort från namnen på inbyggda moduler i en framtida version av MicroPython.
Förutom när det specifikt behöver tvinga fram användningen av den inbyggda modulen bör kod alltid använda import module istället för import umodule.