Thermal Camera

The sensors were designed to be used for passive indoor localisation as part of my PhD. Each sensor records a 8 x 8 pixel image at 10 Hz. Using these sensors we are able to localise a subject with a median error of 10 – 20 cm, depending on the situation. More detailed results, along with more information about the experimental setup can be seen in my paper [here].

The hardware reuses a PCB which I designed for another project (using Altium), but ultimately wasn’t needed. The PCB is therefore larger than necessary, but is still reasonably compact at 50 mm x 50 mm. The PCB uses an STM32f103 microcontroller and a CH340G serial to USB bridge. The board has a micro-USB port which is used for both power and data. The firmware was written specifically for this application.

I wrote a PC application in JavaScript to interface with the devices. The application consists of two parts, a backend running on NodeJS and a frontend running in the web browser. On startup, the backend polls all connected serial ports to find any connected thermopiles. Each device has its own unique ID allowing for multiple to be connected at the same time. When data arrives from a device, it is forwarded to the GUI over a WebSocket. If a recording has been started, the data is also saved to a text file. The frontend uses React and allows for viewing of data from the devices in real time, as well as beginning and ending recordings.