fir — thermische sensor-driver (fir == far infrared)

De fir-module bestuurt Far-Infrared (FIR) thermopile-arrays die via I2C op een OpenMV Cam zijn aangesloten – 8x8-, 16x4-, 16x12- en 32x24-sensoren worden ondersteund (zie de constanten onderaan deze pagina). Elk frame retourneert een temperatuur per pixel in graden Celsius, die kan worden weergegeven als een op zichzelf staande thermische afbeelding met snapshot() of kan worden samengesteld op een frame met zichtbaar licht van de CSI-sensor met draw_ir(), normaal gesproken via een kleurenpalet zoals image.PALETTE_RAINBOW of image.PALETTE_IRONBOW.

Voorbeeldgebruik:

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)

Functies

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

Initialiseert een aangesloten thermische sensor.

type geeft het type thermische sensor aan:

Standaard is type gelijk aan -1, waardoor fir.init() automatisch scant naar en een aangesloten thermische sensor initialiseert op basis van het I2C-adres. Let op dat fir.FIR_MLX90640 en fir.FIR_MLX90641 hetzelfde I2C-adres delen, dus je moet fir.FIR_MLX90641 aan type doorgeven om die specifiek te initialiseren.

refresh is de verversingssnelheid van de thermische sensor in Hz:

Een hogere verversingssnelheid verlaagt de nauwkeurigheid en omgekeerd.

resolution is de meetresolutie van de thermische sensor in bits:

Een hogere resolutie verlaagt het maximale temperatuurbereik en omgekeerd.

fir.deinit() None

Deïnitialiseert de thermische sensor en geeft bronnen vrij.

fir.width() int

Retourneert de horizontale resolutie (in pixels) van de in gebruik zijnde thermische sensor.

fir.height() int

Retourneert de verticale resolutie (in pixels) van de in gebruik zijnde thermische sensor.

fir.type() int

Retourneert het type van de in gebruik zijnde thermische sensor. Een van fir.FIR_MLX90621, fir.FIR_MLX90640, fir.FIR_MLX90641 of fir.FIR_AMG8833.

fir.refresh() int

Retourneert de huidige verversingssnelheid (Hz) die is ingesteld tijdens de fir.init()-aanroep.

fir.resolution() int

Retourneert de huidige resolutie (bits) die is ingesteld tijdens de fir.init()-aanroep.

fir.read_ta() float

Retourneert de omgevingstemperatuur (d.w.z. de sensortemperatuur) in graden Celsius als een float.

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

Retourneert een 4-tuple (ta, ir, to_min, to_max) met de omgevingstemperatuur, een platte width * height-lijst met float-temperaturen, de laagst waargenomen temperatuur en de hoogst waargenomen temperatuur. Alle waarden zijn in graden Celsius.

hmirror indien True spiegelt de ir-array horizontaal.

vflip indien True keert de ir-array verticaal om.

transpose indien True transponeert de ir-array (verwisselt breedte en hoogte).

timeout indien niet -1, het aantal milliseconden om op een nieuw frame te wachten.

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

Tekent de ir-array op image met de linkerbovenhoek op (x, y).

ir is de platte width * height-temperatuurlijst die wordt geretourneerd door fir.read_ir().

x_scale bepaalt hoeveel de gerenderde afbeelding wordt geschaald in de x-richting. Een negatieve waarde spiegelt horizontaal. Indien niet opgegeven, komt deze overeen met y_scale om de beeldverhouding te behouden.

y_scale bepaalt hoeveel de gerenderde afbeelding wordt geschaald in de y-richting. Een negatieve waarde spiegelt verticaal. Indien niet opgegeven, komt deze overeen met x_scale om de beeldverhouding te behouden.

roi is de rechthoek van het aandachtsgebied (x, y, w, h) van de bron-IR-data die getekend moet worden.

rgb_channel is het RGB-kanaal (0=R, 1=G, 2=B) dat op de doelafbeelding gerenderd wordt wanneer het doel RGB565 is. -1 (standaard) rendert alle kanalen.

alpha bepaalt hoeveel van de bronafbeelding in het doel wordt gemengd (0-255). 255 is volledig dekkend; 0 leidt tot geen wijziging.

color_palette is een kleurenpalet-enum (bijv. image.PALETTE_RAINBOW, image.PALETTE_IRONBOW) of een RGB565-afbeelding van 256 pixels die als opzoektabel op de grijswaarden-bronwaarde wordt gebruikt.

alpha_palette is een GRAYSCALE-afbeelding van 256 pixels die als alpha-opzoektabel wordt gebruikt en alpha per bronpixelwaarde moduleert.

hint is een logische OR van:

scale is een 2-tuple (min, max) dat de minimale/maximale temperatuur (in graden Celsius) bepaalt die wordt gebruikt om de ir-array te schalen. Standaard de werkelijke min en max van 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

Legt een frame vast van de thermische sensor en retourneert dit als een image.Image. Werkt vergelijkbaar met sensor.snapshot(). Als copy_to_fb False is, wordt de nieuwe afbeelding op de MicroPython-heap (die beperkt is) toegewezen; stel copy_to_fb in op True om het resultaat in plaats daarvan naar de framebuffer te schrijven.

hmirror indien True spiegelt de nieuwe afbeelding horizontaal.

vflip indien True keert de nieuwe afbeelding verticaal om.

transpose indien True transponeert de nieuwe afbeelding.

x_scale bepaalt hoeveel de nieuwe afbeelding wordt geschaald in de x-richting. Een negatieve waarde spiegelt horizontaal. Indien niet opgegeven, komt deze overeen met y_scale om de beeldverhouding te behouden.

y_scale bepaalt hoeveel de nieuwe afbeelding wordt geschaald in de y-richting. Een negatieve waarde spiegelt verticaal. Indien niet opgegeven, komt deze overeen met x_scale om de beeldverhouding te behouden.

roi is de rechthoek van het aandachtsgebied (x, y, w, h) van de bron-IR-data die getekend moet worden.

rgb_channel is het RGB-kanaal (0=R, 1=G, 2=B) dat gerenderd moet worden. -1 (standaard) rendert alle kanalen.

alpha bepaalt hoeveel van de bronafbeelding wordt gemengd (0-255). 255 is volledig dekkend.

color_palette is een kleurenpalet-enum of een RGB565-afbeelding van 256 pixels die als opzoektabel op de grijswaarden-bronwaarde wordt gebruikt.

alpha_palette is een GRAYSCALE-afbeelding van 256 pixels die als alpha-opzoektabel wordt gebruikt.

hint is een logische OR van:

scale is een 2-tuple (min, max) dat de minimale/maximale temperatuur (in graden Celsius) bepaalt die wordt gebruikt om de IR-array te schalen. Standaard de werkelijke min en max van de IR.

pixformat bepaalt het uitvoer-pixelformaat. Moet image.GRAYSCALE of image.RGB565 zijn.

copy_to_fb indien True schrijft het resultaat naar de framebuffer in plaats van het op de heap toe te wijzen.

timeout indien niet -1, het aantal milliseconden om op een nieuw frame te wachten.

Constanten

fir.FIR_SHIELD: int

Het OpenMV Cam Thermopile Shield (MLX90621). Alias voor fir.FIR_MLX90621.

fir.FIR_MLX90621: int

MLX90621 thermische sensor (16x4).

fir.FIR_MLX90640: int

MLX90640 thermische sensor (32x24).

fir.FIR_MLX90641: int

MLX90641 thermische sensor (16x12).

fir.FIR_AMG8833: int

AMG8833 thermische sensor (8x8).