OpenMV MicroPython kütüphaneleri

Uyarı

Bu bölümün önemli özeti

  • MicroPython, Python standart kütüphanesinin işlevselliğini yansıtan yerleşik modüllerin (örneğin os, time) yanı sıra MicroPython’a özgü modüller (örneğin bluetooth, machine) sağlar.

  • Çoğu Python standart kütüphanesi modülü, eşdeğer Python modülünün işlevselliğinin bir alt kümesini uygular ve bazı durumlarda MicroPython’a özgü bazı eklentiler sunar (örneğin array, os)

  • Kaynak kısıtlamaları veya diğer sınırlamalar nedeniyle, bazı port’lar veya aygıt yazılımı (firmware) sürümleri burada belgelenen işlevselliğin tamamını içermeyebilir.

  • Genişletilebilirliğe olanak tanımak için, bazı yerleşik modüller cihaz dosya sistemine yüklenen Python kodundan genişletilebilir.

Bu bölüm, MicroPython’a yerleşik olan modülleri (işlev ve sınıf kütüphaneleri) açıklar. Bu belgelendirme genel olarak MicroPython projesinde uygulanan tüm modülleri ve işlevleri/sınıfları tanımlamayı hedefler. Ancak MicroPython yüksek düzeyde yapılandırılabilir ve belirli bir karta/gömülü sisteme yapılan her port, mevcut MicroPython kütüphanelerinin yalnızca bir alt kümesini içerebilir.

Bunu göz önünde bulundurarak, lütfen bu belgelendirmede açıklanan bir modüldeki bazı işlevlerin/sınıfların (hatta tüm modülün) belirli bir sistemdeki belirli bir MicroPython yapımında kullanılamayabileceği konusunda uyarılmış olun. Belirli bir özelliğin kullanılabilirliği/kullanılamazlığı hakkında genel bilgi bulmak için en iyi yer, belirli bir MicroPython port ile ilgili bilgileri içeren “General Information” bölümüdür.

Bazı port’larda, REPL üzerinde aşağıdakileri girerek içe aktarılabilen mevcut yerleşik kütüphaneleri keşfedebilirsiniz:

help('modules')

Bu belgelendirmede açıklanan yerleşik kütüphanelerin ötesinde, Python standart kütüphanesinden çok daha fazla modül ve bunlara yönelik ek MicroPython eklentileri micropython-lib içinde bulunabilir.

Python standart kütüphaneleri ve mikro kütüphaneler

Aşağıdaki standart Python kütüphaneleri, MicroPython felsefesine uyum sağlamak için “mikro hale getirilmiştir”. Bunlar, ilgili modülün temel işlevselliğini sağlar ve standart Python kütüphanesinin yerine doğrudan kullanılabilecek alternatifler olması amaçlanmıştır.

OpenMV Cam kütüphaneleri

Aşağıdaki bölümlerde, hem MicroPython’a özgü yerleşik modüller hem de OpenMV’nin kendi eklentileri dahil olmak üzere, OpenMV tarafından desteklenen her kartta mevcut olan kütüphaneler açıklanmaktadır.

Ortak modüller

Her OpenMV kamera kartındaki aygıt yazılımına (firmware) yerleşiktir.

Çoğu OpenMV kamera kartında bulunan dondurulmuş Python yardımcıları (sürücüler, ağ iletişimi ve yardımcı programlar):

Ağ iletişimi yardımcıları (çalışan bir ağ arayüzü gerektirir):

Web çerçevesi

Web sunucusu çerçevesi modülleri. Her birinin hangi kartlarda bulunduğunu görmek için aşağıdaki karta özel bölümlere bakın.

Port’a özgü modüller

Belirli bir MCU ailesine bağlı modüller. Her birinin hangi kartlarda bulunduğunu görmek için aşağıdaki karta özel bölümlere bakın.

Donanım sürücüleri

Bir veya daha fazla OpenMV tarafından desteklenen kartta bulunan sensörler, ekranlar ve diğer çevre birimleri için sürücüler. Her birinin hangi kartlarda bulunduğunu görmek için aşağıdaki karta özel bölümlere bakın.

Karta göre kullanılabilirlik

Aşağıdaki listeler, her kartta hangi port’a özgü ve sürücü modüllerinin bulunduğunu gösterir. Common, Frozen Python helpers ve Networking helpers (yukarıda) bölümlerindeki tüm modüller, aksi belirtilmedikçe her kamera kartında mevcuttur.

