fir — lämpösensorin ajuri (fir == far infrared)

fir-moduuli ohjaa kauko-infrapuna (FIR) -termopiloriryhmiä, jotka on kytketty OpenMV Cam -kameraan I2C:n kautta – tuettuna ovat 8x8-, 16x4-, 16x12- ja 32x24-sensorit (katso vakiot tämän sivun alaosasta). Jokainen kehys palauttaa pikselikohtaisen lämpötilan celsiusasteina, joka voidaan piirtää erillisenä lämpökuvana funktiolla snapshot() tai yhdistää CSI-sensorin näkyvän valon kehykseen funktiolla draw_ir(), yleensä väripaletin, kuten image.PALETTE_RAINBOW tai image.PALETTE_IRONBOW, läpi.

Esimerkkikäyttö:

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)

Funktiot

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

Alustaa kytketyn lämpösensorin.

type ilmaisee lämpösensorin tyypin:

Oletuksena type on -1, mikä saa funktion fir.init() automaattisesti etsimään ja alustamaan kytketyn lämpösensorin sen I2C-osoitteen perusteella. Huomaa, että fir.FIR_MLX90640 ja fir.FIR_MLX90641 jakavat saman I2C-osoitteen, joten sinun on välitettävä fir.FIR_MLX90641 parametriin type alustaaksesi nimenomaan sen.

refresh on lämpösensorin virkistystaajuus hertseinä:

Korkeampi virkistystaajuus heikentää tarkkuutta ja päinvastoin.

resolution on lämpösensorin mittausresoluutio bitteinä:

Korkeampi resoluutio pienentää suurinta lämpötila-aluetta ja päinvastoin.

fir.deinit() None

Poistaa lämpösensorin alustuksen ja vapauttaa resurssit.

fir.width() int

Palauttaa käytössä olevan lämpösensorin vaakaresoluution (pikseleinä).

fir.height() int

Palauttaa käytössä olevan lämpösensorin pystyresoluution (pikseleinä).

fir.type() int

Palauttaa käytössä olevan lämpösensorin tyypin. Yksi seuraavista: fir.FIR_MLX90621, fir.FIR_MLX90640, fir.FIR_MLX90641 tai fir.FIR_AMG8833.

fir.refresh() int

Palauttaa nykyisen virkistystaajuuden (Hz), joka asetettiin fir.init()-kutsun aikana.

fir.resolution() int

Palauttaa nykyisen resoluution (bittejä), joka asetettiin fir.init()-kutsun aikana.

fir.read_ta() float

Palauttaa ympäristön lämpötilan (eli sensorin lämpötilan) celsiusasteina liukulukuna.

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

Palauttaa 4-monikon (ta, ir, to_min, to_max), joka sisältää ympäristön lämpötilan, litteän width * height -listan liukulukulämpötiloista, havaitun pienimmän lämpötilan ja havaitun suurimman lämpötilan. Kaikki arvot ovat celsiusasteina.

hmirror jos True, peilaa ir-taulukon vaakasuunnassa.

vflip jos True, kääntää ir-taulukon pystysuunnassa.

transpose jos True, transponoi ir-taulukon (vaihtaa leveyden ja korkeuden keskenään).

timeout jos ei -1, millisekuntien määrä, jonka verran odotetaan uutta kehystä.

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

Piirtää ir-taulukon kohteeseen image siten, että sen vasen yläkulma on kohdassa (x, y).

ir on litteä width * height -lämpötilalista, jonka palauttaa fir.read_ir().

x_scale ohjaa, kuinka paljon piirrettyä kuvaa skaalataan x-suunnassa. Negatiivinen arvo kääntää vaakasuunnassa. Jos ei määritetty, vastaa arvoa y_scale kuvasuhteen säilyttämiseksi.

y_scale ohjaa, kuinka paljon piirrettyä kuvaa skaalataan y-suunnassa. Negatiivinen arvo kääntää pystysuunnassa. Jos ei määritetty, vastaa arvoa x_scale kuvasuhteen säilyttämiseksi.

