Dieses Blog durchsuchen

IR-Thermokamera an Raspberry PI

Lepton Camera Module
Ein vielleicht interessantes kleines Projekt ist, ein Lepton Kameramodul mit einem Raspberry zu betreiben.  In meinem Fall verwende ich ein Lepton Modul mit 80x60 Pixeln bei einer Pixelgröße von 17µm und einer spektralen Empfindlichkeit im langwelligen Infrarot Bereich von 8µm bis 14µm. Die Framerate beträgt maximal 8,6 Hz. Das Kameramodul wird in ein Breakout-Board gesteckt und dieses mit dem Raspberry PI verbunden. Die Infos dazu gibt‘s weiter unten. Es gibt auch im Entwicklerbereich der Website flir.lepton.com eine Anleitung wie das Breakoutboard mit dem Raspi betrieben wird.





Camera Module mit Breakout Board V1.4
Benötigt wird ein Raspberry PI (in diesem Beispiel habe ich einen Raspberry PI4 verwendet), ein Lepton Thermal Kamera Breakout Board V1.4 und ein wenig Drahtwerk für die Verbindungsleitungen. Die genaue Teileliste (um auch alles Aufbauen und in Betrieb nehmen zu können) ist unten angeführt:
  • Raspberry PI (Modell 2,3 oder 4)
  • Micro SD-Karte (ab 8GB)
  • USB-Steckernetzteil mit Micro USB (oder USB-C) Kabel (je nach Raspberry PI Modell)
  • LAN-Kabel und Zugang zu einem Switch oder Router mit bestehender Internetverbindung
  • Idealerweise einen Rechner mit (SD-Karten-Slot) um das Image für den Raspberry vorzubereiten
  • Ein Monitor für den Raspberry PI mit HDMI oder MINI-HDMI-Kabel
  • USB-Tastatur, Maus
  • Lepton Thermal Kamera Breakout Board
Ist alles vorhanden, dann ist die Verdrahtung des Kamera Moduls mit dem PI herzustellen. Am einfachsten verwendet man die Jumper-Kabel (Female-Female) die in der Modulbastelwelt sehr beliebt sind. Ein Lötkolben ist für viele Demo- und Testaufbauten nicht mehr notwendig... Die folgende Skizze zeigt die herzustellende Verdrahtung:
Klicken zum Vergrössern


Das Pinning ist hier nochmals angeführt:
  • Raspi GPIO PIN01 (3V3)     -->    Lepton Pin VIN
  • Raspi GPIO PIN03 (SDA)    -->     Lepton Pin SDA
  • Raspi GPIO PIN05 (SCL)      -->    Lepton Pin SCL
  • Raspi GPIO PIN06 (GND)   -->     Lepton Pin GND
  • Raspi GPIO PIN19(MOSI)  -->     Lepton Pin MOSI
  • Raspi GPIO PIN21(MISO)  -->     Lepton Pin MISO
  • Raspi GPIO PIN23(CLK)      -->     Lepton Pin CLK
  • Raspi GPIO PIN24(CEO)     -->     Lepton Pin CS
Als Betriebssystem für den Raspberry Pi habe ich Raspbian installiert. Das geht entweder über den Download des RASPBIAN Images von der Webseite https://www.raspberrypi.org/downloads/raspbian oder auch über den NOOBS Installer. Mit dem Tool "etcher" oder "win32diskimager" kann die Image Datei auf die SD-Karte geschrieben werden. Wer mit NOOBS arbeitet braucht nur die zip-Datei auf die FAT32 formatierte SD-Karte zu entpacken. Ist das erledigt, dann einfach die SD-Karte in den Raspberry stecken, Monitor, Keyboard und Maus an den PI anstecken und zum Schluss die Stromversorgung aktivieren. Wenn NOOBS auf der Karte ist, dann wird nach dem Start eine Auswahl an zu installierenden Betriebssystemen angezeigt. Hier am besten auch RASPIAN auswählen und die Installation starten. Ist das abgeschlossen, dann ist je nach gewähltem Image entweder nur eine Konsole oder eben ein Desktop zu sehen. Im letzten Fall ist dann ein Terminal zu öffnen, damit in der Konsole weitergearbeitet werden kann.
Mit sudo raspi-config ist nach dem login in die Konsole das Raspberry PI Config - Tool zu öffnen. Darin sind folgende Services zu aktivieren:
  • SPI (unter Advanced Options)
  • SSH (unter Advanced Options)
  • I2C (unter Advanced Options)
  • Enable Camera (im Hauptmenu des raspi-config tools)
Danach ist der Raspberry zu rebooten. Nach dem erneuten Start und login (als User pi mit default Passwort raspberry) muss das Paket openCV installiert werden. Mit sudo apt-get install python-opencv ist das erledigt.
Auf GitHub habe ich eine Python Library von brandoncurtis und kekiefer für das Lepton Board gefunden. Die Library nennt sich pylepton und ist auf https://github.com/groupgets/pylepton zu finden.
Mit git clone https://github.com/kekiefer/pylepton.git legen wir das Repository  an und wechseln danach in das Verzeichnis cd pylepton. Jetzt kann das Setup Skript ausgeführt werden: sudo python setup.py install.
Mit dem folgenden kleinen Codebeispiel wird die Lepton Kamera ausgelesen, das 80x60 Pixel große Bild auf 800% skaliert und angezeigt.

 import numpy as np  
 import cv2  
 from pylepton import Lepton  
 with Lepton() as lepi:  
  a,_ = lepi.capture()  
 cv2.normalize(a, a, 0, 65535, cv2.NORM_MINMAX) # extend contrast  
 np.right_shift(a, 8, a) # fit data into 8 bits  
 cv2.imwrite("output.jpg", np.uint8(a)) # write it  
 img=cv2.imread('output.jpg')  
 cv2.imshow('Thermobild', img)  
 print('orig dimensions: ',img.shape)  
 scale_percent = 800  
 width = int(img.shape[1] * scale_percent / 100)  
 height = int(img.shape[0] * scale_percent / 100)  
 dim = (width, height)  
 resized = cv2.resize(img, dim, interpolation = cv2.INTER_AREA)  
 print('Resized Dimensions : ',resized.shape)  
 cv2.imshow("Thermobild scaled", resized)  
 cv2.waitKey(0)  
 cv2.destroyAllWindows()  
 exit()