fir --- driver sensor termal (fir == far infrared)

Modul fir mengendalikan array termopil Far-Infrared (FIR) yang terhubung ke OpenMV Cam melalui I2C -- sensor 8x8, 16x4, 16x12, dan 32x24 didukung (lihat konstanta di bagian bawah halaman ini). Setiap bingkai mengembalikan suhu per piksel dalam derajat Celsius, yang dapat dirender sebagai citra termal mandiri dengan snapshot() atau digabungkan ke bingkai cahaya tampak dari sensor CSI dengan draw_ir(), biasanya melalui palet warna seperti image.PALETTE_RAINBOW atau image.PALETTE_IRONBOW.

Contoh penggunaan:

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)

Fungsi

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

Menginisialisasi sensor termal yang terpasang.

type menunjukkan jenis sensor termal:

Secara default type adalah -1 yang menyebabkan fir.init() secara otomatis memindai dan menginisialisasi sensor termal yang terpasang berdasarkan alamat I2C-nya. Perhatikan bahwa fir.FIR_MLX90640 dan fir.FIR_MLX90641 berbagi alamat I2C yang sama sehingga Anda harus melewatkan fir.FIR_MLX90641 ke type untuk menginisialisasinya secara khusus.

refresh adalah laju refresh sensor termal dalam Hz:

Laju refresh yang lebih tinggi menurunkan akurasi dan sebaliknya.

resolution adalah resolusi pengukuran sensor termal dalam bit:

Resolusi yang lebih tinggi menurunkan rentang suhu maksimum dan sebaliknya.

fir.deinit() None

Menginisialisasi ulang sensor termal dan membebaskan sumber daya.

fir.width() int

Mengembalikan resolusi horizontal (dalam piksel) dari sensor termal yang sedang digunakan.

fir.height() int

Mengembalikan resolusi vertikal (dalam piksel) dari sensor termal yang sedang digunakan.

fir.type() int

Mengembalikan jenis sensor termal yang sedang digunakan. Salah satu dari fir.FIR_MLX90621, fir.FIR_MLX90640, fir.FIR_MLX90641, atau fir.FIR_AMG8833.

fir.refresh() int

Mengembalikan laju refresh saat ini (Hz) yang ditetapkan selama pemanggilan fir.init().

fir.resolution() int

Mengembalikan resolusi saat ini (bit) yang ditetapkan selama pemanggilan fir.init().

fir.read_ta() float

Mengembalikan suhu ambien (yaitu suhu sensor) dalam celsius sebagai float.

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

Mengembalikan 4-tuple (ta, ir, to_min, to_max) yang berisi suhu ambien, daftar float suhu datar width * height, suhu minimum yang terlihat, dan suhu maksimum yang terlihat. Semua nilai dalam celsius.

hmirror jika True mencerminkan array ir secara horizontal.

vflip jika True membalik array ir secara vertikal.

transpose jika True melakukan transposisi array ir (menukar lebar dan tinggi).

timeout jika bukan -1, jumlah milidetik untuk menunggu bingkai baru.

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

Menggambar array ir pada image dengan sudut kiri atas di (x, y).

ir adalah daftar suhu datar width * height yang dikembalikan oleh fir.read_ir().

x_scale mengontrol seberapa besar citra yang dirender diskalakan dalam arah x. Nilai negatif membalik secara horizontal. Jika tidak ditentukan, menyamakan y_scale untuk mempertahankan rasio aspek.

y_scale mengontrol seberapa besar citra yang dirender diskalakan dalam arah y. Nilai negatif membalik secara vertikal. Jika tidak ditentukan, menyamakan x_scale untuk mempertahankan rasio aspek.

roi adalah persegi panjang wilayah yang diminati (x, y, w, h) dari data IR sumber yang akan digambar.

rgb_channel adalah saluran RGB (0=R, 1=G, 2=B) yang dirender ke citra tujuan ketika tujuan adalah RGB565. -1 (default) merender semua saluran.

alpha mengontrol seberapa banyak citra sumber yang dicampur ke tujuan (0-255). 255 sepenuhnya buram; 0 tidak menghasilkan modifikasi.

color_palette adalah enum palet warna (mis. image.PALETTE_RAINBOW, image.PALETTE_IRONBOW) atau citra RGB565 256 piksel yang digunakan sebagai tabel pencarian pada nilai sumber skala abu-abu.

alpha_palette adalah citra GRAYSCALE 256 piksel yang digunakan sebagai tabel pencarian alpha yang memodulasi alpha per nilai piksel sumber.

hint adalah OR logis dari:

scale adalah 2-tuple (min, max) yang mengontrol suhu min/maks (dalam celsius) yang digunakan untuk menskalakan array ir. Default ke nilai min dan maks ir yang sebenarnya.

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

Mengambil bingkai dari sensor termal dan mengembalikannya sebagai image.Image. Bekerja mirip dengan sensor.snapshot(). Jika copy_to_fb adalah False, citra baru dialokasikan di heap MicroPython (yang terbatas); atur copy_to_fb ke True untuk menulis hasilnya ke buffer bingkai.

hmirror jika True mencerminkan citra baru secara horizontal.

vflip jika True membalik citra baru secara vertikal.

transpose jika True melakukan transposisi citra baru.

x_scale mengontrol seberapa besar citra baru diskalakan dalam arah x. Nilai negatif membalik secara horizontal. Jika tidak ditentukan, menyamakan y_scale untuk mempertahankan rasio aspek.

y_scale mengontrol seberapa besar citra baru diskalakan dalam arah y. Nilai negatif membalik secara vertikal. Jika tidak ditentukan, menyamakan x_scale untuk mempertahankan rasio aspek.

roi adalah persegi panjang wilayah yang diminati (x, y, w, h) dari data IR sumber yang akan digambar.

rgb_channel adalah saluran RGB (0=R, 1=G, 2=B) yang dirender. -1 (default) merender semua saluran.

alpha mengontrol seberapa banyak citra sumber yang dicampur (0-255). 255 sepenuhnya buram.

color_palette adalah enum palet warna atau citra RGB565 256 piksel yang digunakan sebagai tabel pencarian pada nilai sumber skala abu-abu.

alpha_palette adalah citra GRAYSCALE 256 piksel yang digunakan sebagai tabel pencarian alpha.

hint adalah OR logis dari:

scale adalah 2-tuple (min, max) yang mengontrol suhu min/maks (dalam celsius) yang digunakan untuk menskalakan array IR. Default ke nilai min dan maks IR yang sebenarnya.

pixformat mengontrol format piksel keluaran. Harus berupa image.GRAYSCALE atau image.RGB565.

copy_to_fb jika True menulis hasilnya ke buffer bingkai alih-alih mengalokasikan di heap.

timeout jika bukan -1, jumlah milidetik untuk menunggu bingkai baru.

Konstanta

fir.FIR_SHIELD: int

OpenMV Cam Thermopile Shield (MLX90621). Alias untuk fir.FIR_MLX90621.

fir.FIR_MLX90621: int

Sensor termal MLX90621 (16x4).

fir.FIR_MLX90640: int

Sensor termal MLX90640 (32x24).

fir.FIR_MLX90641: int

Sensor termal MLX90641 (16x12).

fir.FIR_AMG8833: int

Sensor termal AMG8833 (8x8).