OpenMV MicroPython -kirjastot

Varoitus

Tämän osion tärkeä yhteenveto

  • MicroPython tarjoaa sisäänrakennettuja moduuleja, jotka heijastavat Pythonin vakiokirjaston toiminnallisuutta (esim. os, time), sekä MicroPython-kohtaisia moduuleja (esim. bluetooth, machine).

  • Useimmat Pythonin vakiokirjaston moduulit toteuttavat osajoukon vastaavan Python-moduulin toiminnallisuudesta, ja joissakin tapauksissa tarjoavat MicroPython-kohtaisia laajennuksia (esim. array, os)

  • Resurssirajoitusten tai muiden rajoitusten vuoksi jotkin portit tai laiteohjelmistoversiot eivät välttämättä sisällä kaikkea tässä dokumentoitua toiminnallisuutta.

  • Laajennettavuuden mahdollistamiseksi joitakin sisäänrakennettuja moduuleja voidaan laajentaa Python-koodista, joka ladataan laitteen tiedostojärjestelmään.

Tämä luku kuvaa MicroPythoniin sisäänrakennettuja moduuleja (funktio- ja luokkakirjastoja). Tämä dokumentaatio pyrkii yleisesti kuvaamaan kaikki MicroPython-projektissa toteutetut moduulit ja funktiot/luokat. MicroPython on kuitenkin erittäin konfiguroitava, ja kukin portti tietylle kortille/sulautetulle järjestelmälle voi sisältää vain osajoukon saatavilla olevista MicroPython-kirjastoista.

Pitäen tämän mielessä, ole tietoinen siitä, että jotkin tässä dokumentaatiossa kuvatut moduulin funktiot/luokat (tai jopa koko moduuli) eivät välttämättä ole saatavilla tietyssä MicroPython-käännöksessä tietyssä järjestelmässä. Paras paikka löytää yleistä tietoa tietyn ominaisuuden saatavuudesta/ei-saatavuudesta on ”General Information” -osio, joka sisältää tietoa tietystä MicroPython port -portista.

Joillakin porteilla voit selvittää saatavilla olevat sisäänrakennetut kirjastot, jotka voidaan tuoda, syöttämällä seuraavan REPL:iin:

help('modules')

Tässä dokumentaatiossa kuvattujen sisäänrakennettujen kirjastojen lisäksi paljon useampia Pythonin vakiokirjaston moduuleja sekä niiden lisää MicroPython-laajennuksia löytyy paikasta micropython-lib.

Pythonin vakiokirjastot ja mikrokirjastot

Seuraavat Pythonin vakiokirjastot on ”mikroistettu” sopimaan yhteen MicroPythonin filosofian kanssa. Ne tarjoavat kyseisen moduulin ydintoiminnallisuuden ja ovat tarkoitettu suoraan korvaamaan Pythonin vakiokirjasto.

OpenMV Cam -kirjastot

Seuraavissa osioissa kuvataan kullakin OpenMV:n tukemalla kortilla saatavilla olevat kirjastot, mukaan lukien sekä MicroPython-kohtaiset sisäänrakennetut moduulit että OpenMV:n omat laajennukset.

Yhteiset moduulit

Sisäänrakennettu jokaisen OpenMV-kamerakortin laiteohjelmistoon.

Suurimmalla osalla OpenMV-kamerakorteista toimitettavat jäädytetyt Python-apuvälineet (ajurit, verkkotoiminta ja apuohjelmat):

Verkkotoiminnan apuvälineet (vaativat toimivan verkkoliitännän):

Web-kehys

Web-palvelinkehyksen moduulit. Katso alla olevista korttikohtaisista osioista, mitkä kortit sisältävät kunkin niistä.

Porttikohtaiset moduulit

Tiettyyn MCU-perheeseen sidotut moduulit. Katso alla olevista korttikohtaisista osioista, mitkä kortit sisältävät kunkin niistä.

Laitteistoajurit

Ajurit sensoreille, näytöille ja muille oheislaitteille, joita toimitetaan yhdellä tai useammalla OpenMV:n tukemalla kortilla. Katso alla olevista korttikohtaisista osioista, mitkä kortit sisältävät kunkin niistä.

Korttikohtainen saatavuus

Alla olevat luettelot näyttävät, mitkä porttikohtaiset ja ajurimoduulit toimitetaan kullakin kortilla. Kaikki Yhteisten, Jäädytettyjen Python-apuvälineiden ja Verkkotoiminnan apuvälineiden (yllä) moduulit ovat saatavilla jokaisella kamerakortilla, ellei toisin mainita.

