Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
- Vyvinul jsem zařízení, které lze připojit k dronu a které může živě streamovat smíšený rámeček z termografického obrazu ukazujícího tepelné záření a pravidelné fotografování s viditelným světlem.
- Platforma se skládá z malého jednostranného počítače, snímače termokamery a běžného kamerového modulu.
- Tento projekt si klade za cíl prozkoumat možnosti nízkonákladové termovizní platformy pro detekci poškození solárního panelu, který se vyznačuje tepelnými podpisy.
Zásoby
- Raspberry Pi 3B+
- Panasonic AMG8833 mřížkové oko
- Pi kamera V2
- Notebook s prohlížečem VNC
Krok 1: Vývoj DPS
- Desku plošných spojů pro snímač mřížkových očí Panasonic lze navrhnout pomocí systému Auto-desk EAGLE.
- Soubor.brd je vyvíjen podobně jako modul Adafruit AMG8833 s mírnými úpravami
- Poté lze PCB vytisknout u výrobců PCB a já jsem použil pcbway.com, kde byla moje první objednávka zcela zdarma.
- Zjistil jsem, že pájení desek plošných spojů je zcela odlišné od pájení, které jsem znal, protože zahrnovalo zařízení pro povrchovou montáž, a tak jsem šel k jinému výrobci desek plošných spojů a nechal jsem svou desku pájet se snímačem.
Krok 2: Software Devopment
- Kód je napsán v Thonny, integrovaném vývojovém prostředí pythonu.
- Postupem projektu bylo připojení pi kamery a instalace souvisejícího softwaru.
- Dalším krokem bylo připojení tepelného senzoru ke správnému zapojení pinů GPIO a instalace knihovny Adafruit pro využití senzoru.
- Knihovna Adafruit obsahovala skript pro čtení senzoru a mapování teplot na barvy, nicméně vytvořené pohyblivé obrázky nebylo možné implementovat
- Proto byl kód přepsán do formátu podporujícího zpracování obrazu, hlavně pro spojení dvou snímků dohromady.
Krok 3: Čtení senzorů
- Ke sběru dat z termokamery byla využita knihovna ADAFRUIT, která umožňuje rychlé čtení senzorů pomocí příkazů readpixels (), generování pole obsahujícího temepratur ve stupních Celsia měřených ze senzorů oddělených prvků.
- U kamery Pi generuje příkaz funkce picamera.capture () obrázek se zadaným výstupním formátem souboru
- Aby vyhovovalo rychlému zpracování, bylo nižší rozlišení nastaveno na 500 x 500 pixelů
Krok 4: Nastavení tepelného senzoru
- Nejprve musíme nainstalovat balíčky Adafruit Library a python
- Otevřete příkazový řádek a spusťte: sudo apt-get update, který vás aktualizuje Pi
- Poté zadejte příkaz: sudo apt-get install -y build-essential python-pip python-dev python-smbus git
- Poté spusťte: git clone https://github.com/adafruit/Adafruit_Python_GPIO….který stáhne balíček Adafruit do vašeho Raspberry Pi
- Přesunout se do adresáře: cd Adafruit_Python_GPIO
- A nainstalujte nastavení spuštěním příkazu: sudo python setup.py install
- Nyní nainstalujte scipy a pygame: sudo apt-get install -y python-scipy python-pygame
- Nakonec nainstalujte knihovnu barev zadáním příkazu: sudo pip install color Adafruit_AMG88xx
Krok 5: Povolení rozhraní I2C
- Zadejte příkaz: sudo raspi-config
- Klikněte na Pokročilé možnosti a vyberte I2C, poté jej povolte a vyberte Dokončit
- Chcete -li úspěšně povolit I2C, restartujte počítač Pi
- Ujistěte se, že jste povolili také rozhraní Camera a VNC
Krok 6: Zapojení senzoru a kamery
- K Pi byste měli připojit pouze 4 piny AMG8833 a ponechat IR pin.
- Napájení 5V a uzemnění lze připojit k pinům GPIO 1 a 6
- SDA a SCL jsou zapojeny do pinů 4 a 5 Pi.
- Přihlaste se k malině pomocí ssh
- spustit: sudo i2cdetect -y 1
- V 9. sloupci byste měli vidět „69“, pokud ne, je problém v zapojení senzoru pomocí Pi.
- Nakonec připojte pi kameru v2 ke slotu pro kameru v Raspberry Pi
Krok 7: Tepelné mapování
- Zadejte příkaz: git clone
- Přesuňte se do adresáře Adafruit_AMG88xx_python/examples
- zadejte příkaz: sudo python thermal_cam.py
- Níže jsem připojil kód pro tepelné mapování AMG8833.
Krok 8: Zpracování obrazu
-
Mapování teploty
- Pro vizualizaci tepelných dat jsou teplotní hodnoty mapovány do barevného přechodu v rozmezí od modré po červenou se všemi ostatními barvami mezi nimi
- Po spuštění senzoru je nejnižší teplota namapována na 0 (modrá) a nejvyšší teplota na 1023 (červená)
- Všem ostatním teplotám mezi nimi jsou v rámci intervalu přiřazeny korelované hodnoty
- Výstup snímače je 1 x 64 pole, jehož velikost je změněna na matici.
-
Interpolace
- Rozlišení tepelného senzoru je poměrně nízké, 8 x 8 pixelů, takže ke zvýšení rozlišení na 32 x 32 je použita krychlová interpolace, což má za následek 16krát větší matici
- Interpolace funguje tak, že se vytvoří nové datové body mezi množinou známých bodů, přesnost se však snižuje.
-
Čísla k obrázkům
- Čísla v rozsahu od 0 do 1023 v matici 32 x 32 jsou převedena na desítkový kód v barevném modelu RGB.
- Z desítkového kódu je snadné vygenerovat obrázek pomocí funkce z knihovny SciPy
-
Změna velikosti pomocí vyhlazování
- Chcete -li změnit velikost obrázku 32 x 32 na 500 x 500, aby odpovídal rozlišení kamery Pi, používá se PIL (Python Image Library).
- Má filtr vyhlazování, který při zvětšení vyhladí okraje mezi pixely
-
Transparentní překrytí obrázku
- Digitální obraz a tepelný obraz jsou poté smíchány do jednoho konečného obrazu a každý je přidán s 50% průhledností.
- Když jsou obrazy ze dvou senzorů s paralelní vzdáleností mezi sebou sloučeny, nebudou se zcela překrývat
- Nakonec se zobrazí minimální a maximální teplota podle AMG8833 s překrývajícím se textem na displeji
Krok 9: Soubory kódu a PCB
Níže jsem připojil testovací a konečný kód projektu
Krok 10: Závěr
- Proto byla termální kamera postavena s Raspberry Pi a AMG8833.
- Konečné video bylo vloženo do tohoto příspěvku
- Lze pozorovat, že teplota se okamžitě mění, když se zapalovač přiblížím k nastavení a plamen zapalovače byl senzorem přesně detekován.
- Tento projekt lze proto dále rozvíjet pro detekci horečky u lidí vstupujících do místnosti, což bude v této krizi COVID19 velmi užitečné.