The continuous reminder in the last two years of how important is to know the human body temperature made me think on creating an easy to use, fit-in-your-hand, and mobile device that could give me thermal information of my environment; with this in mind I took myself on a journey to create such a device. This is my story.
First, I start with a thermal camera, and how to display its data. The initial monitor was an RGB matrix, why? you may ask, because they are cool, simple to set apart from all the mess I have on my desk.
Displaying the data was not enough, since there was also a matter of mapping the thermal point into a specific range. I add some touch panel and the ability to select a moving range window. Great!
Although it worked, the mobility was zero. I had to make it smaller. I started reducing the footprint of the microprocessor board, from a RPi 3 B+ (anchor to an electrical outlet) to an RPi Zero 2 with the ability to work on a LiPo battery thanks to the Zero Lipo adapter. That give me a nice fit-in-your-hand computer power.
However, how about the data display? I could not be walking with my cool RGB matrix. I decided to go with the Adafruit 1.3 TFT Bonnet board for RPi. The board give me all I need, a display, buttons and even an Qwiic I2C connector.
Ok, here are some more details of this journey.
Setup RGB matrixI used a RPi 3 B+, connected thru the I2C port to the thermal camera, and the RGB bonnet connected to the RGB matrix.
Adafruit provides a great tutorial for installing the RGB matrix, and bonnet here.
Be aware that in some of the python samples you have to specify the size of your RGB matrix by using the command line parameters --led-rows=(rows) and --led-cols=(columns). In my case those values are 64x64.
I use a pHat Stack form Pimoroni to allow me connection of an I2C adapter board and the RGB bonnet. The RGB matrix is being powered by a 7-12 volts power adapter.
The frames per second was about 5 fps.
Extend the Thermal Camera reach.I was basically chain to my desk due to the power cord length, and the RGB matrix size.
I decided to use an I2C Extender / Active Terminator, so I could use a 20 feet long four wire cable (as shown in the picture) to connect the camera. My mobility improve considerably, now I was able to scan boards, and other objects around my office.
Mapping the thermo-data to pixels as shown on the Adafruit examples requires to set a (min, max) temperature range hardcoded in the program. However, not all the objects you want to measure lies on those ranges.
Software installation can be accomplished by following the instructions on the Pimoroni Touch pHat Github repository.
I modify the sample program for the RGB matrix to use a Pimoroni Touch Hat to adjust the temperature range being mapped in the RGB matrix.
You can see the full program at the Github repository. Note that the program to manage the RGB matrix is in the LED_Matrix directory.
Mount on Stand Lamp with an I2C MonitorI wonder, what are my max and min temperature range? I wanted that information available so I could be certain that the temperature range I was setting the RGB matrix was showing the important information. I use an 1.3 OLED display with Qwiic connector.
As you can see from the above and below pictures, I mount the thermal camera, and the I2C display over a stand lamp with an adjustable arm. The display shows the min, max, and average temperature form the thermal camera.
I wanted to know how small I could go on the processor board. I try using a RPi Zero W board, but the fps drop to 1.5 images. Not very useful.
Welcome to the RPi Zero ver 2.0. This board improve the fps to 3 to 4 images per second, much better than the RPi Zero, but still less than the RPi 3 B+. However, good enough for me.
I had to do some adjustments to the layout since using the pHat Stack board take too much space. I replace the board by using a mini black hat with two bay port use for the I2C interface board and the RGB matrix bonnet board. I use a Micro Connector Raspberry Pi 40-pin GPIO 1 to 2 Expansion Board, so I could attached the Zero LiPo and the touch pHat board
The system is shown below.
The device is smaller now, and could be placed conveniently on a desk mount stand, using magnets.
However, mobility was still limited.
I decided to replace the RGB matrix, and use the TFT bonnet board for RPi. This configuration also allow me to replace the Touch pHat with the buttons and joystick that comes with the bonnet board, and as bonus the I2C interface board was not necessary since the bonnet has a Qwiic connector.
You can see the full program at the Github repository. Note that the program to manage the mobile device is in the Bonnet directory.
The footprint of the device reduce drastically. Adding a 3.3 Volt battery connected to the zero LiPo board was able to get power for the RPi Zero ver 2.0.
The fps on this configuration is on the range of 5 to 6 images per second.
The buttons are to select pre-defined temperature settings, and the joystick allows me to adjust even further the range. The display shows the range, min, max and average temperature.
The battery can rest in the space between the Rpi and the bonnet.
The whole device can be carried on your hand.
The device is now portable enough that I can carry it anywhere a thermal measurement is needed.
Next step is to design a case for it.
Thanks for reading.
Comments