
Moduł kamery termowizyjnej o wysokiej rozdzielczości dla Raspberry Pi: Kompletny przewodnik integracji Edge AI
24 czerwca 2026
Kompletny przewodnik po integracji modułu kamery termowizyjnej: Rozwiązania 384x288 dla dronów, Raspberry Pi i projektów OEM B2B
1 lipca 2026Moduł kamery termowizyjnej USB o wysokiej rozdzielczości dla Raspberry Pi: Przewodnik integracji 640x512
Oto sedno: jeśli próbujesz wdrożyć termowizję wysokiej rozdzielczości na komputerach jednopłytkowych (SBC), takich jak Raspberry Pi, prawdopodobnie natknąłeś się na jakąś przeszkodę. Wczesne eksperymenty z matrycami termopil I2C o niskiej rozdzielczości sprawdzały się w projektach hobbystycznych, ale nowoczesne zastosowania przemysłowe wymagają poważnego sprzętu. Mówimy o wysokiej czułości termicznej (NETD ≤ 50 mK), szybkich klatkach na sekundę i gęstej rozdzielczości przestrzennej. Ten przewodnik to kompletny, praktyczny podręcznik integracji systemu dla inżynierów sprzętu, specjalistów ds. badań i rozwoju oraz architektów oprogramowania, którzy składają moduł kamery termowizyjnej usb dla raspberry pi. W naszym sklepie wiemy, że sukces zależy od zrozumienia fizyki, wyboru odpowiedniego interfejsu, dopasowania optyki i pisania wydajnych potoków oprogramowania. Omówimy fizykę niechłodzonych czujników długofalowej podczerwieni (LWIR), porównamy szczegóły techniczne interfejsów USB/UVC i MIPI CSI-2, przeanalizujemy wybór obiektywów i przejdziemy przez gotowy do użycia potok Pythona wykorzystujący sterowniki Linux V4L2 i OpenCV.
Spis treści
- 👉 Fizyka niechłodzonych czujników mikrobolometrycznych LWIR
- 👉 Integracja USB vs. MIPI dla Raspberry Pi
- 👉 Kryteria wyboru optyki i obiektywów
- 👉 Specyfikacje techniczne i wybór produktu
- 👉 Integracja oprogramowania: V4L2, OpenCV i Python SDK
- 👉 Zaawansowane przetwarzanie obrazu: mapowanie radiometryczne i NUC
- 👉 Wdrożenia przemysłowe w terenie
- 👉 FAQ – szczegółowe zagadnienia techniczne
Fizyka niechłodzonych czujników mikrobolometrycznych LWIR
Aby zbudować system termowizyjny, który faktycznie działa w terenie, trzeba dokładnie przyjrzeć się leżącej u jego podstaw fizyce. Standardowe przetworniki CMOS i CCD rejestrują odbite światło widzialne w zakresie od 400 nm do 700 nm. Termowizja jest inna. Obserwujemy pasmo długofalowej podczerwieni (LWIR), które rozciąga się od 8 µm do 14 µm.
Wszystko wokół nas – silniki, maszyny, płytki drukowane, ludzkie ciała – emituje energię cieplną jako promieniowanie ciała doskonale czarnego. Prawo Plancka i prawo przesunięć Wiena opisują to zachowanie. Kiedy obliczamy szczytową długość fali emisji, prawo Wiena upraszcza to:
λmax = 2897,8 µm·K / T
Jeśli twój cel ma normalną temperaturę pokojową 300 K (około 27°C lub 80°F), jego szczytowa emisja wypada dokładnie przy 9,66 µm. Leży to idealnie w centrum atmosferycznego okna transmisyjnego LWIR. To pasmo jest kluczowe, ponieważ gazy atmosferyczne, takie jak dwutlenek węgla i para wodna, nie pochłaniają tu dużo energii, co pozwala sygnałowi dotrzeć do czujnika z minimalnym tłumieniem.
Teoretyczne wskaźniki wydajności:
Tlenek wanadu (VOx) vs. amorficzny krzem (a-Si): W praktyce matryce rdzeni VOx są preferowane w zastosowaniach wysokiej klasy. Materiał VOx wykazuje lepszy temperaturowy współczynnik rezystancji (TCR) w porównaniu z krzemem. Minimalizuje to szum termiczny i daje czystszy surowy obraz. Wybór modułu kamery termowizyjnej wysokiej rozdzielczości 640x512 z niechłodzonym rdzeniem LWIR wykorzystującego podłoża VOx zapewnia, że surowe szczegóły celu pozostają ostre w szerokim zakresie warunków pracy.
Większość wytrzymałych komercyjnych modułów kamer wykorzystuje niechłodzone mikrobolometry. Wyobraź sobie matrycę maleńkich, zawieszonych mostków krzemowych, z których każdy pokryty jest materiałem czułym na temperaturę, takim jak tlenek wanadu. Gdy fotony LWIR trafiają w piksel, mostek nagrzewa się, zmieniając swoją oporność elektryczną.
Układ odczytu (ROIC) przepuszcza spolaryzowany prąd przez matrycę, mierzy te zmiany oporności i tworzy cyfrowy obraz termiczny. Dwie kluczowe zmienne decydują o tym, jak dobrze działa sensor:
- ⚙️ Rozstaw pikseli: Odległość między środkami sąsiednich pikseli. Zmniejszenie jej z 17 µm do 12 µm pozwala upakować matrycę 640x512 w kompaktowy, lekki rdzeń, który mieści się na małych dronach lub w ciasnych obudowach.
- ⚙️ NETD (Równoważna szumowo różnica temperatur): To jest twój wskaźnik sygnału do szumu. Określa najmniejszą różnicę temperatur, jaką kamera może rozróżnić. Jeśli wykonujesz diagnostykę wymagającą szczegółowości, potrzebujesz NETD ≤40 mK lub ≤50 mK. Wyższe wartości sprawiają, że obraz wygląda jak stare zakłócenia telewizyjne.

