FLIR Lepton Adapter

โมดูล FLIR Lepton Adapter เชื่อมต่อ FLIR Lepton thermal cores (ขายแยกต่างหาก) กับ OpenMV Cam โดยมีทั้งโหมด AGC และ direct-thermal สำหรับการวัดอุณหภูมิมนุษย์/วัตถุ

FLIR Lepton Adapter

สำหรับ datasheet ฉบับเต็ม ภาพถ่าย และการสั่งซื้อ ดูได้ที่ FLIR Lepton Adapter product page

ไฮไลต์

  • เข้ากันได้กับ FLIR Lepton 1.x / 2.x / 3.x cores (ขายแยกต่างหาก)

  • ทั้งโหมด AGC และ direct-thermal พร้อมการแมปอุณหภูมิ

  • มองเห็นได้ในความมืดสนิท

  • เข้ากันได้กับ OpenMV Cam base boards แบบโมดูลทุกรุ่น

การใช้งาน

ขับเคลื่อน Lepton ผ่าน csi.CSI โดยใช้ cid= csi.LEPTON ไดรเวอร์จะขยายเฟรม native ขนาด 80x60 (1.x/2.x) หรือ 160x120 (3.x) ของ Lepton ให้เป็น framesize ที่คุณกำหนดภายใน:

import csi
import time

csi0 = csi.CSI(cid=csi.LEPTON)
csi0.reset()
csi0.pixformat(csi.GRAYSCALE)
csi0.framesize(csi.QVGA)
clock = time.clock()

while True:
    clock.tick()
    img = csi0.snapshot()
    print(clock.fps())

เพื่อรับเฟรมสีจากเซนเซอร์โดยตรง ให้เปลี่ยน pixformat เป็น csi.RGB565 และตั้งค่า csi.CSI.color_palette เป็น image.PALETTE_IRONBOW — ไดรเวอร์จะส่งเฟรม RGB565 พร้อม palette ที่ใช้งานแล้ว ดังนั้น snapshot() จะคืนค่าเฟรมสี ironbow โดยตรง:

csi0.pixformat(csi.RGB565)
csi0.color_palette(image.PALETTE_IRONBOW)

การวัดอุณหภูมิ

Radiometric Leptons (Lepton 2.5 / 3.5) รายงานข้อมูลอุณหภูมิต่อพิกเซลที่ถูกสอบเทียบแล้ว เปิดใช้งานโหมดการวัดผ่าน csi.CSI.ioctl ด้วย csi.IOCTL_LEPTON_SET_MODE จากนั้นจำกัดช่วงอุณหภูมิด้วย csi.IOCTL_LEPTON_SET_RANGE (min_celsius, max_celsius) ไดรเวอร์ Lepton แมปค่าพิกเซลระดับสีเทา 0 กับ min_celsius และ 255 กับ max_celsius แบบเชิงเส้น ทำให้แต่ละพิกเซลกลายเป็นการค้นหาอุณหภูมิภายในช่วงที่กำหนด พิกเซลที่เย็นกว่า min_celsius จะอิ่มตัวที่ 0 และพิกเซลที่ร้อนกว่า max_celsius จะอิ่มตัวที่ 255

csi.IOCTL_LEPTON_SET_MODE รับสองค่าสถานะ ค่าแรกเปิดใช้งานการวัด ค่าที่สองเลือกช่วงอุณหภูมิของเซนเซอร์:

  • ช่วงต่ำ(True, False) — ช่วงเซนเซอร์ -10 °C ถึง +140 °C (ฉากระดับห้อง) จำกัดช่วงให้อยู่ในบริเวณที่สนใจ เช่น (20.0, 40.0) สำหรับการติดตามความร้อนของร่างกาย:

    csi0.ioctl(csi.IOCTL_LEPTON_SET_MODE, True, False)
    csi0.ioctl(csi.IOCTL_LEPTON_SET_RANGE, 20.0, 40.0)
    
  • ช่วงสูง(True, True) — ช่วงเซนเซอร์ -10 °C ถึง ~+450 °C โดยทั่วไป (~+400 °C ที่อุณหภูมิห้อง) สำหรับวัตถุร้อน จำกัดถึง เช่น (0.0, 400.0) สำหรับการติดตามเตาเผาหรือองค์ประกอบร้อน:

    csi0.ioctl(csi.IOCTL_LEPTON_SET_MODE, True, True)
    csi0.ioctl(csi.IOCTL_LEPTON_SET_RANGE, 0.0, 400.0)
    

เพื่อแปลงพิกเซลระดับสีเทากลับเป็นองศาเซลเซียส:

def p_to_temp(p, min_t, max_t):
    return (p * (max_t - min_t)) / 255.0 + min_t

ใช้งานได้กับพิกเซลแต่ละตัวหรือสถิติรวม (เช่น stats.mean() จาก Image.get_statistics) ภายใน ROI เมื่อค้นหาบริเวณร้อน/เย็นด้วย Image.find_blobs

Note

การวัดอุณหภูมิต้องการให้ Lepton อยู่ในโหมดระดับสีเทาโดยไม่ตั้งค่า color palette — การแมปพิกเซลเป็นอุณหภูมิแบบเชิงเส้นใช้ได้เฉพาะกับเอาต์พุตระดับสีเทาดิบเท่านั้น หากต้องการใส่สีเพื่อแสดงผล ให้ทำแยกต่างหากโดยวาดเฟรมระดับสีเทาลงบนบัฟเฟอร์เอาต์พุต RGB ด้วย Image.draw_image และ color_palette= image.PALETTE_IRONBOW

out = image.Image(csi0.width(), csi0.height(), image.RGB565)
out.draw_image(img, 0, 0, color_palette=image.PALETTE_IRONBOW)