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).