Het huis waar ik in woon is van redelijke leeftijd; zo tocht het zo nu en dan, is de woonkamer een broeikas in de zomer en staat de kachel rood te gloeien in de winter. Er zijn meerdere manieren om de warmtewisseling tussen binnenklimaat en buitenklimaat omlaag te brengen. Zo kunnen de spauwmuur en de kelder geïsoleerd worden, CV-leidingen een isolatiemantel krijgen et cetera.
Het onderzoeken van koudebruggen en plekken in huis is hét perfecte excuus om zelf een infrarood warmtecamera te bouwen, en dat is precies wat ik heb gedaan.
Om dit project te beginnen heb je natuurlijk een module nodig dat infrarood kan waarnemen. Om deze reden heb ik gekozen voor een MLX90640. Deze sensor heeft een resolutie van 32x24 pixels met een refreshrate van max 64Hz. Verder komt deze in een 110º FOV of 55º FOV uitvoering.
Hieronder volgt een lijst met alle benodigdheden:
MLX90640
Microcontroller zoals ESP32
Display, bijv. een 3.2inch SPI ILI9341
Knoppen
Een aansluitschema zal later volgen.
De sensor heeft een resolutie van 32x24, zeer mager dus en al die pixels geven niet een duidelijk beeld wannneer dit op bijvoorbeeld een 320x240 display bekeken wordt. Daarom gaan we gebruik maken van interpolatie: dit is een techniek waarbij de resolutie van een frame omhoog gekrikt wordt door data te verzinnen die tussen de daadwerkelijke data, wat we hebben, past.
Dit is wel een intensief proces. De originele data die we uit de sensor krijgen, is een array van floats, die 4 bytes groot zijn. Dat is dus 3kB aan data. Na het interpolatie proces eindigen we met 154kB aan data, wat 51x zoveel is! Deze framebuffers zitten beide in RAM, zodat het beeld niet stottert.
De interpolatie algoritmes die ik heb geïmplementeerd zijn als volgt:
Nearest Neighbor
Gaussian
Biliniear
Bicubic