Construcción de Circuito Térmico

Aquí tienes un ejemplo de código para el Arduino IDE que integra el sensor AMG8833, el display ST7789 y un Arduino Uno. Este ejemplo utiliza las bibliotecas de Adafruit para el AMG8833 y el ST7789, y muestra en el display una imagen térmica en forma de cuadrícula de 8x8 celdas, coloreada según la temperatura leída. Asegúrate de instalar las bibliotecas "Adafruit_AMG88xx", "Adafruit_GFX" y "Adafruit_ST7789" desde el Administrador de Bibliotecas del IDE.

Cpp


#include <Adafruit_AMG88xx.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7789.h>
#include <SPI.h>

// Pines para el display ST7789:
// Define los pines según tu conexión
#define TFT_CS    10
#define TFT_DC    9
#define TFT_RST   8  // Si no tienes pin de reset, podrás conectarlo a RESET

// Objeto para el display
Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST);

// Objeto para el sensor AMG8833
Adafruit_AMG88xx amg;

// Función que mapea la temperatura a un color
uint16_t tempToColor(float temp) {
  // Mapeo simple: asume rangos entre 20°C y 40°C
  float norm = (temp - 20.0) / (40.0 - 20.0);
  if (norm < 0.0) norm = 0.0;
  if (norm > 1.0) norm = 1.0;
  // Se mapea de azul (frío) a rojo (caliente)
  uint8_t r = norm * 255;
  uint8_t g = 0;
  uint8_t b = (1.0 - norm) * 255;
  return tft.color565(r, g, b);
}

void setup() {
  Serial.begin(9600);
  // Inicializa el sensor AMG8833
  if (!amg.begin()) {
    Serial.println("No se puede comunicar con el AMG8833.");
    while (1);
  }
  
  // Inicializa el display ST7789 (tamaño 240x240, ajustar según tu módulo)
  tft.init(240, 240);
  tft.fillScreen(ST77XX_BLACK);
  tft.setRotation(0);
  delay(100);
}

void loop() {
  // Array para almacenar las 64 lecturas (8x8)
  float pixels[64];
  // Lee todos los píxeles del sensor
  amg.readPixels(pixels);
  
  // Determina el tamaño de cada celda en función del tamaño del display
  int cellWidth  = tft.width()  / 8;
  int cellHeight = tft.height() / 8;
  
  // Recorre los 8x8 píxeles
  for (int j = 0; j < 8; j++) {
    for (int i = 0; i < 8; i++) {
      int index = i + j * 8;
      float temp = pixels[index];
      // Convierte la temperatura a un color
      uint16_t color = tempToColor(temp);
      // Dibuja un rectángulo representando la temperatura
      tft.fillRect(i * cellWidth, j * cellHeight, cellWidth, cellHeight, color);
    }
  }
  
  // Espera un segundo antes de actualizar
  delay(1000);
}
Notas adicionales:
  • Verifica que el rango de temperatura esperado se encuentre entre 20°C y 40°C; de no ser así, ajusta los límites en la función tempToColor.
  • Comprueba que el display utiliza la interfaz SPI y que los pines definidos (TFT_CS, TFT_DC, TFT_RST) se correspondan con tu conexión real.
  • Si tu sensor o display requieren otro voltaje (3.3V o 5V), asegúrate de utilizar reguladores o conversores de nivel si fuese necesario.
Copia este código en el Arduino IDE y compílalo para comenzar con tu cámara térmica. ¡Buena suerte con tu proyecto!
Agradezco y probar el circuito
Solicitar enlaces de bibliotecas
Ayuda para adaptar el pinout
U1
C1
Capacitance
0.1uF
C2
Capacitance
0.1uF
IC1

No files yet

Documents

    Documents are markdown text files which describe project goals, capture details, or even simulation outputs.

    Assets

    No assets added.

    Tight Tomato Heat-Ray

    Tight Tomato Heat-Ray thumbnail
    Welcome to your new project. Imagine what you can build here.

    Properties

    Properties describe core aspects of the project.

    Pricing & Availability

    Distributor

    Qty 1

    Arrow

    $17.54–$28.44

    Digi-Key

    $18.51–$21.00

    Mouser

    $25.80

    Verical

    $19.34–$28.56

    Controls