Hello,
I am playing a bit with the MLX90640 far infrared thermal sensor array, and I wrote an Elixir library to interface with it. It is published on Hex as elixir_mlx90640, and it is designed to work on Linux platforms, such as Nerves. So far, I tested it on a Raspberry Pi Zero W.
The MLX90640 is an inexpensive thermal camera. It has a low resolution (36 x 24 pixels), but it is quite precise, and a nice sensor for the price. I found that interfacing it with micro-controllers or with Linux using the provided C++ libraries is a bit tricky and error prone (lots of gotchas), so I hope I made it easier to use it with this Elixir library.
I am waiting for a M5Stack device to make a small, battery powered thermal camera. Unfortunately on the ESP32 it’s going to be C, not Elixir, but it’s a convenient package. Alternatively, I am thinking to get a small screen and try out Scenic.
The fun part of doing it in Elixir is also that, once you get the pixel temperatures, there is so much you can do with the data: people presence detection is much easier than with normal cameras, and does not have many privacy concerns (you can easily detect people, but definitely cannot do face recognition), and the temperature measurements are actually very precise. Heat-seeking robots would also be another fun project!
One thing that would be great in the current Raspberry Pi setup, is to open a WiFi access point on the Pi instead of using an existing WiFi network. That way, one could just connect to the Pi access point and see the thermal imaging via browser, removing the current need to create a custom firmware image that contains the user’s WiFi credentials. I know a few people did something around Nerves and hostapd, but I did not try yet. Anybody has advices?