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.

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.

Frusna Python-hjälpmoduler som levereras med de flesta OpenMV-kameramodeller (drivrutiner, nätverk och verktyg):

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.

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 kortet

  • stm — funktionalitet specifik för STM32-MCU:er

  • ssd1306 — OLED-drivrutin

  • tb6612 — TB6612 motordrivrutin

  • jwt — JSON Web Tokens

  • microdot — 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 SoC

  • romfs — ROMFS-hjälpverktyg

  • pca9674a — PCA9674A I2C-expanderdrivrutin

  • jwt — JSON Web Tokens

  • microdot — 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 RT

  • dht — DHT11- och DHT22-temperatur-/fuktsensorer

  • onewire — 1-Wire-bussprotokoll

  • ds18x20 — DS18x20-temperatursensordrivrutin

  • neopixel — styrning av WS2812 / NeoPixel-lysdioder

  • ssd1306 — OLED-drivrutin

  • tb6612 — TB6612 motordrivrutin

  • pca9674a — PCA9674A I2C-expanderdrivrutin

  • jwt — JSON Web Tokens

  • microdot — 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 kortet

  • stm — funktionalitet specifik för STM32-MCU:er

  • tfp410 — DVI/HDMI-serialiserare

  • ft5x06 — drivrutin för kapacitiv pekskärm

  • dht — DHT11- och DHT22-temperatur-/fuktsensorer

  • onewire — 1-Wire-bussprotokoll

  • ds18x20 — DS18x20-temperatursensordrivrutin

  • neopixel — styrning av WS2812 / NeoPixel-lysdioder

  • ssd1306 — OLED-drivrutin

  • tb6612 — 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 kortet

  • stm — funktionalitet specifik för STM32-MCU:er

  • dht — DHT11- och DHT22-temperatur-/fuktsensorer

  • onewire — 1-Wire-bussprotokoll

  • ds18x20 — DS18x20-temperatursensordrivrutin

  • neopixel — styrning av WS2812 / NeoPixel-lysdioder

  • ssd1306 — OLED-drivrutin

  • tb6612 — 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 kortet

  • stm — funktionalitet specifik för STM32-MCU:er

  • dht — DHT11- och DHT22-temperatur-/fuktsensorer

  • onewire — 1-Wire-bussprotokoll

  • ds18x20 — DS18x20-temperatursensordrivrutin

  • neopixel — styrning av WS2812 / NeoPixel-lysdioder

  • ssd1306 — OLED-drivrutin

  • tb6612 — 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 kortet

  • stm — funktionalitet specifik för STM32-MCU:er

  • dht — DHT11- och DHT22-temperatur-/fuktsensorer

  • onewire — 1-Wire-bussprotokoll

  • ds18x20 — DS18x20-temperatursensordrivrutin

  • neopixel — styrning av WS2812 / NeoPixel-lysdioder

  • ssd1306 — OLED-drivrutin

  • tb6612 — 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 kortet

  • stm — funktionalitet specifik för STM32-MCU:er

  • dht — DHT11- och DHT22-temperatur-/fuktsensorer

  • onewire — 1-Wire-bussprotokoll

  • ds18x20 — DS18x20-temperatursensordrivrutin

  • neopixel — styrning av WS2812 / NeoPixel-lysdioder

  • ssd1306 — OLED-drivrutin

  • tb6612 — 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 kortet

  • stm — funktionalitet specifik för STM32-MCU:er

  • lsm6dsox — LSM6DSOX 6-axlig IMU

  • dht — DHT11- och DHT22-temperatur-/fuktsensorer

  • ds18x20 — DS18x20-temperatursensordrivrutin

  • onewire — 1-Wire-bussprotokoll

  • neopixel — 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 kortet

  • stm — funktionalitet specifik för STM32-MCU:er

  • dht — DHT11- och DHT22-temperatur-/fuktsensorer

  • ds18x20 — DS18x20-temperatursensordrivrutin

  • onewire — 1-Wire-bussprotokoll

  • neopixel — styrning av WS2812 / NeoPixel-lysdioder

  • lora — LoRa-modemdrivrutin

  • ssd1306 — OLED-drivrutin

  • tb6612 — 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 kortet

  • stm — funktionalitet specifik för STM32-MCU:er

  • dht — DHT11- och DHT22-temperatur-/fuktsensorer

  • onewire — 1-Wire-bussprotokoll

  • neopixel — styrning av WS2812 / NeoPixel-lysdioder

  • gt911 — GT911 5-punkts kapacitiv pekstyrenhet

  • ft5x06 — 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älpmoduler

  • espflash — ESP32 ROM-startladdarens firmwareflashare

  • lsm6dsox — LSM6DSOX 6-axlig IMU

  • dht — DHT11- och DHT22-temperatur-/fuktsensorer

  • onewire — 1-Wire-bussprotokoll

  • ds18x20 — DS18x20-temperatursensordrivrutin

  • neopixel — 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 SoftDevice

  • bmi270 — BMI270 6-axlig IMU

  • bmm150 — BMM150 3-axlig magnetometer

  • lsm9ds1 — LSM9DS1 9-axlig IMU

  • hts221 — HTS221 fukt-/temperatursensor

  • lps22h — LPS22HB/HH trycksensor

  • hs3003 — HS3003 fukt-/temperatursensor

  • apds9960 — drivrutin för närhets-, gest- och färgsensor

  • dht — DHT11- och DHT22-temperatur-/fuktsensorer

  • onewire — 1-Wire-bussprotokoll

  • ds18x20 — DS18x20-temperatursensordrivrutin

  • neopixel — 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.