roi on piirrettävän lähde-IR-datan kohdealueen suorakulmio (x, y, w, h).

rgb_channel on RGB-kanava (0=R, 1=G, 2=B), joka piirretään kohdekuvaan, kun kohde on RGB565. -1 (oletus) piirtää kaikki kanavat.

alpha ohjaa, kuinka suuri osa lähdekuvasta sekoitetaan kohteeseen (0-255). 255 on täysin läpinäkymätön; 0 ei aiheuta muutosta.

color_palette on väripaletin enum (esim. image.PALETTE_RAINBOW, image.PALETTE_IRONBOW) tai 256-pikselinen RGB565-kuva, jota käytetään hakutauluna harmaasävylähdearvolle.

alpha_palette on 256-pikselinen GRAYSCALE-kuva, jota käytetään alfa-hakutauluna, joka moduloi arvoa alpha kunkin lähdepikselin arvon mukaan.

hint on looginen TAI seuraavista:

scale on 2-monikko (min, max), joka ohjaa ir-taulukon skaalaukseen käytettävää pienintä/suurinta lämpötilaa (celsiusasteina). Oletuksena todellinen ir-minimi ja -maksimi.

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

Ottaa kehyksen lämpösensorista ja palauttaa sen image.Image-objektina. Toimii samaan tapaan kuin sensor.snapshot(). Jos copy_to_fb on False, uusi kuva varataan MicroPythonin keosta (joka on rajallinen); aseta copy_to_fb arvoon True kirjoittaaksesi tuloksen sen sijaan kehyspuskuriin.

hmirror jos True, peilaa uuden kuvan vaakasuunnassa.

vflip jos True, kääntää uuden kuvan pystysuunnassa.

transpose jos True, transponoi uuden kuvan.

x_scale ohjaa, kuinka paljon uutta kuvaa skaalataan x-suunnassa. Negatiivinen arvo kääntää vaakasuunnassa. Jos ei määritetty, vastaa arvoa y_scale kuvasuhteen säilyttämiseksi.

y_scale ohjaa, kuinka paljon uutta kuvaa skaalataan y-suunnassa. Negatiivinen arvo kääntää pystysuunnassa. Jos ei määritetty, vastaa arvoa x_scale kuvasuhteen säilyttämiseksi.

roi on piirrettävän lähde-IR-datan kohdealueen suorakulmio (x, y, w, h).

rgb_channel on RGB-kanava (0=R, 1=G, 2=B), joka piirretään. -1 (oletus) piirtää kaikki kanavat.

alpha ohjaa, kuinka suuri osa lähdekuvasta sekoitetaan (0-255). 255 on täysin läpinäkymätön.

color_palette on väripaletin enum tai 256-pikselinen RGB565-kuva, jota käytetään hakutauluna harmaasävylähdearvolle.

alpha_palette on 256-pikselinen GRAYSCALE-kuva, jota käytetään alfa-hakutauluna.

hint on looginen TAI seuraavista:

scale on 2-monikko (min, max), joka ohjaa IR-taulukon skaalaukseen käytettävää pienintä/suurinta lämpötilaa (celsiusasteina). Oletuksena todellinen IR-minimi ja -maksimi.

pixformat ohjaa ulostulon pikseliformaattia. Täytyy olla image.GRAYSCALE tai image.RGB565.

copy_to_fb jos True, kirjoittaa tuloksen kehyspuskuriin sen sijaan, että varaisi sen keosta.

timeout jos ei -1, millisekuntien määrä, jonka verran odotetaan uutta kehystä.

Vakiot

fir.FIR_SHIELD: int

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

fir.FIR_MLX90621: int

MLX90621-lämpösensori (16x4).

fir.FIR_MLX90640: int

MLX90640-lämpösensori (32x24).

fir.FIR_MLX90641: int

MLX90641-lämpösensori (16x12).

fir.FIR_AMG8833: int

AMG8833-lämpösensori (8x8).