Usando alguna de las muchas cámaras térmicas para Arduino que podemos encontrar en el mercado, junto con otros componentes de hardware y también de software, es posible poner en funcionamiento cámaras termográficas a coste súper reducido, y con ese gran estímulo que supone hacer las cosas por nuestra propia cuenta, incluso cuando se trata de «jugar» con alta tecnología.

Waveshare MLX90640 IR Array Thermal Imaging Camera 32×24 Pixels 110°Field of View Communicating Via I2C Interface Supports Raspberry Pi in Miscellaneous Industrial or Intelligent Control Applications
  • By utilizing the MLX90640 far-infrared thermal sensor array, this module can detect the IR distribution of objects...
  • Adopts MLX90640 far-infrared thermal sensor array, 32×24 pixels. Communicating via I2C interface, configurable to...
  • Noise Equivalent Temperature Difference (NETD) 0.1K RMS @1Hz refresh rate. Onboard voltage translator, compatible...
  • Applications:High precision non-contact temperature measurements; IR thermal imaging devices, IR thermometers;...

En esta review no sólo te vamos a mostrar las cámaras, pantallas y placas, que necesitas para hacer una cámara térmica con Arduino, sino que, además, te vamos a mostrar paso a paso lo que debes hacer para conseguirlo. Incluso te vamos a mostrar a modo de ejemplo un código de programación para la placa que sería válido, aunque siempre puedes hacerlo tú a tu gusto si tienes los conocimientos necesarios.

En principio, reuniendo los elementos necesarios, hacer una cámara termográfica con Arduino es cosa sencilla, aunque requiere de bastante precisión. No obstante, es importante estar familiarizado con conceptos básicos de programación, de electrónica, etc.

Qué es Arduino

Actualmente, Arduino es una compañía que fabrica componentes de hardware orientados a la creación de dispositivos electrónicos de forma sencilla y muy barata, tanto a nivel de principiante como profesional. Nacida en Italia a partir de un proyecto estudiantil, Arduino tiene sentido en la medida en que sus usuarios constituyen una comunidad activa que comparte sus creaciones, junto con el software necesario para poder poner en funcionamiento cada creación con unos fines concretos.

Las primeras placas de Arduino básicas que se comercializaron en 2005 dieron paso con posterioridad a placas de desarrollo con microcontroladores, que multiplicaron las posibilidades de los proyectos. Además, poco a poco, han ido aumentando también los componentes te hardware puestos a disposición de la comunidad, para realizar todo tipo de robots, aparatos electrónicos, etc.

¿Se puede hacer una cámara térmica con Arduino?

Sí. Si nos hemos propuesto dar respuesta a esta demanda a través de esta review, es porque sí es posible, ya que Arduino pone a nuestra disposición todos los elementos de hardware necesarios para poder hacerlo, y porque, por otro lado, la comunidad Arduino se ha encargado de hacer las primeras pruebas y de compartir los resultados con el resto de usuarios de Arduino.

Sólo tenemos que investigar un poco en Internet, para saber cómo hacer una cámara de infrarrojos con pantalla con Arduino. Claro, que si quieres, puedes seguir leyendo y nosotros te daremos el trabajo ya medio hecho.

Ventajas para hacer una cámara termográfica con Arduino

Como ya sabes, las cámaras térmicas tienen precios bastante considerables. Evidentemente, éste es un aspecto relativo si tenemos en cuenta que el uso de las cámaras termográficas se circunscribe, en la mayoría de los casos, a un ámbito profesional relacionado con un rendimiento económico; y si una cámara térmica nos permite hacer mejor nuestro trabajo (más rápido y con mayor eficiencia), esa mejoría se traduce en beneficios a la postre.

Pero quienes quieren usar una cámara térmica en casa para hacer experimentos, para hacer trabajos caseros, o simplemente para darse el gusto y enredar un poco, no se pueden permitir gastar tanto dinero en la mayoría de los casos. En esos casos, hacer una cámara térmica con infrarrojos para Arduino es una alternativa a la posibilidad de hacerse con alguna de las muchas cámaras térmicas baratas que también existen (aunque «barato» no sea sinónimo en este caso ni de alto rendimiento, ni de «bajo coste»).

