OpenMV MicroPython-bibliotheken

Waarschuwing

Belangrijke samenvatting van deze sectie

  • MicroPython biedt ingebouwde modules die de functionaliteit van de Python-standaardbibliotheek weerspiegelen (bijv. os, time), evenals MicroPython-specifieke modules (bijv. bluetooth, machine).

  • De meeste modules uit de Python-standaardbibliotheek implementeren een subset van de functionaliteit van de equivalente Python-module, en in enkele gevallen bieden zij enkele MicroPython-specifieke uitbreidingen (bijv. array, os)

  • Vanwege beperkte resources of andere beperkingen bevatten sommige poorten of firmwareversies mogelijk niet alle hier gedocumenteerde functionaliteit.

  • Om uitbreidbaarheid mogelijk te maken, kunnen sommige ingebouwde modules worden uitgebreid vanuit Python-code die op het bestandssysteem van het apparaat is geladen.

Dit hoofdstuk beschrijft modules (functie- en klassebibliotheken) die in MicroPython zijn ingebouwd. Deze documentatie streeft er in het algemeen naar alle modules en functies/klassen te beschrijven die in het MicroPython-project zijn geïmplementeerd. MicroPython is echter zeer configureerbaar, en elke poort naar een bepaald board/embedded systeem kan slechts een subset van de beschikbare MicroPython-bibliotheken bevatten.

Houd er met dat in gedachten rekening mee dat sommige functies/klassen in een module (of zelfs de hele module) die in deze documentatie wordt beschreven, mogelijk niet beschikbaar zijn in een bepaalde build van MicroPython op een bepaald systeem. De beste plek om algemene informatie te vinden over de beschikbaarheid/niet-beschikbaarheid van een bepaalde functie is de sectie “General Information”, die informatie bevat over een specifieke MicroPython port.

Op sommige poorten kunt u de beschikbare ingebouwde bibliotheken die kunnen worden geïmporteerd ontdekken door het volgende in te voeren bij de REPL

help('modules')

Naast de ingebouwde bibliotheken die in deze documentatie worden beschreven, zijn er nog veel meer modules uit de Python-standaardbibliotheek, evenals verdere MicroPython-uitbreidingen daarop, te vinden in micropython-lib.

Python-standaardbibliotheken en micro-bibliotheken

De volgende standaard Python-bibliotheken zijn “ge-micro-ificeerd” om aan te sluiten bij de filosofie van MicroPython. Zij bieden de kernfunctionaliteit van die module en zijn bedoeld als een rechtstreekse vervanging voor de standaard Python-bibliotheek.

OpenMV Cam-bibliotheken

De volgende secties beschrijven de bibliotheken die beschikbaar zijn op elk door OpenMV ondersteund board, inclusief zowel de MicroPython-specifieke ingebouwde functies als OpenMV’s eigen uitbreidingen.

Algemene modules

Ingebouwd in de firmware op elk OpenMV-cameraboard.

Frozen Python-helpers die op de meeste OpenMV-cameraborden worden meegeleverd (drivers, netwerken en hulpprogramma’s):

Netwerkhelpers (vereisen een werkende netwerkinterface):

Webframework

Webserver-frameworkmodules. Zie de per-board-secties hieronder voor welke boards elk ervan bevatten.

Poortspecifieke modules

Modules die aan een specifieke MCU-familie zijn gebonden. Zie de per-board-secties hieronder voor welke boards elk ervan bevatten.

Hardwaredrivers

Drivers voor sensoren, displays en andere randapparaten die op een of meer door OpenMV ondersteunde boards worden meegeleverd. Zie de per-board-secties hieronder voor welke boards elk ervan bevatten.

Beschikbaarheid per board

De onderstaande lijsten tonen welke poortspecifieke en driver-modules op elk board worden meegeleverd. Alle modules in Common, Frozen Python helpers en Networking helpers (hierboven) zijn beschikbaar op elk cameraboard, tenzij anders vermeld.

OpenMV N6

