fir — termal sensör sürücüsü (fir == far infrared)

fir modülü, bir OpenMV Cam’e I2C üzerinden bağlanan Uzak Kızılötesi (FIR) termopil dizilerini sürer – 8x8, 16x4, 16x12 ve 32x24 sensörler desteklenir (bu sayfanın altındaki sabitlere bakın). Her çerçeve, piksel başına Santigrat derece cinsinden bir sıcaklık döndürür; bu, snapshot() ile bağımsız bir termal görüntü olarak işlenebilir veya genellikle image.PALETTE_RAINBOW ya da image.PALETTE_IRONBOW gibi bir renk paleti aracılığıyla draw_ir() ile CSI sensöründen gelen görünür ışık çerçevesinin üzerine birleştirilebilir.

Örnek kullanım:

import csi
import fir

csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.QVGA)

fir.init()

while True:
    img = csi0.snapshot()
    ta, ir, to_min, to_max = fir.read_ir()
    fir.draw_ir(img, ir)
    print("====================")
    print("Ambient temperature: %0.2f" % ta)
    print("Min temperature seen: %0.2f" % to_min)
    print("Max temperature seen: %0.2f" % to_max)

Fonksiyonlar

fir.init(type: int = -1, refresh: int | None = None, resolution: int | None = None) None

Bağlı bir termal sensörü başlatır.

type termal sensörün türünü belirtir:

Varsayılan olarak type değeri -1 olup, bu durum fir.init() fonksiyonunun bağlı bir termal sensörü I2C adresine göre otomatik olarak taramasına ve başlatmasına neden olur. fir.FIR_MLX90640 ve fir.FIR_MLX90641 aynı I2C adresini paylaştığından, özel olarak başlatmak için type parametresine fir.FIR_MLX90641 değerini geçmeniz gerektiğini unutmayın.

refresh Hz cinsinden termal sensör yenileme hızıdır:

Daha yüksek bir yenileme hızı doğruluğu düşürür ve tersi de geçerlidir.

resolution bit cinsinden termal sensör ölçüm çözünürlüğüdür:

Daha yüksek bir çözünürlük maksimum sıcaklık aralığını düşürür ve tersi de geçerlidir.

fir.deinit() None

Termal sensörü kapatır ve kaynakları serbest bırakır.

fir.width() int

Kullanımdaki termal sensörün yatay çözünürlüğünü (piksel cinsinden) döndürür.

fir.height() int

Kullanımdaki termal sensörün dikey çözünürlüğünü (piksel cinsinden) döndürür.

fir.type() int

Kullanımdaki termal sensörün türünü döndürür. fir.FIR_MLX90621, fir.FIR_MLX90640, fir.FIR_MLX90641 veya fir.FIR_AMG8833 değerlerinden biri.

fir.refresh() int

fir.init() çağrısı sırasında ayarlanan geçerli yenileme hızını (Hz) döndürür.

fir.resolution() int

fir.init() çağrısı sırasında ayarlanan geçerli çözünürlüğü (bit) döndürür.

fir.read_ta() float

Ortam sıcaklığını (yani sensör sıcaklığını) Santigrat cinsinden float olarak döndürür.

fir.read_ir(hmirror: bool = False, vflip: bool = False, transpose: bool = False, timeout: int = -1) Tuple[float, List[float], float, float]

Ortam sıcaklığını, width * height boyutunda düz bir float sıcaklık listesini, görülen minimum sıcaklığı ve görülen maksimum sıcaklığı içeren bir 4’lü (ta, ir, to_min, to_max) döndürür. Tüm değerler Santigrat cinsindendir.

hmirror True ise ir dizisini yatay olarak aynalar.

vflip True ise ir dizisini dikey olarak çevirir.

transpose True ise ir dizisini devrik hale getirir (genişlik ve yüksekliği değiştirir).

timeout -1 değilse, yeni bir çerçeve için beklenecek milisaniye sayısıdır.

fir.draw_ir(image: image.Image, ir: List[float], x: int = 0, y: int = 0, x_scale: float | None = None, y_scale: float | None = None, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | None = image.PALETTE_RAINBOW, alpha_palette: int | None = None, hint: int = 0, scale: Tuple[float, float] | None = None) None

ir dizisini, sol üst köşesi (x, y) konumunda olacak şekilde image üzerine çizer.

ir, fir.read_ir() tarafından döndürülen width * height boyutundaki düz sıcaklık listesidir.

x_scale işlenen görüntünün x yönünde ne kadar ölçekleneceğini denetler. Negatif bir değer yatay olarak çevirir. Belirtilmezse, en boy oranını korumak için y_scale ile eşleşir.