OpenMV N6

1 GHz’lik, INT8’de 600 GOPS değerinde yonga üstü NPU içeren STM32N657 (Cortex-M55 @ 800 MHz). NPU’yu PAG7936 1 MP global deklanşörlü sensörle eşleştirir.

  • pyb — karta ilişkin işlevler

  • stm — STM32 MCU’lara özgü işlevsellik

  • ssd1306 — OLED sürücüsü

  • tb6612 — TB6612 motor sürücüsü

  • jwt — JSON Web Token’ları

  • microdot — minimal HTTP çerçevesi

OpenMV AE3

Alif Ensemble E3 çift çekirdekli SoC: Cortex-M55 @ 400 MHz (HP) artı Cortex-M55 @ 160 MHz (HE), iki yonga üstü NPU ile (400 MHz / 204 GOPS HP NPU + 160 MHz / 46 GOPS HE NPU).

  • alif — Alif Ensemble SoC işlevleri

  • romfs — ROMFS yardımcı programları

  • pca9674a — PCA9674A I2C genişletici sürücüsü

  • jwt — JSON Web Token’ları

  • microdot — minimal HTTP çerçevesi

OpenMV Cam RT1062

NXP i.MX RT1062 (Cortex-M7 @ 600 MHz) etrafında kurulu düşük güçlü makine görüşü kartı. USB-C yüksek hızlı ağ iletişimi, Wi-Fi / Bluetooth ve 10/100 Ethernet’i birleştirir.

  • mimxrt — NXP i.MX RT’ye özgü işlevsellik

  • dht — DHT11 ve DHT22 sıcaklık/nem sensörleri

  • onewire — 1-Wire veri yolu protokolü

  • ds18x20 — DS18x20 sıcaklık sensörü sürücüsü

  • neopixel — WS2812 / NeoPixel LED’lerinin kontrolü

  • ssd1306 — OLED sürücüsü

  • tb6612 — TB6612 motor sürücüsü

  • pca9674a — PCA9674A I2C genişletici sürücüsü

  • jwt — JSON Web Token’ları

  • microdot — minimal HTTP çerçevesi

OpenMV Pure Thermal

STM32H743 (Cortex-M7 @ 480 MHz) etrafında kurulu, 64 MB harici SDRAM, 32 MB QSPI flash bellek, donanımsal JPEG kodlayıcı/çözücü ve DVI/HDMI çıkışı içeren tam sistem termal görüntüleme kartı.

  • pyb — karta ilişkin işlevler

  • stm — STM32 MCU’lara özgü işlevsellik

  • tfp410 — DVI/HDMI serileştirici

  • ft5x06 — kapasitif dokunmatik ekran sürücüsü

  • dht — DHT11 ve DHT22 sıcaklık/nem sensörleri

  • onewire — 1-Wire veri yolu protokolü

  • ds18x20 — DS18x20 sıcaklık sensörü sürücüsü

  • neopixel — WS2812 / NeoPixel LED’lerinin kontrolü

  • ssd1306 — OLED sürücüsü

  • tb6612 — TB6612 motor sürücüsü

OpenMV Cam H7 Plus

STM32H743 (Cortex-M7 @ 480 MHz) ile 32 MB harici SDRAM, 32 MB QSPI flash bellek, donanımsal JPEG kodlayıcı/çözücü ve OV5640 5MP kamera modülü.

  • pyb — karta ilişkin işlevler

  • stm — STM32 MCU’lara özgü işlevsellik

  • dht — DHT11 ve DHT22 sıcaklık/nem sensörleri

  • onewire — 1-Wire veri yolu protokolü

  • ds18x20 — DS18x20 sıcaklık sensörü sürücüsü

  • neopixel — WS2812 / NeoPixel LED’lerinin kontrolü

  • ssd1306 — OLED sürücüsü

  • tb6612 — TB6612 motor sürücüsü

OpenMV Cam H7

STM32H743 (Cortex-M7 @ 480 MHz) ile 1 MB dahili SRAM, 2 MB dahili flash bellek ve donanımsal JPEG kodlayıcı/çözücü.

  • pyb — karta ilişkin işlevler

  • stm — STM32 MCU’lara özgü işlevsellik

  • dht — DHT11 ve DHT22 sıcaklık/nem sensörleri

  • onewire — 1-Wire veri yolu protokolü

  • ds18x20 — DS18x20 sıcaklık sensörü sürücüsü

  • neopixel — WS2812 / NeoPixel LED’lerinin kontrolü

  • ssd1306 — OLED sürücüsü

  • tb6612 — TB6612 motor sürücüsü