OpenMV N6

STM32N657 (Cortex-M55 @ 800 MHz) ja 1 GHz:n sirun sisäinen NPU, joka on luokiteltu 600 GOPS:iin INT8:lla. Yhdistää NPU:n PAG7936 1 MP -globaalisuljinanturiin.

  • pyb — korttiin liittyvät funktiot

  • stm — STM32-MCU:ille ominainen toiminnallisuus

  • ssd1306 — OLED-ajuri

  • tb6612 — TB6612-moottoriajuri

  • jwt — JSON Web Tokens

  • microdot — minimaalinen HTTP-kehys

OpenMV AE3

Alif Ensemble E3 kaksiytiminen SoC: Cortex-M55 @ 400 MHz (HP) plus Cortex-M55 @ 160 MHz (HE), kahdella sirun sisäisellä NPU:lla (400 MHz / 204 GOPS HP NPU + 160 MHz / 46 GOPS HE NPU).

  • alif — Alif Ensemble SoC -funktiot

  • romfs — ROMFS-apuohjelmat

  • pca9674a — PCA9674A I2C-laajenninajuri

  • jwt — JSON Web Tokens

  • microdot — minimaalinen HTTP-kehys

OpenMV Cam RT1062

Pienitehoinen konenäkökortti NXP i.MX RT1062:n (Cortex-M7 @ 600 MHz) ympärille. Yhdistää USB-C-suurnopeusverkon, Wi-Fi:n / Bluetoothin ja 10/100-Ethernetin.

  • mimxrt — NXP i.MX RT:lle ominainen toiminnallisuus

  • dht — DHT11- ja DHT22-lämpötila-/kosteusanturit

  • onewire — 1-Wire-väyläprotokolla

  • ds18x20 — DS18x20-lämpötila-anturin ajuri

  • neopixel — WS2812-/NeoPixel-LEDien ohjaus

  • ssd1306 — OLED-ajuri

  • tb6612 — TB6612-moottoriajuri

  • pca9674a — PCA9674A I2C-laajenninajuri

  • jwt — JSON Web Tokens

  • microdot — minimaalinen HTTP-kehys

OpenMV Pure Thermal

Täysjärjestelmä-lämpökuvauskortti STM32H743:n (Cortex-M7 @ 480 MHz) ympärille, jossa on 64 MB:n ulkoinen SDRAM, 32 MB:n QSPI-flash-muisti, laitteistopohjainen JPEG-koodekki ja DVI/HDMI-ulostulo.

  • pyb — korttiin liittyvät funktiot

  • stm — STM32-MCU:ille ominainen toiminnallisuus

  • tfp410 — DVI/HDMI-sarjoittaja

  • ft5x06 — kapasitiivisen kosketusnäytön ajuri

  • dht — DHT11- ja DHT22-lämpötila-/kosteusanturit

  • onewire — 1-Wire-väyläprotokolla

  • ds18x20 — DS18x20-lämpötila-anturin ajuri

  • neopixel — WS2812-/NeoPixel-LEDien ohjaus

  • ssd1306 — OLED-ajuri

  • tb6612 — TB6612-moottoriajuri

OpenMV Cam H7 Plus

STM32H743 (Cortex-M7 @ 480 MHz), jossa on 32 MB:n ulkoinen SDRAM, 32 MB:n QSPI-flash-muisti, laitteistopohjainen JPEG-koodekki ja OV5640 5MP -kameramoduuli.

  • pyb — korttiin liittyvät funktiot

  • stm — STM32-MCU:ille ominainen toiminnallisuus

  • dht — DHT11- ja DHT22-lämpötila-/kosteusanturit

  • onewire — 1-Wire-väyläprotokolla

  • ds18x20 — DS18x20-lämpötila-anturin ajuri

  • neopixel — WS2812-/NeoPixel-LEDien ohjaus

  • ssd1306 — OLED-ajuri

  • tb6612 — TB6612-moottoriajuri

OpenMV Cam H7

STM32H743 (Cortex-M7 @ 480 MHz), jossa on 1 MB:n sisäinen SRAM, 2 MB:n sisäinen flash-muisti ja laitteistopohjainen JPEG-koodekki.

  • pyb — korttiin liittyvät funktiot

  • stm — STM32-MCU:ille ominainen toiminnallisuus

  • dht — DHT11- ja DHT22-lämpötila-/kosteusanturit

  • onewire — 1-Wire-väyläprotokolla

  • ds18x20 — DS18x20-lämpötila-anturin ajuri

  • neopixel — WS2812-/NeoPixel-LEDien ohjaus

  • ssd1306 — OLED-ajuri

  • tb6612 — TB6612-moottoriajuri