y_scale işlenen görüntünün y yönünde ne kadar ölçekleneceğini denetler. Negatif bir değer dikey olarak çevirir. Belirtilmezse, en boy oranını korumak için x_scale ile eşleşir.

roi çizilecek kaynak IR verisinin ilgi bölgesi dikdörtgenidir (x, y, w, h).

rgb_channel, hedef RGB565 olduğunda hedef görüntüye işlenecek RGB kanalıdır (0=R, 1=G, 2=B). -1 (varsayılan) tüm kanalları işler.

alpha kaynak görüntünün ne kadarının hedefe karıştırılacağını denetler (0-255). 255 tamamen opaktır; 0 hiçbir değişiklik yapmaz.

color_palette bir renk paleti numaralandırması (örn. image.PALETTE_RAINBOW, image.PALETTE_IRONBOW) ya da gri tonlama kaynak değeri üzerinde arama tablosu olarak kullanılan 256 piksellik bir RGB565 görüntüsüdür.

alpha_palette, kaynak piksel değeri başına alpha değerini modüle eden bir alfa arama tablosu olarak kullanılan 256 piksellik bir GRAYSCALE görüntüsüdür.

hint şunların mantıksal VEYA’sıdır:

scale, ir dizisini ölçeklemek için kullanılan minimum/maksimum sıcaklığı (Santigrat cinsinden) denetleyen bir 2’li (min, max) değeridir. Varsayılan olarak gerçek ir minimum ve maksimum değerleridir.

fir.snapshot(hmirror: bool = False, vflip: bool = False, transpose: bool = False, x_scale: float | None = None, y_scale: float | None = None, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | None = image.PALETTE_RAINBOW, alpha_palette: int | None = None, hint: int = 0, scale: Tuple[float, float] | None = None, pixformat: int = image.RGB565, copy_to_fb: bool = False, timeout: int = -1) image.Image

Termal sensörden bir çerçeve yakalar ve bunu bir image.Image olarak döndürür. sensor.snapshot() ile benzer şekilde çalışır. copy_to_fb False ise yeni görüntü MicroPython yığınında (ki bu sınırlıdır) ayrılır; bunun yerine sonucu çerçeve arabelleğine (frame buffer) yazmak için copy_to_fb değerini True olarak ayarlayın.

hmirror True ise yeni görüntüyü yatay olarak aynalar.

vflip True ise yeni görüntüyü dikey olarak çevirir.

transpose True ise yeni görüntüyü devrik hale getirir.

x_scale yeni görüntünün x yönünde ne kadar ölçekleneceğini denetler. Negatif bir değer yatay olarak çevirir. Belirtilmezse, en boy oranını korumak için y_scale ile eşleşir.

y_scale yeni görüntünün y yönünde ne kadar ölçekleneceğini denetler. Negatif bir değer dikey olarak çevirir. Belirtilmezse, en boy oranını korumak için x_scale ile eşleşir.

roi çizilecek kaynak IR verisinin ilgi bölgesi dikdörtgenidir (x, y, w, h).

rgb_channel işlenecek RGB kanalıdır (0=R, 1=G, 2=B). -1 (varsayılan) tüm kanalları işler.

alpha kaynak görüntünün ne kadarının karıştırılacağını denetler (0-255). 255 tamamen opaktır.

color_palette bir renk paleti numaralandırması ya da gri tonlama kaynak değeri üzerinde arama tablosu olarak kullanılan 256 piksellik bir RGB565 görüntüsüdür.

alpha_palette bir alfa arama tablosu olarak kullanılan 256 piksellik bir GRAYSCALE görüntüsüdür.

hint şunların mantıksal VEYA’sıdır:

scale, IR dizisini ölçeklemek için kullanılan minimum/maksimum sıcaklığı (Santigrat cinsinden) denetleyen bir 2’li (min, max) değeridir. Varsayılan olarak gerçek IR minimum ve maksimum değerleridir.

pixformat çıktı piksel formatını denetler. image.GRAYSCALE veya image.RGB565 olmalıdır.

copy_to_fb True ise sonucu yığında ayırmak yerine çerçeve arabelleğine (frame buffer) yazar.

timeout -1 değilse, yeni bir çerçeve için beklenecek milisaniye sayısıdır.

Sabitler

fir.FIR_SHIELD: int

OpenMV Cam Thermopile Shield (MLX90621). fir.FIR_MLX90621 için takma ad.

fir.FIR_MLX90621: int

MLX90621 termal sensör (16x4).

fir.FIR_MLX90640: int

MLX90640 termal sensör (32x24).

fir.FIR_MLX90641: int

MLX90641 termal sensör (16x12).

fir.FIR_AMG8833: int

AMG8833 termal sensör (8x8).