Integracja USB vs. MIPI dla Raspberry Pi
Podczas integracji wysokiej klasy rdzenia termicznego z Raspberry Pi stajesz przed kluczowym wyborem: interfejs USB (protokół UVC) czy natywny MIPI CSI-2?
Interfejs USB (protokół UVC)
Moduły USB opierają się na standardowym mikrokodzie USB Video Class (UVC) działającym na wbudowanym mikrokontrolerze lub FPGA. Układ pakuje surową klatkę z ROIC do formatu cyfrowego (YUYV lub surowa 16-bitowa skala szarości) i przesyła ją przez magistralę USB.
Dużą zaletą jest tutaj łatwość użycia. Linux od lat ma natywne uvcvideo sterowniki wbudowane w jądro. Podłącz moduł, a natychmiast pojawi się jako /dev/video0. Żadnych niestandardowych nakładek device-tree, błędów kompilacji ani problemów z dopasowaniem jądra. Możesz przenieść tę samą kamerę USB z Raspberry Pi 4 na Pi 5 lub standardowy przemysłowy komputer x86 z Linuxem bez zmiany ani jednej linii kodu. Jaki jest kompromis? USB wprowadza nieco większe opóźnienia (zwykle dodatkowe 10 ms do 30 ms) i zużywa odrobinę więcej cykli CPU ze względu na wymagania parsowania sterownika kontrolera hosta.
Interfejs MIPI CSI-2
MIPI CSI-2 to opcja o wysokiej wydajności. Ten interfejs omija pośrednie mikrokontrolery, przesyłając surowe bufory klatek szeregowych bezpośrednio do Video Core ISP układu SoC Raspberry Pi lub do pamięci RAM przez DMA.
Jeśli projektujesz automatyczne systemy śledzenia lub lekkie urządzenia zasilane bateryjnie (takie jak gimbale dronów), gdzie liczy się każda milisekunda i miliwat, MIPI jest standardowym wyborem. Oferuje niskie opóźnienia i minimalne obciążenie CPU.
Wadą jest sztywność sprzętowa. Musisz kompilować nakładki device-tree (.dtbo) specyficzne dla dokładnej wersji twojego jądra. Jeśli zaktualizujesz system operacyjny, potok kamery może przestać działać, dopóki sterownik nie zostanie załatany. Połączenia fizyczne są również delikatne; masz do czynienia z kruchymi taśmami elastycznymi lub niestandardowymi wiązkami mikro-koncentrycznymi. Jeśli prowadzisz je przez ciasne złącze obrotowe, wymagane są specjalistyczne zespoły wiązek wysokiej prędkości od ekspertów takich jak Przewód mikrowspółosiowy męski , aby utrzymać sygnały ekranowane i czyste.
Kryteria wyboru optyki i obiektywów
W przeciwieństwie do standardowych kamer, które używają tanich szklanych lub plastikowych soczewek, konstrukcje LWIR wymagają specjalistycznych materiałów przepuszczających podczerwień. Standardowe szkło borokrzemowe jest całkowicie nieprzezroczyste dla promieniowania LWIR. Zamiast tego używamy elementów z germanu (Ge), krzemu (Si) lub formowanego szkła chalkogenidkowego.
| Materiał | Współczynnik załamania (n @10µm) | Kluczowe cechy inżynieryjne |
|---|---|---|
| German (Ge) | ~4.0 | Doskonałe właściwości transmisyjne w paśmie 8-14µm; drogi; doświadcza termicznego dryfu ostrości w granicznych warunkach pracy. |
| Szkło chalkogenidkowe (stopy As-Se-Ge) | ~2,5 do 2,8 | Wysoce formowalna optyka umożliwiająca złożone geometrie; minimalny termiczny dryft ogniskowej; wysoce opłacalny współczynnik załamania światła. |
Podczas dobierania obiektywu do sensora należy obliczyć rozdzielczość przestrzenną. Reprezentuje ją chwilowe pole widzenia (iFOV), które określa fizyczny obszar pola rozdzielany przez pojedynczy piksel przy danej odległości roboczej:
iFOV = Rozmiar piksela (µm) / Ogniskowa (mm)
Obliczmy to na przykładzie modułu o rozdzielczości 640x512 z pikselem 12 µm i standardowym obiektywem 9 mm:
iFOV = 12 μm / 9 mm ≈ 1,33 mrad
Oznacza to, że z odległości 1 metra każdy pojedynczy piksel rozdziela fizyczny kwadrat o boku 1,33 mm. Z odległości 100 metrów ten obszar rozszerza się do 133 mm (około 5,2 cala). Jeśli szukasz lokalnych anomalii na słupach energetycznych lub turbinach wiatrowych, cel musi pokrywać co najmniej 3x3 piksele, aby zapewnić wiarygodny pomiar. Dlatego wybór ogniskowej ma kluczowe znaczenie przed wdrożeniem sprzętu.
Do wymagających zastosowań, precyzyjnie formowane soczewki chalkogenkowe od liderów technologii, takich jak LightPath Technologies zapewniają wysoką transmisję światła przy zachowaniu ostrości w szerokim zakresie wahań temperatury. Minimalizuje to potrzebę ciągłych programowych korekt ostrości podczas pracy na zewnątrz.
Specyfikacje techniczne i wybór produktu
Dla konstrukcji sprzętowych opartych na architekturze Raspberry Pi oferujemy dwa przemysłowe, niechłodzone moduły sensorów mikrobolometrycznych. Jeden jest przeznaczony do wdrożenia USB typu plug-and-play, a drugi to natywny moduł MIPI zbudowany do bezpośredniego interfejsu o niskich opóźnieniach.
Produkt 1: Niechłodzony miniaturowy moduł kamery termowizyjnej LWIR USB 640*512 do dronów, podobny do DJI
Ten miniaturowy, niechłodzony moduł termowizyjny na podczerwień zapewnia ostry, szczegółowy obraz w ultra-kompaktowej obudowie. Idealnie nadaje się do ładunków dronów i zdalnych systemów monitoringu przemysłowego.
Kluczowe specyfikacje techniczne:
| Format / Rozmiar | Ultra-miniaturowa obudowa 21 mm * 21 mm |
| Opcje obiektywów (ogniskowa) | Opcje ogniskowych: 5 mm / 9 mm / 13 mm / 18 mm / 35 mm / 50 mm / 75 mm / 100 mm / 150 mm |
| Opcje rozdzielczości | Matryca o wysokiej gęstości 640x512 (z kompatybilnością przycięcia do 640x480) |
| Kompatybilność integracyjna | Solidne uszczelnienie konstrukcyjne, stabilność termiczna, zgodność ze standardem UVC przez USB |
Produkt 2: Niechłodzony moduł kamery termowizyjnej MIPI 640 384 256 9 mm do dronów
Moduł termowizyjny MIPI serii Mini2 przesyła surowe dane termiczne z minimalnym opóźnieniem. Jest zoptymalizowany do bezpośrednich pętli przetwarzania i lekkich systemów lotniczych.
Kluczowe specyfikacje techniczne:
| Rozdzielczość podstawowa | Aktywna matryca pikseli 640x512 (z opcjami strukturalnymi 384 i 256) |
| Optyka domyślna | Konfiguracja z wysokiej jakości soczewką germanową o ogniskowej 9 mm |
| Interfejs sprzętowy | Bezpośrednia sygnalizacja MIPI CSI-2 (zoptymalizowana pod kątem minimalnych opóźnień i bezpośredniego przetwarzania sprzętowego) |
| Profil obrazowania | Ostry i wyraźny obraz termiczny, lekka konstrukcja dla dronów i platform lotniczych |
Integracja oprogramowania: V4L2, OpenCV i Python SDK
Przejdźmy do praktycznego kodowania. Aby pobierać surowe, nieskompresowane klatki z kamery termowizyjnej UVC na Raspberry Pi, używamy standardowego sterownika Linux Video4Linux2 (V4L2).
Krok 1: Sprawdź właściwości systemu
Przed napisaniem kodu sprawdź, czy system operacyjny widzi kamerę. Podłącz kamerę i uruchom:
# Zainstaluj zestaw narzędzi v4l2
Szukaj formatów klatek, takich jak YDUV, YUYV, lub bezpośredniej 16-bitowej skali szarości (oznaczonej jako Y16 lub SZARY). Jeśli twój potok przetwarzania potrzebuje bezpośrednich pomiarów radiometrycznych, pożądany jest surowy format 16-bitowy.
Krok 2: Wielowątkowe przechwytywanie w Pythonie w warunkach rzeczywistych
Jeśli wywołasz VideoCapture.read() w jednowątkowej pętli Pythona, liczba klatek na sekundę spadnie. W naszym warsztacie uruchamiamy przechwytywanie z czujnika w dedykowanym wątku w tle, aby zapobiec blokowaniu. Dzięki temu potok kamery działa stabilnie, podczas gdy na głównym wątku wykonujesz wymagające zadania wizji komputerowej.
"""
RPi LWIR Thermal Acquisition and Multi-Threaded Frame Buffer Pipe
Optimized for 640x512 Uncooled USB Camera Cores.
"""
import cv2
import numpy as np
import time
import threading
class USBThermalCamera:
def __init__(self, device_index=0, width=640, height=512):
self.device_index = device_index
self.width = width
self.height = height
self.cap = None
self.frame = None
self.running = False
self.lock = threading.Lock()
def initialize_capture(self):
# Open video device via standard V4L2 utility backend
self.cap = cv2.VideoCapture(self.device_index, cv2.CAP_V4L2)
if not self.cap.isOpened():
raise RuntimeError(f"Failed to access V4L2 sensor node: /dev/video{self.device_index}")
# Bind payload stream resolutions to the requested parameters
self.cap.set(cv2.CAP_PROP_FRAME_WIDTH, self.width)
self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT, self.height)
# Verify active driver configuration values
active_w = int(self.cap.get(cv2.CAP_PROP_FRAME_WIDTH))
active_h = int(self.cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
print(f"[INFO] Camera pipeline running at target configuration: {active_w}x{active_h} px")
def start_grab_thread(self):
self.running = True
self.thread = threading.Thread(target=self._update_loop, daemon=True)
self.thread.start()
def _update_loop(self):
while self.running:
ret, raw_frame = self.cap.read()
if not ret or raw_frame is None:
time.sleep(0.005)
continue
with self.lock:
self.frame = raw_frame.copy()
def grab_latest_frame(self):
with self.lock:
if self.frame is None:
return None
return self.frame.copy()
def terminate_pipeline(self):
self.running = False
if hasattr(self, 'thread'):
self.thread.join(timeout=1.0)
if self.cap:
self.cap.release()
print("[INFO] Thermal core pipeline shutdown gracefully.")
if __name__ == "__main__":
cam = USBThermalCamera(device_index=0, width=640, height=512)
try:
cam.initialize_capture()
cam.start_grab_thread()
print("[PROCESS] Streaming initialized. Press 'Q' to safely exit.")
while True:
frame = cam.grab_latest_frame()
if frame is None:
time.sleep(0.01)
continue
# Convert incoming YUYV channel arrays to basic greyscale structures
gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Apply dynamic colormaps to visually enhance thermal variance
# COLORMAP_INFERNO outputs excellent human eye thermography separation
thermal_color = cv2.applyColorMap(gray_frame, cv2.COLORMAP_INFERNO)
# Identify absolute thermal peaks within the target frame space
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(gray_frame)
# Draw tracking overlay representing the peak thermal zone
cv2.circle(thermal_color, max_loc, 8, (0, 0, 255), 2)
cv2.putText(thermal_color, f"PEAK: {max_val}", (15, 30),
cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 0), 2)
cv2.imshow("LWIR 640x512 Realtime Core Pipeline", thermal_color)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
except Exception as err:
print(f"[FATAL EXCEPTION]: {err}")
finally:
cam.terminate_pipeline()
cv2.destroyAllWindows()
Zaawansowane przetwarzanie obrazu: mapowanie radiometryczne i NUC
Surowe dane wideo to dopiero początek. Skonfigurowanie profesjonalnego systemu monitorowania termicznego wymaga dwóch zaawansowanych etapów przetwarzania: korekcji niejednorodności (NUC) i Mapowanie radiometryczne.
korekcji niejednorodności (NUC)
Ponieważ piksele mikrobolometru są maleńkie i zawieszone, ich surowe właściwości elektryczne zmieniają się w czasie, gdy korpus kamery się nagrzewa. To dryftowanie skutkuje zaszumionym, ziarnistym obrazem — efektem zwanym "szumem wzorca przestrzennego"."
Aby temu zaradzić, wysokowydajne rdzenie kamer na ułamek sekundy opuszczają małą wewnętrzną przesłonę mechaniczną przed czujnikiem optycznym. Prezentuje to matrycy idealnie jednolity cel termiczny. Wewnętrzny procesor mierzy surowe wartości pikseli względem średniej, generując mapę korekcji offsetu. Chociaż nasze moduły mogą przeprowadzać tę kalibrację automatycznie, programiści pracujący z precyzyjnymi systemami radiometrycznymi często wyzwalają tę korekcję ręcznie za pomocą poleceń szeregowych, aby uniknąć przerw podczas krytycznych nagrań.
Kalibracja temperatury radiometrycznej
Do przemysłowego pomiaru temperatury potrzebujesz konfiguracji radiometrycznej. Zamiast renderować standardowe 8-bitowe wartości wizualne, moduł eksportuje surową 16-bitową liczbę całkowitą reprezentującą rzeczywistą intensywność ADC każdego piksela. Wysokowydajne moduły zazwyczaj używają standardowej skali liniowej:
Tcel = (Pixel Value × Scale Factor) - Offset
If your module uses a standard 0.01K scaling factor, transforming raw pixel readings into Celsius or Kelvin is straightforward:
T (Kelvin) = ADC_Pixel_Value × 0.01
T (Celsius) = (ADC_Pixel_Value × 0.01) - 273.15
In real-world applications, you must also adjust for **Target Emissivity (ε)**. This value describes how efficiently an object radiates heat compared to a theoretical blackbody (where ε = 1.0). If you are measuring polished metals like electrical copper or aluminum bushings, their emissivity can drop to 0.15 or less. This means the raw sensor will pick up ambient heat reflections rather than the actual temperature of the metal. To get accurate readings, you must adjust your post-processing math to correct for these reflections:
def calculate_absolute_temp(pixel_value, emissivity=0.95, t_ambient_k=298.15):
# Convert standard sensor output straight to Kelvin
t_apparent_k = pixel_value * 0.01
# Correct for surface reflection properties
# Object energy = (Total Energy - Reflected Ambient) / Emissivity
t_corrected_k = ((t_apparent_k ** 4 - (1.0 - emissivity) * (t_ambient_k ** 4)) / emissivity) ** 0.25
return t_corrected_k - 273.15
Wdrożenia przemysłowe w terenie
Here's how engineers are using these integrated 640x512 microbolometer boards in field deployments:
A. UAV Aerial Inspection and Drone Mapping
By mounting these lightweight thermal cores onto small drones, utility operators can conduct automated inspections of solar farms, wind turbine blades, and high-voltage transmission lines.
Using compact setups like the Raspberry Pi Compute Module 4 (CM4), flight teams can run real-time image stabilization and target georeferencing without adding excessive weight to the airframe, preserving flight times.
B. Industrial Automation & Continuous Thermal Monitoring
Inside manufacturing plants, machinery failures can cause costly downtime. Engineers deploy Raspberry Pi boards inside sealed, industrial enclosures to continuously monitor conveyor bearings, transformers, and physical assets like boilers.
These setups watch for temperature spikes based on standard do czego służy kamera termowizyjna profiling guidelines. If a component exceeds safe limits, the Raspberry Pi can trigger alerts directly over industrial field networks using protocols like Modbus TCP or MQTT.
C. Perimeter Security and Edge Intelligence
While standard cameras struggle in complete darkness, fog, or heavy vegetation, LWIR sensors excel. Combining a high-resolution 640x512 thermal core with lightweight Edge AI models (like TFLite YOLOv8) on a Raspberry Pi 5 allows for highly reliable intruder detection. This setup can spot human silhouettes hundreds of meters away while ignoring background noise like blowing branches and wind.
If you're looking for basic hardware setups and diagnostic tools, check out our general thermal integration guide. It covers structural enclosures and protective crystal windows for harsh, dusty environments.