OpenMV Cam M7

STM32F765 (Cortex-M7 @ 216 MHz) ile 512 KB dahili SRAM ve 2 MB dahili flash bellek. OV7725 sensörü ile birlikte gelir.

  • pyb — karta ilişkin işlevler

  • stm — STM32 MCU’lara özgü işlevsellik

  • dht — DHT11 ve DHT22 sıcaklık/nem sensörleri

  • onewire — 1-Wire veri yolu protokolü

  • ds18x20 — DS18x20 sıcaklık sensörü sürücüsü

  • neopixel — WS2812 / NeoPixel LED’lerinin kontrolü

  • ssd1306 — OLED sürücüsü

  • tb6612 — TB6612 motor sürücüsü

OpenMV Cam M4

STM32F427 (Cortex-M4 @ 180 MHz) ile 256 KB dahili SRAM ve 1 MB dahili flash bellek. OV7725 sensörü ile birlikte gelir.

  • pyb — karta ilişkin işlevler

  • stm — STM32 MCU’lara özgü işlevsellik

  • dht — DHT11 ve DHT22 sıcaklık/nem sensörleri

  • onewire — 1-Wire veri yolu protokolü

  • ds18x20 — DS18x20 sıcaklık sensörü sürücüsü

  • neopixel — WS2812 / NeoPixel LED’lerinin kontrolü

  • ssd1306 — OLED sürücüsü

  • tb6612 — TB6612 motor sürücüsü

Arduino Nicla Vision

STM32H747AII6 çift çekirdekli SoC etrafında kurulu 22.86 × 22.86 mm boyutunda makine görüşü kartı: Cortex-M7 @ 400 MHz artı Cortex-M4 @ 200 MHz.

  • pyb — karta ilişkin işlevler

  • stm — STM32 MCU’lara özgü işlevsellik

  • lsm6dsox — LSM6DSOX 6 eksenli IMU

  • dht — DHT11 ve DHT22 sıcaklık/nem sensörleri

  • ds18x20 — DS18x20 sıcaklık sensörü sürücüsü

  • onewire — 1-Wire veri yolu protokolü

  • neopixel — WS2812 / NeoPixel LED’lerinin kontrolü

Arduino Portenta H7

STM32H747XI çift çekirdekli SoC etrafında kurulu 66 × 25 mm boyutunda endüstriyel geliştirme kartı: Cortex-M7 @ 400 MHz artı Cortex-M4 @ 200 MHz.

  • pyb — karta ilişkin işlevler

  • stm — STM32 MCU’lara özgü işlevsellik

  • dht — DHT11 ve DHT22 sıcaklık/nem sensörleri

  • ds18x20 — DS18x20 sıcaklık sensörü sürücüsü

  • onewire — 1-Wire veri yolu protokolü

  • neopixel — WS2812 / NeoPixel LED’lerinin kontrolü

  • lora — LoRa modem sürücüsü

  • ssd1306 — OLED sürücüsü

  • tb6612 — TB6612 motor sürücüsü

Arduino Giga R1 WiFi

STM32H747XI çift çekirdekli SoC etrafında kurulu 101 × 53 mm Mega form faktörlü kart: Cortex-M7 @ 480 MHz artı Cortex-M4 @ 240 MHz, yerleşik 800x480 dokunmatik ekran ile.

  • pyb — karta ilişkin işlevler

  • stm — STM32 MCU’lara özgü işlevsellik

  • dht — DHT11 ve DHT22 sıcaklık/nem sensörleri

  • onewire — 1-Wire veri yolu protokolü

  • neopixel — WS2812 / NeoPixel LED’lerinin kontrolü

  • gt911 — GT911 5 noktalı kapasitif dokunmatik denetleyici

  • ft5x06 — kapasitif dokunmatik ekran sürücüsü

Arduino Nano RP2040 Connect

