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ğinbluetooth,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.
array— sayısal veri dizileriasyncio— asenkron G/Ç zamanlayıcısıbinascii— ikili/ASCII dönüşümleribuiltins— yerleşik işlevler ve istisnalarcmath— karmaşık sayılar için matematiksel fonksiyonlarcollections— koleksiyon ve kapsayıcı türlerierrno— sistem hata kodlarıgc— çöp toplayıcıyı denetlergzip— gzip sıkıştırma ve açmahashlib— karma (hashing) algoritmalarıheapq— yığın kuyruğu algoritmasıio— giriş/çıkış akışlarıjson— JSON kodlama ve kod çözmemarshal— Python nesnesi serileştirmemath— matematiksel fonksiyonlaros— temel “işletim sistemi” servisleriplatform— temel platformun tanımlayıcı verilerine erişimrandom— rastgele sayılar üretre— basit düzenli ifadelerselect— bir akış kümesindeki olayları beklemesocket— socket modülüssl— SSL/TLS modülüstring.templatelib— Şablon Dizgesi Desteğistruct— ilkel veri türlerini paketle ve paketten çıkarsys— sisteme özgü işlevlertime— zamanla ilgili işlevlertypes— yerleşik türler için adlarzlib— zlib sıkıştırma & açma
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.
bluetooth— düşük seviyeli Bluetoothcryptolib— kriptografik şifrelerdeflate— deflate sıkıştırma ve açmaframebuf— çerçeve arabelleği (frame buffer) işlememachine— donanımla ilgili işlevlermicropython— MicroPython iç bileşenlerine erişim ve kontrolnetwork— ağ yapılandırmasıopenamp— standart Asimetrik Çok İşlemcilik (AMP) desteği sağlaructypes— ikili verilere yapılandırılmış bir şekilde erişimvfs— sanal dosya sistemi denetimicsi— kamera sensörlerisensor— kamera sensörüimage— makine görüşügif— gif kaydımjpeg— mjpeg kaydıaudio— Audio Modülüdisplay— ekran sürücüsüfir— termal sensör sürücüsü (fir == far infrared)tof— uçuş süresi sensörü sürücüsüimu— imu sensörüomv— OpenMV Cam Bilgilericrc— CRC Hesaplamaml— Makine Öğrenmesiulab— numpy uyumlu dizi kütüphanesiprotocol— OpenMV Protokol Kanallarılogging— olay günlüklemesenml— Sensor Markup Language
Ç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.
dht— DHT11 ve DHT22 sıcaklık/nem sensörlerionewire— 1-Wire veri yolu protokolüds18x20— DS18x20 sıcaklık sensörü sürücüsüneopixel— WS2812 / NeoPixel LED’lerinin kontrolülsm6dsox— LSM6DSOX 6 eksenli IMUbmi270— BMI270 6 eksenli IMUbmm150— BMM150 3 eksenli manyetometrelsm9ds1— LSM9DS1 9 eksenli IMUhts221— HTS221 nem/sıcaklık sensörülps22h— LPS22HB/HH basınç sensörühs3003— HS3003 nem/sıcaklık sensörüespflash— ESP32 ROM bootloader aygıt yazılımı flaşlayıcısıimu— Arduino Nano 33 BLE Sense için IMU yardımcısıssd1306— OLED Sürücüsütb6612— TB6612 motor sürücüsüpca9674a— I2C Genişletici Sürücüsütfp410— DVI/HDMI Denetleyicisift5x06— Dokunmatik Ekran Sürücüsügt911— GT911 5 Noktalı Kapasitif Dokunmatik Denetleyicilora— LoRa modem sürücüsüapds9960— Yakınlık, Hareket ve Renk Sensörü Sürücüsüromfs— ROMFS yardımcı araçları
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şlevlerstm— STM32 MCU’lara özgü işlevsellikssd1306— 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şlevleriromfs— 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şlevsellikdht— DHT11 ve DHT22 sıcaklık/nem sensörlerionewire— 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şlevlerstm— STM32 MCU’lara özgü işlevselliktfp410— DVI/HDMI serileştiricift5x06— kapasitif dokunmatik ekran sürücüsüdht— DHT11 ve DHT22 sıcaklık/nem sensörlerionewire— 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şlevlerstm— STM32 MCU’lara özgü işlevsellikdht— DHT11 ve DHT22 sıcaklık/nem sensörlerionewire— 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şlevlerstm— STM32 MCU’lara özgü işlevsellikdht— DHT11 ve DHT22 sıcaklık/nem sensörlerionewire— 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şlevlerstm— STM32 MCU’lara özgü işlevsellikdht— DHT11 ve DHT22 sıcaklık/nem sensörlerionewire— 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şlevlerstm— STM32 MCU’lara özgü işlevsellikdht— DHT11 ve DHT22 sıcaklık/nem sensörlerionewire— 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şlevlerstm— STM32 MCU’lara özgü işlevselliklsm6dsox— LSM6DSOX 6 eksenli IMUdht— DHT11 ve DHT22 sıcaklık/nem sensörlerids18x20— 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şlevlerstm— STM32 MCU’lara özgü işlevsellikdht— DHT11 ve DHT22 sıcaklık/nem sensörlerids18x20— 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şlevlerstm— STM32 MCU’lara özgü işlevsellikdht— DHT11 ve DHT22 sıcaklık/nem sensörlerionewire— 1-Wire veri yolu protokolüneopixel— WS2812 / NeoPixel LED’lerinin kontrolügt911— GT911 5 noktalı kapasitif dokunmatik denetleyicift5x06— 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 IMUdht— DHT11 ve DHT22 sıcaklık/nem sensörlerionewire— 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’sibmi270— BMI270 6 eksenli IMUbmm150— BMM150 3 eksenli manyetometrelsm9ds1— LSM9DS1 9 eksenli IMUhts221— 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örlerionewire— 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.