fir — hőérzékelő-meghajtó (fir == far infrared, távoli infravörös)

A fir modul az OpenMV Cam-hez I2C-n keresztül csatlakoztatott távoli infravörös (FIR) termoelem-tömböket vezérli – 8x8, 16x4, 16x12 és 32x24 méretű érzékelők támogatottak (lásd az oldal alján található konstansokat). Minden képkocka képpontonkénti hőmérsékletet ad vissza Celsius-fokban, amely megjeleníthető önálló hőképként a snapshot() függvénnyel, vagy rávetíthető a CSI érzékelő látható fényű képkockájára a draw_ir() függvénnyel, általában egy színpalettán keresztül, mint például a image.PALETTE_RAINBOW vagy a image.PALETTE_IRONBOW.

Példa a használatra:

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)

Függvények

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

Inicializál egy csatlakoztatott hőérzékelőt.

A type a hőérzékelő típusát jelzi:

By default type is -1 which causes fir.init() to automatically scan and initialize an attached thermal sensor based on its I2C address. Note that fir.FIR_MLX90640 and fir.FIR_MLX90641 share the same I2C address so you must pass fir.FIR_MLX90641 to type to initialize it specifically.

A refresh a hőérzékelő frissítési gyakorisága Hz-ben:

A magasabb frissítési gyakoriság csökkenti a pontosságot, és fordítva.

A resolution a hőérzékelő mérési felbontása bitekben:

A magasabb felbontás csökkenti a maximális hőmérséklet-tartományt, és fordítva.

fir.deinit() None

Deinicializálja a hőérzékelőt és felszabadítja az erőforrásokat.

fir.width() int

Visszaadja a használatban lévő hőérzékelő vízszintes felbontását (képpontban).

fir.height() int

Visszaadja a használatban lévő hőérzékelő függőleges felbontását (képpontban).

fir.type() int

Visszaadja a használatban lévő hőérzékelő típusát. A fir.FIR_MLX90621, fir.FIR_MLX90640, fir.FIR_MLX90641 vagy fir.FIR_AMG8833 egyike.

fir.refresh() int

Visszaadja a fir.init() hívás során beállított aktuális frissítési gyakoriságot (Hz).

fir.resolution() int

Visszaadja a fir.init() hívás során beállított aktuális felbontást (bit).

fir.read_ta() float

Visszaadja a környezeti hőmérsékletet (azaz az érzékelő hőmérsékletét) Celsius-fokban, lebegőpontos értékként.

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

Visszaad egy 4-elemű (ta, ir, to_min, to_max) rendezett négyest, amely tartalmazza a környezeti hőmérsékletet, a lebegőpontos hőmérsékletek lapos width * height listáját, a megfigyelt minimális hőmérsékletet és a megfigyelt maximális hőmérsékletet. Minden érték Celsius-fokban van.

A hmirror ha True, vízszintesen tükrözi az ir tömböt.

A vflip ha True, függőlegesen tükrözi az ir tömböt.

A transpose ha True, transzponálja az ir tömböt (felcseréli a szélességet és a magasságot).

A timeout ha nem -1, akkor az új képkockára való várakozás ezredmásodperceinek száma.

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

Felrajzolja az ir tömböt az image képre úgy, hogy annak bal felső sarka az (x, y) pontnál legyen.

Az ir a fir.read_ir() által visszaadott lapos width * height hőmérsékletlista.

Az x_scale szabályozza, hogy a megjelenített kép mennyivel legyen átméretezve x irányban. Negatív érték vízszintesen tükröz. Ha nincs megadva, a y_scale értékéhez igazodik a képarány megtartása érdekében.

Az y_scale szabályozza, hogy a megjelenített kép mennyivel legyen átméretezve y irányban. Negatív érték függőlegesen tükröz. Ha nincs megadva, az x_scale értékéhez igazodik a képarány megtartása érdekében.

A roi a forrás IR-adatok azon érdeklődési terület téglalapja (x, y, w, h), amelyet rajzolni kell.