U-blox NINA-W102 Wi-Fi/Bluetooth modülüne sahip, RP2040 tabanlı Nano form faktörlü kart. Artık aktif olarak desteklenmemektedir; bu kart için son OpenMV aygıt yazılımı (firmware) sürümü arşiv amaçlı kullanım için tutulmaktadır.

  • rp2 — RP2040’a özgü PIO / DMA / flash bellek yardımcıları

  • espflash — ESP32 ROM önyükleyici (bootloader) aygıt yazılımı (firmware) flaşlayıcı

  • lsm6dsox — LSM6DSOX 6 eksenli IMU

  • dht — DHT11 ve DHT22 sıcaklık/nem sensörleri

  • onewire — 1-Wire veri yolu protokolü

  • ds18x20 — DS18x20 sıcaklık sensörü sürücüsü

  • neopixel — WS2812 / NeoPixel LED’lerinin kontrolü

Arduino Nano 33 BLE Sense

Yerleşik Arduino sensör paketine sahip Nordic nRF52840 Nano form faktörlü kart. Artık aktif olarak desteklenmemektedir; bu kart için son OpenMV aygıt yazılımı (firmware) sürümü arşiv amaçlı kullanım için tutulmaktadır.

  • ubluepy — Nordic SoftDevice üzerinde Bluetooth LE çevre birimi ve merkez API’si

  • bmi270 — BMI270 6 eksenli IMU

  • bmm150 — BMM150 3 eksenli manyetometre

  • lsm9ds1 — LSM9DS1 9 eksenli IMU

  • hts221 — HTS221 nem/sıcaklık sensörü

  • lps22h — LPS22HB/HH basınç sensörü

  • hs3003 — HS3003 nem/sıcaklık sensörü

  • apds9960 — yakınlık, hareket ve renk sensörü sürücüsü

  • dht — DHT11 ve DHT22 sıcaklık/nem sensörleri

  • onewire — 1-Wire veri yolu protokolü

  • ds18x20 — DS18x20 sıcaklık sensörü sürücüsü

  • neopixel — WS2812 / NeoPixel LED’lerinin kontrolü

Yerleşik kütüphaneleri Python’dan genişletme

Yerleşik modüllerin bir alt kümesi, dosya sisteminde aynı adlı bir modül sağlanarak Python kodu ile genişletilebilir. Bu genişletilebilirlik, aygıt yazılımına (firmware) yerleşik olan aşağıdaki Python standart kütüphanesi modülleri için geçerlidir: array, binascii, collections, errno, gzip, hashlib, heapq, io, json, os, platform, random, re, select, socket, ssl, struct, time, zlib ve ayrıca MicroPython’a özgü machine modülü. Diğer tüm yerleşik modüller dosya sisteminden genişletilemez.

Bu, kullanıcının bir yerleşik kütüphanenin genişletilmiş bir uygulamasını sağlamasına olanak tanır (belki de ek CPython uyumluluğu veya eksik işlevsellik sağlamak için). Bu, micropython-lib içinde yaygın olarak kullanılır; daha fazla bilgi için bkz. Paket yönetimi. Dosya sistemi modülü, yerleşik modülden tüm globalleri (sınıflar, işlevler ve değişkenler) devralmak için tipik olarak yerleşik modülün joker karakterli bir içe aktarımını yapar.

MicroPython v1.21.0 ve üzeri sürümlerde, dosya sistemi modülünün kendisini içe aktarmasını önlemek için, içe aktarma sırasında sys.path geçici olarak temizlenerek yerleşik modülün içe aktarımı zorlanabilir. Örneğin, time modülünü Python’dan genişletmek için, dosya sistemindeki time.py adlı bir dosya aşağıdakini yapar:

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

def extra_method():
  pass

Sonuç olarak time.py, yerleşik time modülünün tüm globallerini içerir, ancak buna extra_method ekler.

MicroPython’ın daha eski sürümlerinde, adının başına bir u ekleyerek bir yerleşik modülün içe aktarımını zorlayabilirsiniz. Örneğin, import time yerine import utime. Örneğin, dosya sistemindeki time.py şöyle görünebilir:

from utime import *

def extra_method():
  pass

Bu yöntem hâlâ desteklenmektedir, ancak u ön eki MicroPython’ın gelecekteki bir sürümünde yerleşik modüllerin adlarından kaldırılacağı için artık yukarıda açıklanan sys.path yöntemi tercih edilmektedir.

Yerleşik modülün kullanımını özel olarak zorlaması gerektiği durumlar dışında, kod her zaman import umodule yerine import module kullanmalıdır.