STM32N657 (Cortex-M55 @ 800 MHz) met een 1 GHz on-chip NPU met een prestatie van 600 GOPS INT8. Koppelt de NPU aan de PAG7936 1 MP global-shutter-sensor.

  • pyb — functies gerelateerd aan het board

  • stm — functionaliteit specifiek voor STM32-MCU’s

  • ssd1306 — OLED-driver

  • tb6612 — TB6612-motordriver

  • jwt — JSON Web Tokens

  • microdot — minimaal HTTP-framework

OpenMV AE3

Alif Ensemble E3 dual-core SoC: Cortex-M55 @ 400 MHz (HP) plus Cortex-M55 @ 160 MHz (HE), met twee on-chip NPU’s (400 MHz / 204 GOPS HP NPU + 160 MHz / 46 GOPS HE NPU).

  • alif — Alif Ensemble SoC-functies

  • romfs — ROMFS-hulpprogramma’s

  • pca9674a — PCA9674A I2C-expanderdriver

  • jwt — JSON Web Tokens

  • microdot — minimaal HTTP-framework

OpenMV Cam RT1062

Energiezuinig machine vision-board rond de NXP i.MX RT1062 (Cortex-M7 @ 600 MHz). Combineert USB-C high-speed netwerken, Wi-Fi / Bluetooth en 10/100 Ethernet.

  • mimxrt — functionaliteit specifiek voor NXP i.MX RT

  • dht — DHT11- en DHT22-temperatuur-/vochtigheidssensoren

  • onewire — 1-Wire-busprotocol

  • ds18x20 — DS18x20-temperatuursensordriver

  • neopixel — besturing van WS2812 / NeoPixel-LED’s

  • ssd1306 — OLED-driver

  • tb6612 — TB6612-motordriver

  • pca9674a — PCA9674A I2C-expanderdriver

  • jwt — JSON Web Tokens

  • microdot — minimaal HTTP-framework

OpenMV Pure Thermal

Volledig systeem voor thermische beeldvorming rond de STM32H743 (Cortex-M7 @ 480 MHz) met 64 MB externe SDRAM, 32 MB QSPI-flashgeheugen, een hardware-JPEG-codec en DVI/HDMI-uitvoer.

  • pyb — functies gerelateerd aan het board

  • stm — functionaliteit specifiek voor STM32-MCU’s

  • tfp410 — DVI/HDMI-serializer

  • ft5x06 — capacitieve touchscreendriver

  • dht — DHT11- en DHT22-temperatuur-/vochtigheidssensoren

  • onewire — 1-Wire-busprotocol

  • ds18x20 — DS18x20-temperatuursensordriver

  • neopixel — besturing van WS2812 / NeoPixel-LED’s

  • ssd1306 — OLED-driver

  • tb6612 — TB6612-motordriver

OpenMV Cam H7 Plus

STM32H743 (Cortex-M7 @ 480 MHz) met 32 MB externe SDRAM, 32 MB QSPI-flashgeheugen, een hardware-JPEG-codec en de OV5640 5MP cameramodule.

  • pyb — functies gerelateerd aan het board

  • stm — functionaliteit specifiek voor STM32-MCU’s

  • dht — DHT11- en DHT22-temperatuur-/vochtigheidssensoren

  • onewire — 1-Wire-busprotocol

  • ds18x20 — DS18x20-temperatuursensordriver

  • neopixel — besturing van WS2812 / NeoPixel-LED’s

  • ssd1306 — OLED-driver

  • tb6612 — TB6612-motordriver

OpenMV Cam H7

STM32H743 (Cortex-M7 @ 480 MHz) met 1 MB intern SRAM, 2 MB intern flashgeheugen en een hardware-JPEG-codec.

  • pyb — functies gerelateerd aan het board

  • stm — functionaliteit specifiek voor STM32-MCU’s

  • dht — DHT11- en DHT22-temperatuur-/vochtigheidssensoren

  • onewire — 1-Wire-busprotocol

  • ds18x20 — DS18x20-temperatuursensordriver

  • neopixel — besturing van WS2812 / NeoPixel-LED’s

  • ssd1306 — OLED-driver

  • tb6612 — TB6612-motordriver