OpenMV Cam M7

STM32F765 (Cortex-M7 @ 216 MHz), jossa on 512 KB:n sisäinen SRAM ja 2 MB:n sisäinen flash-muisti. Toimitetaan OV7725-sensorin kanssa.

  • pyb — korttiin liittyvät funktiot

  • stm — STM32-MCU:ille ominainen toiminnallisuus

  • dht — DHT11- ja DHT22-lämpötila-/kosteusanturit

  • onewire — 1-Wire-väyläprotokolla

  • ds18x20 — DS18x20-lämpötila-anturin ajuri

  • neopixel — WS2812-/NeoPixel-LEDien ohjaus

  • ssd1306 — OLED-ajuri

  • tb6612 — TB6612-moottoriajuri

OpenMV Cam M4

STM32F427 (Cortex-M4 @ 180 MHz), jossa on 256 KB:n sisäinen SRAM ja 1 MB:n sisäinen flash-muisti. Toimitetaan OV7725-sensorin kanssa.

  • pyb — korttiin liittyvät funktiot

  • stm — STM32-MCU:ille ominainen toiminnallisuus

  • dht — DHT11- ja DHT22-lämpötila-/kosteusanturit

  • onewire — 1-Wire-väyläprotokolla

  • ds18x20 — DS18x20-lämpötila-anturin ajuri

  • neopixel — WS2812-/NeoPixel-LEDien ohjaus

  • ssd1306 — OLED-ajuri

  • tb6612 — TB6612-moottoriajuri

Arduino Nicla Vision

22,86 × 22,86 mm:n konenäkökortti STM32H747AII6 kaksiytimisen SoC:n ympärille: Cortex-M7 @ 400 MHz plus Cortex-M4 @ 200 MHz.

  • pyb — korttiin liittyvät funktiot

  • stm — STM32-MCU:ille ominainen toiminnallisuus

  • lsm6dsox — LSM6DSOX 6-akselinen IMU

  • dht — DHT11- ja DHT22-lämpötila-/kosteusanturit

  • ds18x20 — DS18x20-lämpötila-anturin ajuri

  • onewire — 1-Wire-väyläprotokolla

  • neopixel — WS2812-/NeoPixel-LEDien ohjaus

Arduino Portenta H7

66 × 25 mm:n teollinen kehityskortti STM32H747XI kaksiytimisen SoC:n ympärille: Cortex-M7 @ 400 MHz plus Cortex-M4 @ 200 MHz.

  • pyb — korttiin liittyvät funktiot

  • stm — STM32-MCU:ille ominainen toiminnallisuus

  • dht — DHT11- ja DHT22-lämpötila-/kosteusanturit

  • ds18x20 — DS18x20-lämpötila-anturin ajuri

  • onewire — 1-Wire-väyläprotokolla

  • neopixel — WS2812-/NeoPixel-LEDien ohjaus

  • lora — LoRa-modeemin ajuri

  • ssd1306 — OLED-ajuri

  • tb6612 — TB6612-moottoriajuri

Arduino Giga R1 WiFi

101 × 53 mm:n Mega-muotoinen kortti STM32H747XI kaksiytimisen SoC:n ympärille: Cortex-M7 @ 480 MHz plus Cortex-M4 @ 240 MHz, kortin sisäisellä 800x480-kosketusnäytöllä.

  • pyb — korttiin liittyvät funktiot

  • stm — STM32-MCU:ille ominainen toiminnallisuus

  • dht — DHT11- ja DHT22-lämpötila-/kosteusanturit

  • onewire — 1-Wire-väyläprotokolla

  • neopixel — WS2812-/NeoPixel-LEDien ohjaus

  • gt911 — GT911 5-pisteinen kapasitiivinen kosketusohjain

  • ft5x06 — kapasitiivisen kosketusnäytön ajuri

Arduino Nano RP2040 Connect