FAQ – szczegółowe zagadnienia techniczne
Why should I upgrade from an I2C sensor like MLX90640 to a USB thermal camera module for Raspberry Pi?
Then there's the speed. I2C is a slow, serial interface. Even when overclocked, you're looking at a sluggish 4 to 8 Hz. The USB camera streams at a smooth 25 Hz over a native high-speed bus using standard UVC protocols.
Finally, there's resolution quality. Low-cost thermopile arrays suffer from high sensor noise, meaning their NETD is often around 100 mK to 150 mK. A professional VOx microbolometer core delivers an NETD ≤ 50 mK. This means you can resolve fine temperature differences down to 0.05°C, which is essential for details like tracing heat flow on circuitry or locating fluid leaks behind drywall.
How do I stream real-time thermal video on Raspberry Pi OS using your module?
uvcvideo kernel driver included in Raspberry Pi OS releases like Debian Bookworm or Bullseye. No custom drivers or kernel patches are required.
Once connected, you can capture frames directly in Python using standard OpenCV calls. To avoid lag, we recommend grabbing frames on a background thread and feeding them to your main application, where you can apply false-color maps like INFERNO or JET for clear visualization.
What is the active power consumption and thermal dissipation requirement for continuous operation?
If you're housing the camera inside a sealed enclosure or drone pod, recommend mounting it directly to an aluminum bulkhead or chassis using thermal tape or brass standoffs. Keeping the body of the module cool minimizes how often the internal NUC shutter needs to cycle, ensuring a more stable, uninterrupted video feed.
Can I perform absolute temperature measurement (radiometry) using these uncooled LWIR camera modules?
By applying our core's calibration offsets in your code, your program can convert those raw ADC values into actual Kelvin or Celsius readings in real time. Once you compensate for surface emissivity, the system delivers an absolute accuracy of within ±2°C.
📚 Piśmiennictwo i dalsze lektury
- ✅ Standard branżowy: LightPath Technologies
- ✅ System Physical Buses: Przewód mikrowspółosiowy męski
- ✅ Powiązany przewodnik: High-Resolution 640x512 Thermal core integration