OpenMV Cam M7

STM32F765 (Cortex-M7 @ 216 MHz) met 512 KB intern SRAM en 2 MB intern flashgeheugen. Geleverd met de OV7725-sensor.

  • pyb — functies gerelateerd aan het board

  • stm — functionaliteit specifiek voor STM32-MCU’s

  • dht — DHT11- en DHT22-temperatuur-/vochtigheidssensoren

  • onewire — 1-Wire-busprotocol

  • ds18x20 — DS18x20-temperatuursensordriver

  • neopixel — besturing van WS2812 / NeoPixel-LED’s

  • ssd1306 — OLED-driver

  • tb6612 — TB6612-motordriver

OpenMV Cam M4

STM32F427 (Cortex-M4 @ 180 MHz) met 256 KB intern SRAM en 1 MB intern flashgeheugen. Geleverd met de OV7725-sensor.

  • pyb — functies gerelateerd aan het board

  • stm — functionaliteit specifiek voor STM32-MCU’s

  • dht — DHT11- en DHT22-temperatuur-/vochtigheidssensoren

  • onewire — 1-Wire-busprotocol

  • ds18x20 — DS18x20-temperatuursensordriver

  • neopixel — besturing van WS2812 / NeoPixel-LED’s

  • ssd1306 — OLED-driver

  • tb6612 — TB6612-motordriver

Arduino Nicla Vision

22,86 × 22,86 mm machine vision-board rond de STM32H747AII6 dual-core SoC: Cortex-M7 @ 400 MHz plus Cortex-M4 @ 200 MHz.

  • pyb — functies gerelateerd aan het board

  • stm — functionaliteit specifiek voor STM32-MCU’s

  • lsm6dsox — LSM6DSOX 6-assige IMU

  • dht — DHT11- en DHT22-temperatuur-/vochtigheidssensoren

  • ds18x20 — DS18x20-temperatuursensordriver

  • onewire — 1-Wire-busprotocol

  • neopixel — besturing van WS2812 / NeoPixel-LED’s

Arduino Portenta H7

66 × 25 mm industrieel ontwikkelboard rond de STM32H747XI dual-core SoC: Cortex-M7 @ 400 MHz plus Cortex-M4 @ 200 MHz.

  • pyb — functies gerelateerd aan het board

  • stm — functionaliteit specifiek voor STM32-MCU’s

  • dht — DHT11- en DHT22-temperatuur-/vochtigheidssensoren

  • ds18x20 — DS18x20-temperatuursensordriver

  • onewire — 1-Wire-busprotocol

  • neopixel — besturing van WS2812 / NeoPixel-LED’s

  • lora — LoRa-modemdriver

  • ssd1306 — OLED-driver

  • tb6612 — TB6612-motordriver

Arduino Giga R1 WiFi

101 × 53 mm board in Mega-formaat rond de STM32H747XI dual-core SoC: Cortex-M7 @ 480 MHz plus Cortex-M4 @ 240 MHz, met een ingebouwd 800x480 touchscreen.

  • pyb — functies gerelateerd aan het board

  • stm — functionaliteit specifiek voor STM32-MCU’s

  • dht — DHT11- en DHT22-temperatuur-/vochtigheidssensoren

  • onewire — 1-Wire-busprotocol

  • neopixel — besturing van WS2812 / NeoPixel-LED’s

  • gt911 — GT911 5-punts capacitieve touchcontroller

  • ft5x06 — capacitieve touchscreendriver

Arduino Nano RP2040 Connect

