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