RP2040-pohjainen Nano-muotoinen kortti U-blox NINA-W102 Wi-Fi-/Bluetooth-moduulilla. Ei enää aktiivisesti tuettu; tämän kortin viimeinen OpenMV-laiteohjelmistojulkaisu säilytetään arkistokäyttöön.

  • rp2 — RP2040-kohtaiset PIO-/DMA-/flash-apuvälineet

  • espflash — ESP32 ROM -käynnistyslataimen laiteohjelmiston ohjelmoija

  • lsm6dsox — LSM6DSOX 6-akselinen IMU

  • dht — DHT11- ja DHT22-lämpötila-/kosteusanturit

  • onewire — 1-Wire-väyläprotokolla

  • ds18x20 — DS18x20-lämpötila-anturin ajuri

  • neopixel — WS2812-/NeoPixel-LEDien ohjaus

Arduino Nano 33 BLE Sense

Nordic nRF52840 Nano-muotoinen kortti kortin sisäisellä Arduino-sensoripaketilla. Ei enää aktiivisesti tuettu; tämän kortin viimeinen OpenMV-laiteohjelmistojulkaisu säilytetään arkistokäyttöön.

  • ubluepy — Bluetooth LE -oheislaite- ja keskus-API Nordic SoftDevicessa

  • bmi270 — BMI270 6-akselinen IMU

  • bmm150 — BMM150 3-akselinen magnetometri

  • lsm9ds1 — LSM9DS1 9-akselinen IMU

  • hts221 — HTS221-kosteus-/lämpötila-anturi

  • lps22h — LPS22HB/HH-paineanturi

  • hs3003 — HS3003-kosteus-/lämpötila-anturi

  • apds9960 — läheisyys-, ele- ja värianturin ajuri

  • dht — DHT11- ja DHT22-lämpötila-/kosteusanturit

  • onewire — 1-Wire-väyläprotokolla

  • ds18x20 — DS18x20-lämpötila-anturin ajuri

  • neopixel — WS2812-/NeoPixel-LEDien ohjaus

Sisäänrakennettujen kirjastojen laajentaminen Pythonista

Osaa sisäänrakennetuista moduuleista voidaan laajentaa Python-koodilla tarjoamalla samanniminen moduuli tiedostojärjestelmässä. Tämä laajennettavuus koskee seuraavia Pythonin vakiokirjaston moduuleja, jotka on rakennettu laiteohjelmistoon: array, binascii, collections, errno, gzip, hashlib, heapq, io, json, os, platform, random, re, select, socket, ssl, struct, time, zlib, sekä MicroPython-kohtaista machine-moduulia. Kaikkia muita sisäänrakennettuja moduuleja ei voida laajentaa tiedostojärjestelmästä.

Tämä antaa käyttäjälle mahdollisuuden tarjota laajennetun toteutuksen sisäänrakennetusta kirjastosta (ehkä tarjotakseen lisää CPython-yhteensopivuutta tai puuttuvaa toiminnallisuutta). Tätä käytetään laajasti paikassa micropython-lib, katso lisätietoja kohdasta Pakettien hallinta. Tiedostojärjestelmämoduuli tekee tyypillisesti jokerimerkki-importin sisäänrakennetusta moduulista periäkseen kaikki globaalit (luokat, funktiot ja muuttujat) sisäänrakennetusta moduulista.

MicroPython v1.21.0:ssa ja uudemmissa, jotta tiedostojärjestelmämoduuli ei tuo itseään, se voi pakottaa sisäänrakennetun moduulin importin tyhjentämällä väliaikaisesti sys.path:n importin ajaksi. Esimerkiksi laajentaakseen time-moduulia Pythonista tiedostojärjestelmässä oleva time.py-niminen tiedosto tekisi seuraavaa:

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

def extra_method():
  pass

Tuloksena on, että time.py sisältää kaikki sisäänrakennetun time-moduulin globaalit, mutta lisää extra_method:n.

MicroPythonin aiemmissa versioissa voit pakottaa sisäänrakennetun moduulin importin lisäämällä u:n sen nimen alkuun. Esimerkiksi import utime import time:n sijaan. Esimerkiksi tiedostojärjestelmässä oleva time.py voisi näyttää tältä:

from utime import *

def extra_method():
  pass

Tämä tapa on edelleen tuettu, mutta yllä kuvattu sys.path-menetelmä on nyt suositeltu, koska u-etuliite poistetaan sisäänrakennettujen moduulien nimistä MicroPythonin tulevassa versiossa.

Muutoin kuin silloin, kun erityisesti tarvitaan pakottaa sisäänrakennetun moduulin käyttö, koodin tulisi aina käyttää import module eikä import umodule.