The MLX90640 contains a 32x24 array of thermopile sensors creating, in essence, a low resolution thermal imaging camera. As the images show you can detect surface temperatures from many feet away with an accuracy of ±1.5°C (best case). We've packaged the MLX90640 on an easy to use Qwiic board with mounting holes and a smattering of decoupling caps. We've written an example Arduino sketch and Processing app to get started with the sensor quickly!
The MLX90640 occupies a very interesting spot in the thermal imaging space. It is much higher resolution than the Panasonic Grid-EYE and much lower cost than the FLiR Lepton cameras. A very exciting advancement!
This board is one of our many Qwiic compatible boards! Simply plug and go. No soldering, no figuring out which is SDA or SCL, and no voltage regulation or translation required!
We do not plan to regularly produce SparkX products so get them while they’re hot!
No reviews yet.
Looking for answers to technical questions?
We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.
Log in or register to post comments.
No luck with this on a Arduino Due. Ordered both this and the 110 degree variant, and with both I am getting the error "Parameter extraction failed", specifically -4, or outlierPixCnt >4. The values returned for both frames are 0 or NaN, with Vdd = inf
I tried adding delays, reducing I2C clock speed. Can anyone suggest help?
eeMLX90640 when output gives the following
The MLX90640 I2C can only read the EEProm at <400K, otherwise you get errors or crazy values and parameter extraction failed. It also needs 80+ ms to power on before you can read it.
The MLX90640 needs 1M on the i2C to read the device at 32i Hz (chessboard interlace mode), and probably requires TV interlace mode and improved reading code to run at 64i Hz. Otherwise it complains about error counts.
It should be noted by Melexis if they happen to read this, that their readout from memory in chessboard board mode is idiotic, as it wastes half the i2c bandwidth, making 64i Hz mode almost impossible to achieve.
It should be noted that the small arduino type micros cannot process the floating point temperature calculations while running at any kind of framerate, neither can they transmit the data back over RS232 while running at any reasonable framerate. My ESP8266 running at 160 MHz takes 30ms to read an interlace half-frame at 1M on the I2C, and and takes 60ms to process a frame, so it is unable to operate at a framerate higher than 1000 / 90 => 8i Hz.
In the end I wrote code to send the short data over UDP, and did the temp calculations on PC, allowing me to get 32i Hz, although then I found that the ESP8266 was injecting huge amounts of noise into the image.
I believe that the MLX90640 is quite sensitive to low voltage, I have seen it apparently latch-up and require a full power cycle to recover (switched off for several seconds).
In the end I gave up and used an RPI to read it instead, in which case it worked much better (although there are still issues with i2c speed).
Had the same problem. Will be great if you (Nathan seidle) can help updating the the examples to work with Due. Would like to use it very much :) Thanks.
I am trying to use this on a Arduino Due as well and I get the exact same error “Parameter extraction failed” and I get NaN and 0, my Vdd is inf as well.
Would really like to know whats going on here
I requested a breakout board for this component only a month ago and its already available for purchase!?! I'm amazed at SparkX's ability to go from idea to production so quiicly! I don't know whether this product was inspired by my comment or if it was already in development at that time, but this will certainly find its way into some of my upcoming projects. Thanks!
Anyone manage to get the examples to function with Teensy 3.6? I've tried the basic example on 110 degree chip and get "Parameter Extraction" error, but array temperature readings change with target and mostly reasonable. Tried Max Refresh Rate example and same result except temp data all the same and strange numbers. Notice 3.6 micro not defined in header files, perhaps should be different I2C buffer length, clock speeds etc? Don't see obvious hardware changes with new Qwiic models, only color?
Has anyone had any luck with gettting this to work with the Arduino/Genuino Intel 101 board?
Hi ! Can i use ESP32 OR ESP8266 to do the same?. I need read temp and send to web server. I use IBM Watson to process the data. Thermal image will be the next step but for now only need to see values of array with ESPxxx.
What’s that going on in the GIF video? It almost looks like you’re shining a flashlight at the camera, then shining the light on yourself? Is it an IR flashlight or regular?
If you did do this with a flashlight, it’s not at all representative of how you’d use the thing in real life. Can we get a real demo, please?
Maybe you in a hoody, blink eyes, make faces and talk.
Another cool demo is to rub your hands together until quite warm, then video one hand as it cools back to your normal skin temp.
As best as I can figure, he's drinking a cup of coffee (or some warm liquid). You can tell because when the cup is on the screen, it is the brightest (hottest) point. And then he puts it down and he becomes the hottest point on the screen.
I need to know the latency, for tracking applications. There are videos around the place of the sensor in action but with monitors etc in the mix. What's the expected latency, post-teensy for example?
Can you provide a cad model for this?
Continued (see next)... Example 2 with warm monitor at top with ice cream container at bottom:
Example 2 works well with Teensy 3.5 -- my third try. I made the following changes to more clearly see what's going on:
This gives a view of the long edge of the field of view horizontal when the reference tab is down and drops the noise of the temperature fractions.
If more boards are made, it would be nice if the reference tab were perpendicular to an edge. Currently, it's at an odd angle,
Can you share what changes you made to get this to work with your Teensy?
My first try of Example 2 was on an Adafruit Metro M4. Second try was on a Teensy 3.2. Third try was on a Teensy 3.5 which worked with no changes. Changes above were just for readability.
Would it be possible to run processing for example 2 on a teensy 3.5 at the same time as measurements are being taken. Just skipping the serial communications and use SPI instead to send the data to a ILI9341 LCD Display. Would this be too much for the Teensy to handle? I haven't even tried to do this yet. Just looking for an opinion on whether it would be feasible to do. The other option I was looking at was to send the data to an Android device for processing. I want to make this sensor for portable use.