Op RP2040 gebaseerd board in Nano-formaat met de U-blox NINA-W102 Wi-Fi/Bluetooth-module. Niet langer actief ondersteund; de laatste OpenMV-firmwarerelease voor dit board wordt bewaard voor archiefgebruik.

  • rp2 — RP2040-specifieke PIO- / DMA- / flash-helpers

  • espflash — ESP32 ROM-bootloader-firmwareflasher

  • lsm6dsox — LSM6DSOX 6-assige IMU

  • dht — DHT11- en DHT22-temperatuur-/vochtigheidssensoren

  • onewire — 1-Wire-busprotocol

  • ds18x20 — DS18x20-temperatuursensordriver

  • neopixel — besturing van WS2812 / NeoPixel-LED’s

Arduino Nano 33 BLE Sense

Nordic nRF52840 board in Nano-formaat met de ingebouwde Arduino-sensorsuite. Niet langer actief ondersteund; de laatste OpenMV-firmwarerelease voor dit board wordt bewaard voor archiefgebruik.

  • ubluepy — Bluetooth LE peripheral- en central-API op de Nordic SoftDevice

  • bmi270 — BMI270 6-assige IMU

  • bmm150 — BMM150 3-assige magnetometer

  • lsm9ds1 — LSM9DS1 9-assige IMU

  • hts221 — HTS221 vochtigheids-/temperatuursensor

  • lps22h — LPS22HB/HH drukcensor

  • hs3003 — HS3003 vochtigheids-/temperatuursensor

  • apds9960 — nabijheids-, gebaren- en kleursensordriver

  • dht — DHT11- en DHT22-temperatuur-/vochtigheidssensoren

  • onewire — 1-Wire-busprotocol

  • ds18x20 — DS18x20-temperatuursensordriver

  • neopixel — besturing van WS2812 / NeoPixel-LED’s

Ingebouwde bibliotheken uitbreiden vanuit Python

Een subset van de ingebouwde modules kan worden uitgebreid met Python-code door een module met dezelfde naam in het bestandssysteem te plaatsen. Deze uitbreidbaarheid geldt voor de volgende modules uit de Python-standaardbibliotheek die in de firmware zijn ingebouwd: array, binascii, collections, errno, gzip, hashlib, heapq, io, json, os, platform, random, re, select, socket, ssl, struct, time, zlib, evenals de MicroPython-specifieke machine-module. Alle andere ingebouwde modules kunnen niet vanuit het bestandssysteem worden uitgebreid.

Hiermee kan de gebruiker een uitgebreide implementatie van een ingebouwde bibliotheek aanbieden (bijvoorbeeld om aanvullende CPython-compatibiliteit of ontbrekende functionaliteit te bieden). Dit wordt uitgebreid gebruikt in micropython-lib, zie Pakketbeheer voor meer informatie. De bestandssysteemmodule zal doorgaans een wildcard-import van de ingebouwde module uitvoeren om alle globals (klassen, functies en variabelen) van de ingebouwde module te erven.

In MicroPython v1.21.0 en hoger kan de bestandssysteemmodule, om te voorkomen dat deze zichzelf importeert, een import van de ingebouwde module afdwingen door tijdens de import tijdelijk sys.path te wissen. Om bijvoorbeeld de time-module vanuit Python uit te breiden, zou een bestand met de naam time.py op het bestandssysteem het volgende doen:

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

def extra_method():
  pass

Het resultaat is dat time.py alle globals van de ingebouwde time-module bevat, maar extra_method toevoegt.

In eerdere versies van MicroPython kunt u een import van een ingebouwde module afdwingen door een u aan het begin van de naam toe te voegen. Bijvoorbeeld import utime in plaats van import time. Zo zou time.py op het bestandssysteem er als volgt uit kunnen zien:

from utime import *

def extra_method():
  pass

Deze manier wordt nog steeds ondersteund, maar de hierboven beschreven sys.path-methode heeft nu de voorkeur, aangezien het u-voorvoegsel in een toekomstige versie van MicroPython uit de namen van ingebouwde modules zal worden verwijderd.

Behalve wanneer het specifiek nodig is om het gebruik van de ingebouwde module af te dwingen, dient code altijd import module te gebruiken in plaats van import umodule.