Termowizja "widzi" świat: sekrety podczerwieni, których nie znasz
15 sierpnia 2025 r.Poradnik modułu termowizyjnego 2025: Tania i szybka integracja dla inżynierów | Rozwiązania modułów termowizyjnych Mini 384/640
30 września 2025Ten sterownik jest dla "modułu kamery termowizyjnej "mini2" określanego jako rs300 w oryginalnym sterowniku.
Kilka podstawowych specyfikacji
"Mini2" to kamera termowizyjna dostępna w wielu rozdzielczościach. Do pomiarów temperatury potrzebny jest inny moduł lub wariant.
Dostępne rozdzielczości to:
- 256x192 - 25/50 Hz (25/50 Hz dostępne przez USB)
- 384x288 - 30/60 Hz (30/60 Hz dostępne przez USB)
- 640x512 - 30/60 Hz (60 Hz NIE jest obsługiwane przez USB)
NETD: 40 mK
Metody wyjścia wideo
Ten moduł może wysyłać dwa jednoczesne strumienie wideo. Jeden cyfrowy, jeden analogowy.
USB 2.0
- Moduł 640 jest ograniczony do 30 kl./s przez USB.
- Kamera jest zgodna z UVC i działa tak samo jak kamera internetowa, ale elementy sterujące kamerą nie są udostępnione. W przypadku modułu 256 można nawet przełączyć liczbę klatek na sekundę z 25 na 50 w standardowych aplikacjach kamery.
- Format pikseli to YUYV422, ale można go zmienić na inną kolejność, np. UYVU, za pomocą SDK.
- Do wysyłania poleceń do kamery przez USB, takich jak zmiany jasności, kalibracja migawki, zmiana map kolorów, konieczne będzie użycie dostarczonego SDK. SDK jest przeznaczone dla systemów Windows i Linux.
MIPI
- Umożliwia cyfrowe 60 kl./s z modułem 640.
- Niestandardowa płytka PCB ma 15-pinowe złącze kompatybilne z portem kamery MIPI CSI-2 Raspberry Pi 4B. Można użyć kabla adaptera 15-22 pin, aby podłączyć RPi 5, 0 i CM.
- Do połączenia z Pi używa sterownika rs300. Implementuje polecenia kamery przez I2C bez potrzeby korzystania z SDK lub wstępnie skompilowanych plików binarnych. Jak najwięcej poleceń można uczynić zgodnymi z V4L2 w celu łatwej integracji.
CVBS
- Wyjście analogowe można ustawić na NTSC lub PAL.
- Może być wysyłane jednocześnie z USB lub MIPI.
- Wyświetlane są tylko mapy kolorów White Hot i Black Hot. Jak dotąd wszystkie inne parametry wydają się w równym stopniu wpływać na analogowy strumień wideo, takie jak: jasność, kontrast, redukcja szumów, cyfrowe wzmocnienie szczegółów (DDE) i zoom cyfrowy.
Instalacja
Wymagania wstępne
- Raspberry Pi z Raspbian/Raspberry Pi OS Bookworm (Bullseye nie testowane)
- Zainstalowane nagłówki Linux
- Wsparcie DKMS
Budowanie i instalacja
Zainstaluj potrzebne nagłówki:
sudo apt install linux-headers dkms git
ZMODYFIKUJ STEROWNIK PRZED BUDOWANIEM. Wkrótce zostanie to ulepszone, aby można było to ustawić bez modyfikowania kodu sterownika
static int mode = 2; //0-640; 1-256; 2-384
static int fps = 60; //256: 25/50fps, 384/640: 30/60fps
Uruchom skrypt instalacyjny:
git clone https://github.com/Kodrea/rs300-v4l2-driver.git
cd /rs300-v4l2-driver
# zmodyfikuj sterownik, aby wybrać moduł
sudo nano rs300.c
chmod +x setup.sh
./setup.sh
W pliku config.txt dodaj nakładkę
sudo nano /boot/firmware/config.txt
Następnie dodaj
camera_auto_detect=0
dtoverlay=rs300
Następnie uruchom ponownie
sudo reboot
Użycie
Wyświetlanie informacji o urządzeniu
Kamera powinna być teraz połączona ze sterownikiem Unicam Raspberry Pi i dostępna na /dev/video0. Uzyskaj podstawowe informacje o sterowniku mostka Unicam:
v4l2-ctl --list-devices
v4l2-ctl --all -d /dev/video0
Rzeczywista kamera jest zarejestrowana jako urządzenie podrzędne w sterowniku
v4l2-ctl -d /dev/v4l-subdev0 --list-ctrls
Testowanie przechwytywania wideo
Ustaw rozdzielczość formatu dla odpowiedniego modułu
Mini2-256
v4l2-ctl -d /dev/video0 --set-fmt-video=width=256,height=192,pixelformat=YUYV
Mini2-384
v4l2-ctl -d /dev/video0 --set-fmt-video=width=384,height=288,pixelformat=YUYV
Mini2-640
v4l2-ctl -d /dev/video0 --set-fmt-video=width=640,height=512,pixelformat=YUYV
gstreamer
gstreamer i był dla mnie szybszy niż ffmpeg, najpierw zainstaluj to
sudo apt install gstreamer1.0-tools
ustaw test-overlay=false, aby usunąć licznik fps
Mini2-256
gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,format=YUY2,width=256,height=192,framerate=50/1 ! videoconvert ! fpsdisplaysink video-sink=autovideosink text-overlay=true
Mini2-384
gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,format=YUY2,width=384,height=288,framerate=60/1 ! videoconvert ! fpsdisplaysink video-sink=autovideosink text-overlay=true
Mini2-640
gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,format=YUY2,width=640,height=512,framerate=60/1 ! videoconvert ! fpsdisplaysink video-sink=autovideosink text-overlay=true
Sterowanie kamerą
użyj kontrolek v4l2
to wyzwala kalibrację migawki ffc
v4l2-ctl -d /dev/v4l-subdev0 --set-ctrl=ffc_trigger=0
Zmień mapy kolorów
v4l2-ctl -d /dev/v4l-subdev0 --set-ctrl=colormap=3
Typowe problemy i rozwiązania
- Nieprawidłowa rozdzielczość: Upewnij się, że ustawiłeś strumień na rozdzielczość swojego modułu. Domyślnie sterownik Unicam ustawi ją na 640x480
Rozwiązywanie problemów
Jeśli występują problemy:
- Sprawdź komunikaty jądra:
dmesg | grep rs300 - W osobnym terminalu:
dmesg wH - Zweryfikuj połączenie I2C:
i2c-detect -y 1 - Sprawdź urządzenie:
ls -la /dev/video* - Zacząłem otrzymywać komunikat, że postinst nie jest uruchamiany, ale jest potrzebny tylko za pierwszym razem lub jeśli wprowadzono zmiany w nakładce drzewa urządzeń
./setup.sh
sudo sh /usr/src/rs300-0.0.1/dkms.postinst
Różne inne polecenia, których użyłem do rozwiązywania problemów
TODO: Uporządkować tę sekcję
cd rs300-v4l2-driver
chmod +x setup.sh dkms.postinst
Zainstaluj DKMS, jeśli jeszcze nie jest zainstalowany
sudo apt install linux-headers dkms git
Run the setup script
Check DKMS status and if module is loaded
dkms status
Po ponownym uruchomieniu wykonaj polecenie
modinfo rs300
check i2c devices
ls /dev/i2c*
i2cdetect -l
i2cdetect -y 10 # right now it's bus 10 for me
i2cdump -f -y 10 0x3c # i2c 10, 0x3c is your device address
check v4l2 devices
ls /dev/video*
v4l2-ctl --list-devices
v4l2-ctl -d /dev/video0 --all
# List supported formats
v4l2-ctl -d /dev/video0 --list-formats-ext
# List supported controls
v4l2-ctl -d /dev/video0 --list-ctrls
# Show current input/output
v4l2-ctl -d /dev/video0 --info
set v4l2 parameters manually; resolution, fps, etc
v4l2-ctl -d /dev/video0 --set-fmt-video width=256,height=192,pixelformat=YUYV
v4l2-ctl -d /dev/video0 --set-fmt-video=width=640,height=512,pixelformat=YUYV
v4l2-ctl --stream-mmap -d /dev/video0 -o test.yuv
ffplay -f v4l2 -input_format yuyv422 -video_size 256x192 -i /dev/video0
ffplay -f v4l2 -input_format yuyv422 -video_size 640x512 -i /dev/video0
Rebuild the module
cd rs300-v4l2-driver
./setup.sh
Check after rebuild and reboot
i2cdetect -l
i2cdetect -y 10
Po ponownym uruchomieniu wykonaj polecenie
dmesg | grep -i rs300
modinfo rs300
media-ctl -p
ls /dev/v4l-subdev*
v4l2-ctl --list-devices
v4l2-ctl -d /dev/video0 --all
v4l2-ctl -d /dev/video0 --list-ctrls
v4l2-ctl -d /dev/v4l-subdev0 --list-ctrls
v4l2-ctl -d /dev/video0 --list-formats-ext
vcgencmd get_camera
v4l2-ctl -d /dev/v4l-subdev0 --all
sudo cat /dev/kmsg | grep rs300
v4l2-ctl -d /dev/video0 --stream-mmap -o test.yuv
sudo dmesg -wH
ffplay -f video4linux2 -input_format yuyv422 -video_size 256x192 -i /dev/video0
ffplay -f video4linux2 -input_format yuyv422 -video_size 640x512 -i /dev/video0












