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):
aioble— Asynkroninen BLErpc— rpc-kirjastortsp— rtsp-kirjastomqtt— Yksinkertainen MQTT-asiakasrequests— HTTP-asiakasmutex— mutex-moduulipid— Proportional-Integral-Derivative-säädinbno055— BNO055 IMU -ajurimodbus— Modbus RTU -orjaprotokollavl53l1x— VL53L1X ToF-etäisyyssensorin ajuri
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.