Otro punto a favor en la fabricación y programación de una cámara térmica con Arduino que ya mencionamos antes, es el hecho de permitirnos experimentar, indagar, y manipular componentes electrónicos con un fin concreto, hasta conseguir los resultados esperados. Esta experimentación es la base misma del surgimiento de Arduino, y hace que tanto las placas como el resto de componentes sigan siendo usados por estudiantes de electrónica y de informática de todo el mundo, a modo de ensayo en multitud de prácticas y proyectos reales.

Pero, obviamente, usando Arduino para hacer una cámara térmica, nos vamos a encontrar con las limitaciones impuestas por los propios componentes, pensados para ofrecer un rendimiento real, pero limitado. Por eso, en una cámara termográfica IR con Arduino también nos vamos a encontrar con algunos inconvenientes, como son:

  • La lentitud en la representación de los mapas de calor.
  • La dificultad o imposibilidad de usar las cámaras con objetos o sujetos en movimiento, sino que éstos y el propio dispositivo deberán estar lo más quietos que sea posible.

Cómo hacer una cámara térmica para con Arduino

A parte de comprar los componentes que indicaremos a continuación, para hacer una cámara térmica con Arduino necesitaremos el esquema de interrelación de cada parte, y el necesario código de programación de la placa, que podemos hacer nosotros mismos si somos capaces, o bien podemos tomar prestado. Si quieres empezar a ilustrarte, te recomendamos que veas esta página, en la que se explica cómo hacer una cámara térmica con Arduino paso a paso, en inglés, incluyendo partes y el esquema.

Pero si quieres ir más al grano, nosotros nos vamos a basar en explicarte lo necesario para hacer una cámara térmica con componentes de Arduino siguiendo las explicaciones de Romashka360. Empecemos por ver el vídeo explicativo, antes de entrar en los detalles.

Componentes de una cámara térmica para Arduino

Como venimos diciendo, para hacer una cámara térmica IR con Arduino tenemos que reunir dos tipos de componentes:

  • Una parte hardware
  • Una parte software

En suma, y resumiendo todo lo posible, lo que tenemos que hacer es conectar una cámara IR y una pantalla a una placa con un código específico, para hacer que todo ello obre el milagro. Cámara, pantalla y placa, por tanto, son los elementos de hardware. Veamos cada cosa por separado.

Cámara infrarroja para Arduino

Todos los elementos se hacen imprescindibles. De hecho, como sucede con la mayoría de proyectos con Arduino, la parte externa se supedita casi por completo al funcionamiento del proyecto, y nos ceñimos exclusivamente a lo necesario, a lo imprescindible, al menos en un primer momento. Pero, tal vez, el componente más importante, o el más específico (pues tanto la pantalla como la placa, como el propio software, ofrecen bastante opciones) sea la cámara IR para Arduino. También es el más caro, con diferencia.

Waveshare MLX90640 IR Array Thermal Imaging Camera 32×24 Pixels 110°Field of View Communicating Via I2C Interface Supports Raspberry Pi in Miscellaneous Industrial or Intelligent Control Applications
  • By utilizing the MLX90640 far-infrared thermal sensor array, this module can detect the IR distribution of objects...
  • Adopts MLX90640 far-infrared thermal sensor array, 32×24 pixels. Communicating via I2C interface, configurable to...
  • Noise Equivalent Temperature Difference (NETD) 0.1K RMS @1Hz refresh rate. Onboard voltage translator, compatible...
  • Applications:High precision non-contact temperature measurements; IR thermal imaging devices, IR thermometers;...

Basándonos en el proyecto que referenciábamos, si vamos a contar con Arduino para hacer una cámara térmica, tenemos el componente de la cámara «ya hecho». Se trata del componente MLX90640, una cámara de 32×24 píxeles con 110º de ángulo de visión, bastante limitada, pero que nos va a permitir obtener nuestra cámara térmica de bajo coste con Arduino, sin ninguna duda.

Placa de desarrollo electrónica para Arduino

Como decíamos, de placa podemos usar la que nos indican en el proyecto, o bien podemos optar por otro modelo entre las muchas placas para Arduino que existen en el mercado. Siguiendo al pie de la letra las indicaciones, elegiríamos una Atmel SAMD21, pero tenemos más posibilidades.

Como ya hemos dicho, para preparar el software, necesitamos programar la placa. Pues bien, para que no tengas que buscarlo, te hemos pegado aquí mismo el código para programar la cámara de infrarrojos con Arduino siguiendo el modelo de Romashka360:

