fir — upravljački program termalnog senzora (fir == daleko infracrveno)

Modul fir upravlja termopilnim poljima dalekog infracrvenog (FIR) zračenja priključenima na OpenMV Cam preko I2C – podržani su senzori 8x8, 16x4, 16x12 i 32x24 (vidi konstante na dnu ove stranice). Svaka sličica vraća temperaturu po pikselu u stupnjevima Celzijevim, koja se može prikazati kao samostalna termalna slika pomoću snapshot() ili spojiti s vidljivom svjetlosnom sličicom iz CSI senzora pomoću draw_ir(), obično putem palete boja kao što je image.PALETTE_RAINBOW ili image.PALETTE_IRONBOW.

Primjer upotrebe:

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)

Funkcije

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

Inicijalizira priključeni termalni senzor.

type označava vrstu termalnog senzora:

Prema zadanim postavkama type je -1, što uzrokuje da fir.init() automatski pretraži i inicijalizira priključeni termalni senzor na temelju njegove I2C adrese. Napomena: fir.FIR_MLX90640 i fir.FIR_MLX90641 dijele istu I2C adresu, pa morate proslijediti fir.FIR_MLX90641 u type kako biste ga konkretno inicijalizirali.

refresh je brzina osvježavanja termalnog senzora u Hz:

Veća brzina osvježavanja smanjuje točnost i obrnuto.

resolution je razlučivost mjerenja termalnog senzora u bitovima:

Veća razlučivost smanjuje maksimalni temperaturni raspon i obrnuto.

fir.deinit() None

Deinicijalizira termalni senzor i oslobađa resurse.

fir.width() int

Vraća vodoravnu razlučivost (u pikselima) termalnog senzora koji se koristi.

fir.height() int

Vraća okomitu razlučivost (u pikselima) termalnog senzora koji se koristi.

fir.type() int

Vraća vrstu termalnog senzora koji se koristi. Jedna od fir.FIR_MLX90621, fir.FIR_MLX90640, fir.FIR_MLX90641 ili fir.FIR_AMG8833.

fir.refresh() int

Vraća trenutnu brzinu osvježavanja (Hz) postavljenu tijekom poziva fir.init().

fir.resolution() int

Vraća trenutnu razlučivost (bitova) postavljenu tijekom poziva fir.init().

fir.read_ta() float

Vraća temperaturu okoline (tj. temperaturu senzora) u Celzijevim stupnjevima kao float.

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

Vraća 4-torku (ta, ir, to_min, to_max) koja sadrži temperaturu okoline, ravnu listu width * height temperatura tipa float, najmanju zabilježenu temperaturu i najveću zabilježenu temperaturu. Sve vrijednosti su u Celzijevim stupnjevima.

hmirror ako je True, vodoravno zrcali polje ir.

vflip ako je True, okomito preokreće polje ir.

transpose ako je True, transponira polje ir (zamjenjuje širinu i visinu).

timeout ako nije -1, broj milisekundi za čekanje na novu sličicu.

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

Crta polje ir na image s gornjim lijevim kutom na (x, y).

ir je ravna lista temperatura width * height koju vraća fir.read_ir().

x_scale upravlja koliko se prikazana slika skalira u smjeru x. Negativna vrijednost vodoravno preokreće. Ako nije navedeno, podudara se s y_scale kako bi se zadržao omjer stranica.

y_scale upravlja koliko se prikazana slika skalira u smjeru y. Negativna vrijednost okomito preokreće. Ako nije navedeno, podudara se s x_scale kako bi se zadržao omjer stranica.

roi je pravokutnik područja interesa (x, y, w, h) izvornih IR podataka za crtanje.

rgb_channel je RGB kanal (0=R, 1=G, 2=B) za prikaz na odredišnoj slici kada je odredište RGB565. -1 (zadano) prikazuje sve kanale.

alpha upravlja koliko se izvorne slike stapa u odredište (0-255). 255 je potpuno neprozirno; 0 ne rezultira nikakvom izmjenom.

color_palette je enum palete boja (npr. image.PALETTE_RAINBOW, image.PALETTE_IRONBOW) ili 256-pikselna RGB565 slika koja se koristi kao tablica za pretraživanje na izvornoj vrijednosti sivih tonova.

alpha_palette je 256-pikselna GRAYSCALE slika koja se koristi kao alfa tablica za pretraživanje koja modulira alpha po vrijednosti izvornog piksela.

hint je logički OR sljedećeg:

scale je 2-torka (min, max) koja upravlja minimalnom/maksimalnom temperaturom (u Celzijevim stupnjevima) koja se koristi za skaliranje polja ir. Zadano je stvarni minimum i maksimum ir.

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

Hvata sličicu s termalnog senzora i vraća je kao image.Image. Radi slično kao sensor.snapshot(). Ako je copy_to_fb False, nova slika se alocira na MicroPython hrpi (koja je ograničena); postavite copy_to_fb na True kako biste umjesto toga zapisali rezultat u međuspremnik slike.

hmirror ako je True, vodoravno zrcali novu sliku.

vflip ako je True, okomito preokreće novu sliku.

transpose ako je True, transponira novu sliku.

x_scale upravlja koliko se nova slika skalira u smjeru x. Negativna vrijednost vodoravno preokreće. Ako nije navedeno, podudara se s y_scale kako bi se zadržao omjer stranica.

y_scale upravlja koliko se nova slika skalira u smjeru y. Negativna vrijednost okomito preokreće. Ako nije navedeno, podudara se s x_scale kako bi se zadržao omjer stranica.

roi je pravokutnik područja interesa (x, y, w, h) izvornih IR podataka za crtanje.

rgb_channel je RGB kanal (0=R, 1=G, 2=B) za prikaz. -1 (zadano) prikazuje sve kanale.

alpha upravlja koliko se izvorne slike stapa (0-255). 255 je potpuno neprozirno.

color_palette je enum palete boja ili 256-pikselna RGB565 slika koja se koristi kao tablica za pretraživanje na izvornoj vrijednosti sivih tonova.

alpha_palette je 256-pikselna GRAYSCALE slika koja se koristi kao alfa tablica za pretraživanje.

hint je logički OR sljedećeg:

scale je 2-torka (min, max) koja upravlja minimalnom/maksimalnom temperaturom (u Celzijevim stupnjevima) koja se koristi za skaliranje IR polja. Zadano je stvarni minimum i maksimum IR-a.

pixformat upravlja izlaznim formatom piksela. Mora biti image.GRAYSCALE ili image.RGB565.

copy_to_fb ako je True, zapisuje rezultat u međuspremnik slike umjesto alociranja na hrpi.

timeout ako nije -1, broj milisekundi za čekanje na novu sličicu.

Konstante

fir.FIR_SHIELD: int

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

fir.FIR_MLX90621: int

MLX90621 termalni senzor (16x4).

fir.FIR_MLX90640: int

MLX90640 termalni senzor (32x24).

fir.FIR_MLX90641: int

MLX90641 termalni senzor (16x12).

fir.FIR_AMG8833: int

AMG8833 termalni senzor (8x8).