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.
array— numeerisen datan taulukotasyncio— asynkroninen I/O-ajastinbinascii— binääri-/ASCII-muunnoksetbuiltins— sisäänrakennetut funktiot ja poikkeuksetcmath— matemaattisia funktioita kompleksiluvuillecollections— kokoelma- ja säiliötyypiterrno— järjestelmän virhekooditgc— roskienkerääjän hallintagzip— gzip-pakkaus ja -purkuhashlib— tiivistealgoritmitheapq— kekojonoalgoritmiio— syöttö-/tulostusvirratjson— JSON-koodaus ja -dekoodausmarshal— Python-objektien sarjallistusmath— matemaattiset funktiotos— perustason ”käyttöjärjestelmä”-palvelutplatform— pääsy taustalla olevan alustan tunnistetietoihinrandom— satunnaislukujen luominenre— yksinkertaiset säännölliset lausekkeetselect— odota tapahtumia joukossa virtojasocket— socket-moduulissl— SSL/TLS-moduulistring.templatelib— Mallimerkkijonojen tukistruct— pakkaa ja pura primitiivisiä tietotyyppejäsys— järjestelmäkohtaiset funktiottime— aikaan liittyvät funktiottypes— nimiä sisäänrakennetuille tyypeillezlib— zlib-pakkaus ja -purku
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.
bluetooth— matalan tason Bluetoothcryptolib— salausalgoritmitdeflate— deflate-pakkaus ja -purkuframebuf— kehyspuskurin käsittelymachine— laitteistoon liittyvät funktiotmicropython— MicroPythonin sisäisten osien käyttö ja hallintanetwork— verkkomäärityksetopenamp— tarjoaa standardin epäsymmetrisen moniprosessoinnin (AMP) tuenuctypes— pääsy binääridataan rakenteisestivfs— virtuaalisen tiedostojärjestelmän hallintacsi— kennotsensor— kamerasensoriimage— konenäkögif— gif-tallennusmjpeg— mjpeg-tallennusaudio— Audio-moduulidisplay— näyttöajurifir— lämpösensorin ajuri (fir == far infrared)tof— time-of-flight-sensorin ohjainimu— imu-sensoriomv— OpenMV Cam -tiedotcrc— CRC-laskentaml— Koneoppiminenulab— numpy-yhteensopiva taulukkokirjastoprotocol— OpenMV-protokollakanavatlogging— tapahtumien lokitussenml— Sensor Markup Language
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ä.
dht— DHT11- ja DHT22-lämpötila-/kosteussensoritonewire— 1-Wire-väyläprotokollads18x20— DS18x20-lämpötilasensorin ajurineopixel— WS2812 / NeoPixel-LEDien ohjauslsm6dsox— LSM6DSOX 6-akselinen IMUbmi270— BMI270 6-akselinen IMUbmm150— BMM150 3-akselinen magnetometrilsm9ds1— LSM9DS1 9-akselinen IMUhts221— HTS221-kosteus-/lämpötila-anturilps22h— LPS22HB/HH-painesensorihs3003— HS3003-kosteus-/lämpötilasensoriespflash— ESP32 ROM -käynnistyslataimen laiteohjelmiston flashaajaimu— IMU-apuväline Arduino Nano 33 BLE Sense -korttiinssd1306— OLED-ohjaintb6612— TB6612-moottoriohjainpca9674a— I2C-laajentimen ajuritfp410— DVI/HDMI-ohjainft5x06— kosketusnäytön ajurigt911— GT911 5-pisteinen kapasitiivinen kosketusohjainlora— LoRa-modeemin ajuriapds9960— läheisyys-, ele- ja värisensorin ajuriromfs— ROMFS-apuohjelmat
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 funktiotstm— STM32-MCU:ille ominainen toiminnallisuusssd1306— OLED-ajuritb6612— TB6612-moottoriajurijwt— JSON Web Tokensmicrodot— 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 -funktiotromfs— ROMFS-apuohjelmatpca9674a— PCA9674A I2C-laajenninajurijwt— JSON Web Tokensmicrodot— 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 toiminnallisuusdht— DHT11- ja DHT22-lämpötila-/kosteusanturitonewire— 1-Wire-väyläprotokollads18x20— DS18x20-lämpötila-anturin ajurineopixel— WS2812-/NeoPixel-LEDien ohjausssd1306— OLED-ajuritb6612— TB6612-moottoriajuripca9674a— PCA9674A I2C-laajenninajurijwt— JSON Web Tokensmicrodot— 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 funktiotstm— STM32-MCU:ille ominainen toiminnallisuustfp410— DVI/HDMI-sarjoittajaft5x06— kapasitiivisen kosketusnäytön ajuridht— DHT11- ja DHT22-lämpötila-/kosteusanturitonewire— 1-Wire-väyläprotokollads18x20— DS18x20-lämpötila-anturin ajurineopixel— WS2812-/NeoPixel-LEDien ohjausssd1306— OLED-ajuritb6612— 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 funktiotstm— STM32-MCU:ille ominainen toiminnallisuusdht— DHT11- ja DHT22-lämpötila-/kosteusanturitonewire— 1-Wire-väyläprotokollads18x20— DS18x20-lämpötila-anturin ajurineopixel— WS2812-/NeoPixel-LEDien ohjausssd1306— OLED-ajuritb6612— 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 funktiotstm— STM32-MCU:ille ominainen toiminnallisuusdht— DHT11- ja DHT22-lämpötila-/kosteusanturitonewire— 1-Wire-väyläprotokollads18x20— DS18x20-lämpötila-anturin ajurineopixel— WS2812-/NeoPixel-LEDien ohjausssd1306— OLED-ajuritb6612— 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 funktiotstm— STM32-MCU:ille ominainen toiminnallisuusdht— DHT11- ja DHT22-lämpötila-/kosteusanturitonewire— 1-Wire-väyläprotokollads18x20— DS18x20-lämpötila-anturin ajurineopixel— WS2812-/NeoPixel-LEDien ohjausssd1306— OLED-ajuritb6612— 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 funktiotstm— STM32-MCU:ille ominainen toiminnallisuusdht— DHT11- ja DHT22-lämpötila-/kosteusanturitonewire— 1-Wire-väyläprotokollads18x20— DS18x20-lämpötila-anturin ajurineopixel— WS2812-/NeoPixel-LEDien ohjausssd1306— OLED-ajuritb6612— 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 funktiotstm— STM32-MCU:ille ominainen toiminnallisuuslsm6dsox— LSM6DSOX 6-akselinen IMUdht— DHT11- ja DHT22-lämpötila-/kosteusanturitds18x20— DS18x20-lämpötila-anturin ajurionewire— 1-Wire-väyläprotokollaneopixel— 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 funktiotstm— STM32-MCU:ille ominainen toiminnallisuusdht— DHT11- ja DHT22-lämpötila-/kosteusanturitds18x20— DS18x20-lämpötila-anturin ajurionewire— 1-Wire-väyläprotokollaneopixel— WS2812-/NeoPixel-LEDien ohjauslora— LoRa-modeemin ajurissd1306— OLED-ajuritb6612— 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 funktiotstm— STM32-MCU:ille ominainen toiminnallisuusdht— DHT11- ja DHT22-lämpötila-/kosteusanturitonewire— 1-Wire-väyläprotokollaneopixel— WS2812-/NeoPixel-LEDien ohjausgt911— GT911 5-pisteinen kapasitiivinen kosketusohjainft5x06— 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älineetespflash— ESP32 ROM -käynnistyslataimen laiteohjelmiston ohjelmoijalsm6dsox— LSM6DSOX 6-akselinen IMUdht— DHT11- ja DHT22-lämpötila-/kosteusanturitonewire— 1-Wire-väyläprotokollads18x20— DS18x20-lämpötila-anturin ajurineopixel— 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 SoftDevicessabmi270— BMI270 6-akselinen IMUbmm150— BMM150 3-akselinen magnetometrilsm9ds1— LSM9DS1 9-akselinen IMUhts221— HTS221-kosteus-/lämpötila-anturilps22h— LPS22HB/HH-paineanturihs3003— HS3003-kosteus-/lämpötila-anturiapds9960— läheisyys-, ele- ja värianturin ajuridht— DHT11- ja DHT22-lämpötila-/kosteusanturitonewire— 1-Wire-väyläprotokollads18x20— DS18x20-lämpötila-anturin ajurineopixel— 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.