Construcción de Circuito Térmico

0:53

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 
#include 
#include 
#include 

// 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  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
379 days

Ready.


To get started, talk to Flux or create a New Document.

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