Az rgb_channel az az RGB-csatorna (0=R, 1=G, 2=B), amelyet a célképre kell megjeleníteni, ha a cél RGB565. A -1 (alapértelmezett) az összes csatornát megjeleníti.

Az alpha szabályozza, hogy a forráskép mennyire legyen beleolvasztva a célképbe (0-255). A 255 teljesen átlátszatlan; a 0 nem eredményez módosítást.

A color_palette egy színpaletta-enum (pl. image.PALETTE_RAINBOW, image.PALETTE_IRONBOW) vagy egy 256 képpontos RGB565 kép, amelyet keresőtáblaként használ a szürkeárnyalatos forrásértékhez.

Az alpha_palette egy 256 képpontos GRAYSCALE kép, amelyet alfa-keresőtáblaként használ, és amely forrásképpontonként modulálja az alpha értéket.

A hint a következők logikai VAGY kapcsolata:

A scale egy 2-elemű (min, max) rendezett pár, amely az ir tömb skálázásához használt minimális/maximális hőmérsékletet (Celsius-fokban) szabályozza. Alapértelmezés szerint az ir tényleges minimuma és maximuma.

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

Rögzít egy képkockát a hőérzékelőtől, és image.Image objektumként adja vissza. A sensor.snapshot() függvényhez hasonlóan működik. Ha a copy_to_fb False, az új kép a MicroPython kupacon (amely korlátozott) kerül lefoglalásra; állítsa a copy_to_fb értékét True-ra, hogy az eredmény a képkocka-pufferbe íródjon helyette.

A hmirror ha True, vízszintesen tükrözi az új képet.

A vflip ha True, függőlegesen tükrözi az új képet.

A transpose ha True, transzponálja az új képet.

Az x_scale szabályozza, hogy az új kép mennyivel legyen átméretezve x irányban. Negatív érték vízszintesen tükröz. Ha nincs megadva, a y_scale értékéhez igazodik a képarány megtartása érdekében.

Az y_scale szabályozza, hogy az új kép mennyivel legyen átméretezve y irányban. Negatív érték függőlegesen tükröz. Ha nincs megadva, az x_scale értékéhez igazodik a képarány megtartása érdekében.

A roi a forrás IR-adatok azon érdeklődési terület téglalapja (x, y, w, h), amelyet rajzolni kell.

Az rgb_channel az a megjelenítendő RGB-csatorna (0=R, 1=G, 2=B). A -1 (alapértelmezett) az összes csatornát megjeleníti.

Az alpha szabályozza, hogy a forráskép mennyire legyen beleolvasztva (0-255). A 255 teljesen átlátszatlan.

A color_palette egy színpaletta-enum vagy egy 256 képpontos RGB565 kép, amelyet keresőtáblaként használ a szürkeárnyalatos forrásértékhez.

Az alpha_palette egy 256 képpontos GRAYSCALE kép, amelyet alfa-keresőtáblaként használ.

A hint a következők logikai VAGY kapcsolata:

A scale egy 2-elemű (min, max) rendezett pár, amely az IR-tömb skálázásához használt minimális/maximális hőmérsékletet (Celsius-fokban) szabályozza. Alapértelmezés szerint az IR tényleges minimuma és maximuma.

A pixformat a kimeneti képpontformátumot szabályozza. image.GRAYSCALE vagy image.RGB565 kell legyen.

A copy_to_fb ha True, az eredményt a képkocka-pufferbe írja a kupacon való lefoglalás helyett.

A timeout ha nem -1, akkor az új képkockára való várakozás ezredmásodperceinek száma.

Konstansok

fir.FIR_SHIELD: int

Az OpenMV Cam Thermopile Shield (MLX90621). A fir.FIR_MLX90621 aliasa.

fir.FIR_MLX90621: int

MLX90621 hőérzékelő (16x4).

fir.FIR_MLX90640: int

MLX90640 hőérzékelő (32x24).

fir.FIR_MLX90641: int

MLX90641 hőérzékelő (16x12).

fir.FIR_AMG8833: int

AMG8833 hőérzékelő (8x8).