fir — drivrutin för värmesensor (fir == far infrared)

Modulen fir driver termopilmatriser för fjärrinfrarött (FIR) som är anslutna till en OpenMV Cam via I2C – sensorer på 8x8, 16x4, 16x12 och 32x24 stöds (se konstanterna längst ner på denna sida). Varje bildruta returnerar en temperatur per pixel i grader Celsius, vilken kan renderas som en fristående värmebild med snapshot() eller komponeras ovanpå en bildruta i synligt ljus från CSI-sensorn med draw_ir(), normalt genom en färgpalett såsom image.PALETTE_RAINBOW eller image.PALETTE_IRONBOW.

Exempel på användning:

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)

Funktioner

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

Initierar en ansluten värmesensor.

type anger typen av värmesensor:

Som standard är type -1 vilket får fir.init() att automatiskt söka efter och initiera en ansluten värmesensor baserat på dess I2C-adress. Observera att fir.FIR_MLX90640 och fir.FIR_MLX90641 delar samma I2C-adress, så du måste skicka fir.FIR_MLX90641 till type för att initiera den specifikt.

refresh är värmesensorns uppdateringsfrekvens i Hz:

En högre uppdateringsfrekvens sänker noggrannheten och vice versa.

resolution är värmesensorns mätupplösning i bitar:

En högre upplösning sänker det maximala temperaturintervallet och vice versa.

fir.deinit() None

Avinitierar värmesensorn och frigör resurser.

fir.width() int

Returnerar den horisontella upplösningen (i pixlar) för värmesensorn som används.

fir.height() int

Returnerar den vertikala upplösningen (i pixlar) för värmesensorn som används.

fir.type() int

Returnerar typen av värmesensor som används. En av fir.FIR_MLX90621, fir.FIR_MLX90640, fir.FIR_MLX90641 eller fir.FIR_AMG8833.

fir.refresh() int

Returnerar den aktuella uppdateringsfrekvensen (Hz) som ställdes in under anropet till fir.init().

fir.resolution() int

Returnerar den aktuella upplösningen (bitar) som ställdes in under anropet till fir.init().

fir.read_ta() float

Returnerar omgivningstemperaturen (dvs. sensorns temperatur) i Celsius som ett flyttal.

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

Returnerar en 4-tupel (ta, ir, to_min, to_max) som innehåller omgivningstemperaturen, en platt lista med width * height flyttalstemperaturer, den lägsta uppmätta temperaturen och den högsta uppmätta temperaturen. Alla värden anges i Celsius.

hmirror speglar ir-matrisen horisontellt om True.

vflip vänder ir-matrisen vertikalt om True.

transpose transponerar ir-matrisen om True (byter plats på bredd och höjd).

timeout är, om inte -1, antalet millisekunder att vänta på en ny bildruta.

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

Ritar ir-matrisen på image med dess övre vänstra hörn vid (x, y).

ir är den platta temperaturlistan med width * height som returneras av fir.read_ir().

x_scale styr hur mycket den renderade bilden skalas i x-riktningen. Ett negativt värde vänder horisontellt. Om det inte anges matchar det y_scale för att bibehålla bildförhållandet.

y_scale styr hur mycket den renderade bilden skalas i y-riktningen. Ett negativt värde vänder vertikalt. Om det inte anges matchar det x_scale för att bibehålla bildförhållandet.

roi är intresseområdets rektangel (x, y, w, h) av käll-IR-datat som ska ritas.

rgb_channel är den RGB-kanal (0=R, 1=G, 2=B) som ska renderas på destinationsbilden när destinationen är RGB565. -1 (standard) renderar alla kanaler.

alpha styr hur mycket av källbilden som ska blandas in i destinationen (0-255). 255 är helt ogenomskinlig; 0 ger ingen ändring.

color_palette är en enum för färgpalett (t.ex. image.PALETTE_RAINBOW, image.PALETTE_IRONBOW) eller en RGB565-bild med 256 pixlar som används som en uppslagstabell på gråskalevärdet i källan.

alpha_palette är en GRAYSCALE-bild med 256 pixlar som används som en alfa-uppslagstabell som modulerar alpha per källpixelvärde.

hint är en logisk OR av:

scale är en 2-tupel (min, max) som styr den lägsta/högsta temperaturen (i Celsius) som används för att skala ir-matrisen. Standardvärdet är det faktiska minimat och maximat i 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

Tar en bildruta från värmesensorn och returnerar den som en image.Image. Fungerar på liknande sätt som sensor.snapshot(). Om copy_to_fb är False allokeras den nya bilden på MicroPythons heap (vilken är begränsad); sätt copy_to_fb till True för att istället skriva resultatet till bildbufferten.

hmirror speglar den nya bilden horisontellt om True.

vflip vänder den nya bilden vertikalt om True.

transpose transponerar den nya bilden om True.

x_scale styr hur mycket den nya bilden skalas i x-riktningen. Ett negativt värde vänder horisontellt. Om det inte anges matchar det y_scale för att bibehålla bildförhållandet.

y_scale styr hur mycket den nya bilden skalas i y-riktningen. Ett negativt värde vänder vertikalt. Om det inte anges matchar det x_scale för att bibehålla bildförhållandet.

roi är intresseområdets rektangel (x, y, w, h) av käll-IR-datat som ska ritas.

rgb_channel är den RGB-kanal (0=R, 1=G, 2=B) som ska renderas. -1 (standard) renderar alla kanaler.

alpha styr hur mycket av källbilden som blandas in (0-255). 255 är helt ogenomskinlig.

color_palette är en enum för färgpalett eller en RGB565-bild med 256 pixlar som används som en uppslagstabell på gråskalevärdet i källan.

alpha_palette är en GRAYSCALE-bild med 256 pixlar som används som en alfa-uppslagstabell.

hint är en logisk OR av:

scale är en 2-tupel (min, max) som styr den lägsta/högsta temperaturen (i Celsius) som används för att skala IR-matrisen. Standardvärdet är det faktiska minimat och maximat i IR-datat.

pixformat styr utdataformatet för pixlar. Måste vara image.GRAYSCALE eller image.RGB565.

copy_to_fb skriver, om True, resultatet till bildbufferten istället för att allokera på heapen.

timeout är, om inte -1, antalet millisekunder att vänta på en ny bildruta.

Konstanter

fir.FIR_SHIELD: int

OpenMV Cam Thermopile Shield (MLX90621). Alias för fir.FIR_MLX90621.

fir.FIR_MLX90621: int

MLX90621-värmesensor (16x4).

fir.FIR_MLX90640: int

MLX90640-värmesensor (32x24).

fir.FIR_MLX90641: int

MLX90641-värmesensor (16x12).

fir.FIR_AMG8833: int

AMG8833-värmesensor (8x8).