THRmAL: A 3D Printed Thermal Viewer with 300% More Lasers Than the Leading Brand

Want to check how even the heating of your printer bed is, or where the heat is escaping your house, but don’t want to pay hundreds of dollars on a FLIR camera? Ever looked at your laser-guided infrared thermometer and thought to yourself, “golly, this device only has about 25% of the number of lasers I need”? Introducing Thermal Handheld Rendering meets Additional Lasers (THRmAL), an AVR-powered handheld thermal imaging device based on Panasonic’s Grid-EYE line of thermal sensors. It has a number of advantages over other thermal imaging solutions:

  • 4 lasers to clearly mark the corners of the sensor’s FOV
  • 64x the number of pixels found in an infrared thermometer (assuming said thermometer could be considered to have 1 pixel)
  • Comfy TPE grip
  • Contains an unnecessary quantity of carbon fibre

THRmAL was primarily constructed from components I already had in my parts drawer (and I expect many other makers do too), meaning the only real costs were the Grid-EYE breakout, OLED panel, and custom PCB fabrication.



THRmAL uses the Panasonic AMG8833 sensor mounted on Sparkfun’s Qwiic breakout board, which comes with a handy mounting holes and a 4-pin JST connector. Surrounding the Grid-EYE are 4 lasers angled to match the corners of the sensor’s 60° horizontal and vertical FOV. This way, when the lasers are powered, 4 points are projected to form a square (from the THRmAL’s perspective) on the target surface.

The thermal sensor and lasers mounted on the end of THRmAL. I was lucky enough to get one of the slick black SparkX boards before the Grid-EYE became a permanent Sparkfun product.

Display and Interface

The display is a SSD1331 OLED module running in SPI mode (despite the fact that the pins are labeled SDA and SCL). Below it are 3 tactile switches with custom keycaps (produced using a filament swap on the first layer of the iconography) and a power switch. Unfortunately, updating the entire display each frame means THRmAL can only achieve approximately 3 frames per second, but I did come up with a workaround for this (which I’ll explain in the Software section).

The OLED display and buttons with the rear faceplate removed. Please excuse the fingerprints.


The core of almost any electronics project is a circuit board of some sort, and THRmAL is no exception. THRmAL’s PCB is home to:

  • A 5V Arduino Nano clone that I keep my parts drawer stocked with at all times (I get them in packs of 5 or 10)
  • A logic level shifter to let the 5V Nano talk to the 3.3V sensor (I am wholly aware that just using a 3.3V uC would let me avoid the need for level shifting, I just didn’t have handfuls of 3.3 uCs at the time)
  • A buck converter to allow for variable input voltages to be used efficiently (currently the THRmAL runs on a 9V battery)
  • A slew of connectors to interface with the sensor, display, buttons, etc
An early protoboard version of THRmAL. Note the bulky overkill voltage regulator. This was replaced with a TO-92 regulator in the final design.

After quickly testing out the electronics on a breadboard, and later a protoboard, I drew up a PCB design in EAGLE and sent it off to OSH Park for fabrication.

The PCB layout for THRmAL

A few weeks later, and I had a promptly produced perfect purple PCB, as promised.

A fresh, unpopulated THRmAL PCB. OSH Park always does such nice work.
The finished PCB, populated with all the components, and a Nano socketed in


The body of THRmAL is constructed from 2 main materials: Atomic Filament Carbon Fiber PETG and Proto-pasta Highfive Blue HTPLA. The contrast between the metallic flake of the Highfive Blue and the dark semi-matte surface of the carbon PETG is something not easily captured in a photo.

The full device, in case you forgot what it looked like.

The exterior consists of 2 PLA faceplates and 2 PETG side panels, which are friction-fit and can easily be removed to unsocket the Nano, tune the buck converter, or simply show off the internals. Additionally, the handle is attached by sliding it onto a rail from the front, meaning that alternative handles with various battery types could be installed without tools (although I haven’t had any reason to design a handle other than the 9V battery one). There is not a single visible fastener on THRmAL when it is fully assembled.

The handle grip is made out of Spool3D 80A TPE, and feels soft and squishy in the hand.


THRmAL’s software is fairly basic and slapped together, but it’s still worth mentioning. I more or less just glued the Adafruit SSD1331 library and the Sparkfun GRID-Eye library together with a simple Arduino sketch. THRmAL has a view button that lets you switch between 4 view modes:

  1. Red-blue fullscreen
  2. Greyscale fullscreen
  3. Red-blue mini
  4. Greyscale mini

The “mini” modes are half the size on each axis, meaning it only uses 1/4 of the number of pixels required for the fullscreen modes. This lets us achieve around the 10FPS of the sensor, giving a much smoother viewing experience.

The hold button simply pauses rendering, similar to how releasing the trigger of an infrared thermometer will hold the current sample. You’ll never guess what the laser button does…


If you want to build your own THRmAL, I’ve posted all the project files and a build guide on Thingiverse.