#include <Adafruit_GFX.h> 
#include <Adafruit_ST7735.h>
#include <SPI.h>
#include <Wire.h>
#include "MLX90640_API.h" //github.com/sparkfun/SparkFun_MLX90640_Arduino_Example
#include "MLX90640_I2C_Driver.h"

#define TA_SHIFT 8 //Default shift for MLX90640 in open air
#define RGB565(r,g,b) (((b&0xF8)<<8) | ((g&0xFC)<<3) | ((r&0xF8)>>3))
Adafruit_ST7735 tft = Adafruit_ST7735(/*TFT_CS*/ 11, /*TFT_DC*/ 10, /*TFT_MOSI*/ 13, /*TFT_SCLK*/ 12, /*TFT_RST*/ 9);

const byte MLX90640_address = 0x33;
static float mlx90640To[768];
paramsMLX90640 mlx90640;


void setup()
{
  Wire.begin();
  Wire.setClock(400000); //Increase I2C clock speed to 400kHz
  Wire.beginTransmission((uint8_t)MLX90640_address);
  uint16_t eeMLX90640[832];
  MLX90640_DumpEE(MLX90640_address, eeMLX90640);
  MLX90640_ExtractParameters(eeMLX90640, &mlx90640);
  MLX90640_SetRefreshRate(MLX90640_address, 0x02); //Set rate to 2Hz

  tft.initR(INITR_MINI160x80);
  tft.fillScreen(ST77XX_WHITE);
  tft.setRotation(3);
  tft.invertDisplay(true);
}


void loop()
{
String myT;
uint16_t mlx90640Frame[834];

    MLX90640_GetFrameData(MLX90640_address, mlx90640Frame);
    float vdd = MLX90640_GetVdd(mlx90640Frame, &mlx90640);
    float Ta = MLX90640_GetTa(mlx90640Frame, &mlx90640);
    float tr = Ta - TA_SHIFT;
    float emissivity = 0.95;
    MLX90640_CalculateTo(mlx90640Frame, &mlx90640, emissivity, tr, mlx90640To);

 for (int i1 = 0 ; i1 < 32 ; i1++)  {
   for (int i2 = 0 ; i2 < 24 ; i2++)  {
    float tT = mlx90640To[i1+i2*32];
    float mycolor;

    //get Iron Palette 
    mycolor = 0;//Black
    mycolor = (tT>=30?RGB565(0x20, 0x00, 0x8C):mycolor);//Blue
    mycolor = (tT>=80?RGB565(0xCC, 0x00, 0x77):mycolor);//Purple
    mycolor = (tT>=130?RGB565(0xFF, 0xD7, 0x00):mycolor);//Gold
    mycolor = (tT>=180?RGB565(0xFF, 0xFF, 0xFF):mycolor);//White

    tft.fillRect(1+i1*3, tft.height()-i2*3, 3,3, mycolor);
    if (i1+i2*32==768/2+15) {myT=String(tT,0); tft.fillRect(1+i1*3, tft.height()-i2*3, 3,3, RGB565(0x00, 0x00, 0xff));} //Center
  }
 }

  tft.fillRect(100,1, 60,60, ST77XX_WHITE);
  tft.setTextSize(2);
  tft.setTextColor(ST77XX_BLACK);
  tft.setCursor(100, 30);
  tft.print(myT+"C");
} 

Pantalla para nuestra cámara térmica con Arduino

Por último, lo que tendríamos que hacer sería comprar una pantalla para Arduino. En este aspecto también tenemos muchas opciones, pero no merecería la pena comprar una súper pantalla para reproducir las imágenes captadas con una cámara IR de tan baja resolución. Un display de 80 x 160 píxeles es más que suficiente, y nos permite obtener un conjunto equilibrado.

Con todos los componentes reunidos, ya sólo nos faltaría soldar las partes (necesitaremos también unos 10 cables para poder unir los componentes de la forma exacta). Para ello, seguiremos un plan o esquema como el que nos muestra centralnexus.com en este gráfico que, como puedes ver, es tan sencillo como exacto; o sea, que hay pocos elementos que unir, pero una sola conexión errónea impediría el funcionamiento de la cámara IR con Arduino.

Esquema para hacer una cámara térmica con Arduino

Parte del contenido de esta página procede de Amazon. Los precios y disponibilidad de sus productos cambian constantemente y se actualizan cada 24 horas. Se aplicará a la compra del producto el precio y la disponibilidad que aparezca en Amazon en el momento de la compra.