Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Medición Automática de Temperatura con Alertas de Voz

Componentes y suministros

Componente Cantidad
Arduino UNO 1
Módulo tarjeta SD 1
Tarjeta SD 8GB 1
Amplificador PAM8403 y altavoz 1
Sensor ultrasónico HC-SR04 1
OLED 128x64 1
Cables para protoboard 1
Termómetro infrarrojo GY-906 (MLX90614) 1

Comprar componentes electrónicos en utsource.net

Nota: Debido a la alta demanda de termómetros infrarrojos, a veces puede ser difícil encontrar el sensor GY-906 en el mercado.

Sobre el proyecto

En la actualidad, el mundo entero lucha contra el virus Covid-19. La primera comprobación para detectar personas afectadas (o sospechosas) es medir la temperatura corporal. Este proyecto modela un sistema que mide la temperatura automáticamente e informa por voz.

Paso 1: Lista de componentes

Paso 2: Diseño del circuito

Mira el diseño del circuito.

Medición Automática de Temperatura con Alertas de Voz

Básicamente, medirá la temperatura desde el termómetro infrarrojo GY-906, luego mostrará el resultado en el OLED 128x64. También informará el resultado de temperatura por voz mediante el altavoz. El altavoz tomará el archivo de audio de la tarjeta SD y lo reproducirá según el resultado de temperatura. El altavoz necesita el amplificador PAM8403 para que el sonido sea lo suficientemente fuerte.

Proceso principal de uso:

  1. Pasamos la mano frente al sensor ultrasónico (distancia aprox. 10 cm)
  2. Entonces nos saluda por voz: "Bienvenido al sistema de medición de temperatura, por favor ponga su mano o frente frente al sensor a unos 2 cm"
  3. Ponemos la mano o frente frente al sensor para medir la temperatura
  4. Reproducirá el resultado de temperatura por voz, así como lo mostrará en la LCD. Por ejemplo, si tu temperatura es 36.5°C, dirá: "Tu temperatura es 36.5 grados Celsius. Tu temperatura parece normal, ¡así que mantente sano!"

Paso 3: Hacer estructura y conexiones

La estructura es de madera MDF de 3mm de grosor, cortada por láser. Espero que algunos de ustedes puedan acceder a una máquina láser CNC para cortarla. Si no, pueden usar cartón. El archivo de diseño se puede descargar aquí (Google Drive).

Medición Automática de Temperatura con Alertas de Voz
Medición Automática de Temperatura con Alertas de Voz
Medición Automática de Temperatura con Alertas de Voz
Medición Automática de Temperatura con Alertas de Voz
Medición Automática de Temperatura con Alertas de Voz

Después de cortar, necesitarás pegamento para hacer la estructura. No es difícil. Luego instalaremos todas las piezas en la estructura y haremos el cableado según el diseño del circuito.

Paso 4: Código, funcionamiento y descarga

El código de Arduino hará el trabajo:

  1. Detectar si hay gente (obstáculo) cerca del sensor, detectado por sensor ultrasónico
  2. Dar bienvenida por altavoz, informar al usuario que ponga la mano o frente cerca del sensor a unos 2 cm
  3. Anunciar resultado y comentario sobre tu temperatura
Medición Automática de Temperatura con Alertas de Voz

El código se puede descargar aquí.

Aquí están los archivos de audio, deberás descargarlos y guardarlos en la tarjeta SD:

https://bit.ly/3aZpGWJ

Nota: los archivos de audio son 8-bit, mono, 11025Hz. Grabé mi voz por computadora (o teléfono), luego la convertí con herramienta online (https://audio.online-convert.com/convert-to-wav).

Paso 5: Prueba de funcionamiento

Ahora podemos conectar la alimentación y probar cómo funciona. Muy interesante que el sistema pueda medir tu temperatura e informar por voz.

Medición Automática de Temperatura con Alertas de Voz
Medición Automática de Temperatura con Alertas de Voz
Medición Automática de Temperatura con Alertas de Voz

¡Espero que os guste! :)

¡Gracias por leer!

Código

Arduino_ir_temperature_auto.ino (Arduino)

// www.youtube.com/c/engineer2you
#include <SD.h> // para tarjeta SD
#define SD_ChipSelectPin 10 // para tarjeta SD
#include <TMRpcm.h> // Lib para reproducir archivo wav
#include <Adafruit_MLX90614.h> // para termómetro infrarrojo

//--------------------------------------- OLED
#include "SSD1306Ascii.h"
#include "SSD1306AsciiAvrI2c.h"
#define I2C_ADDRESS 0x3C // 0X3C+SA0 - 0x3C or 0x3D
#define RST_PIN -1 // Define RST_PIN apropiado si se requiere.

//--------------------------------------- OLED
Adafruit_MLX90614 mlx = Adafruit_MLX90614(); // para termómetro infrarrojo
SSD1306AsciiAvrI2c oled; // crear objeto para LCD
TMRpcm tmrpcm; // crear objeto para reproductor de música
double temp; // para guardar valor de temperatura
const int trigPin = 17; // ultrasónico
const int echoPin = 16; // ultrasónico
long duration;
int distance;
int step1_judge = 0;

void setup() {
  //--------------------------------------- OLED
  #if RST_PIN >= 0
  oled.begin(&Adafruit128x64, I2C_ADDRESS, RST_PIN);
  #else
  oled.begin(&Adafruit128x64, I2C_ADDRESS);
  #endif
  
  oled.setFont(Adafruit5x7);
  //-------------------------------------- OLED
  
  tmrpcm.speakerPin = 9; // pin 9 para salida de audio
  Serial.begin(9600);
  
  if (!SD.begin(SD_ChipSelectPin)) {
    Serial.println("SD fail");
    Serial.println("SD ok");
    oled.clear();
    oled.set1X();
    oled.println("SD card fail");
    return; // no hacer nada más si no hay tarjeta
  } else {
    Serial.println("SD ok");
    oled.clear();
    oled.println("SD card ok");
  }
  
  delay(1000);
  tmrpcm.play("m_wel.wav"); // el archivo de sonido de bienvenida se reproduce cada vez que Arduino se enciende o resetea
  tmrpcm.volume(1);
  oled.clear();
  oled.set2X();
  oled.println("");
  oled.println(" Welcome");
  
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  mlx.begin(); // iniciar termómetro infrarrojo
  delay(10000); // esperar audio de bienvenida
}

void loop() {
  //------------leyendo distancia
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  duration = pulseIn(echoPin, HIGH, 23529); // 23529us para timeout 4.0m
  distance = duration * 0.034 / 2;
  
  Serial.print("distance is ");
  Serial.println(distance);
  
  if ((distance < 10) && (distance > 0)) step1_judge++;
  else step1_judge = 0;
  
  if (step1_judge > 2) {
    step1_judge = 0;
    tmrpcm.play("m_wel.wav");
    delay(10000); // esperar voz de bienvenida completa
    
    temp = mlx.readObjectTempC() + 1.2; //---------------------lectura temperatura y mostrar en LCD
    // temp = 37.4; // para pruebas, comentar esta línea para lectura real
    
    oled.clear();
    oled.set2X();
    oled.println("");
    oled.print(" ");
    oled.print(temp, 1);
    oled.println("dgC");
    
    tmrpcm.play("m_now.wav");
    delay(1380);
    
    if (temp < 20) {
      tmrpcm.play("m_b20.wav"); // habla "debajo de 20°C"
      delay(1700);
      tmrpcm.play("m_nman.wav"); // habla "no eres humano"
      delay(2270);
    } else {
      if (temp > 50) {
        tmrpcm.play("m_over50.wav"); // habla "sobre 50°C"
        delay(1740);
        tmrpcm.play("m_nman.wav"); // habla "no eres humano"
        delay(2270);
      } else {
        speak_out(temp); // habla temperatura (si está entre 20 y 50°C)
        delay(1500);
        
        if ((temp > 36) && (temp < 37)) {
          tmrpcm.play("m_normal.wav"); // habla "temperatura normal, mantente sano" si es 36-37°C
          delay(3268);
        }
        if (temp > 37) {
          tmrpcm.play("m_fever.wav"); // habla "tienes fiebre"
          delay(2728);
        }
      }
    }
  }
  delay(300);
}

void speak_out(double temperature_result) {
  // este subprograma hablará la temperatura
  temperature_result = temperature_result * 10;
  temperature_result = round(temperature_result);
  int temp0 = temperature_result;
  int temp1 = temp0 / 10; // valor temperatura, dígito xy (en xy.z °C)
  int temp2 = temp1 % 10; // valor temperatura, dígito y (en xy.z °C)
  int temp3 = temp0 % 10; // valor temperatura, dígito z (en xy.z °C)
  
  if (temp1 < 20) {
    tmrpcm.play("m_below20.wav"); // debajo de 20°C
    delay(1631);
  }
  if (temp1 > 50) {
    tmrpcm.play("m_over50.wav"); // mayor 50°C
    delay(1747);
  }
  if ((temp1 >= 20) && (temp1 <= 29)) {
    tmrpcm.play("m_twenty.wav"); // veinte
    delay(600);
  }
  if ((temp1 >= 30) && (temp1 <= 39)) {
    tmrpcm.play("m_thirty.wav"); // treinta
    delay(500);
  }
  if ((temp1 >= 40) && (temp1 <= 49)) {
    tmrpcm.play("m_fourty.wav"); // cuarenta
    delay(691);
  }
  if (temp2 != 0) speak_num(temp2); // dígito y
  
  if ((temp1 >= 20) && (temp1 <= 50)) {
    tmrpcm.play("m_point.wav"); // punto
    delay(319);
    speak_num(temp3); // dígito z
  }
  
  tmrpcm.play("m_dgc.wav"); // grados C
  delay(853);
  
  Serial.println(temp0);
  Serial.println(temp1);
  Serial.println(temp2);
  Serial.println(temp3);
}

void speak_num(int number) {
  // este subprograma será llamado en "speak_out()"
  if (number == 1) { tmrpcm.play("m_one.wav"); delay(453); }
  if (number == 2) { tmrpcm.play("m_two.wav"); delay(499); }
  if (number == 3) { tmrpcm.play("m_three.wav"); delay(406); }
  if (number == 4) { tmrpcm.play("m_four.wav"); delay(401); }
  if (number == 5) { tmrpcm.play("m_five.wav"); delay(354); }
  if (number == 6) { tmrpcm.play("m_six.wav"); delay(401); }
  if (number == 7) { tmrpcm.play("m_seven.wav"); delay(633); }
  if (number == 8) { tmrpcm.play("m_eight.wav"); delay(360); }
  if (number == 9) { tmrpcm.play("m_nine.wav"); delay(580); }
  if (number == 0) { tmrpcm.play("m_zero.wav"); delay(610); }
}

Esquemáticos

Medición Automática de Temperatura con Alertas de Voz

Proceso de manufactura

  1. Sistema de control de acceso integrado con QR, RFID y verificación de temperatura
  2. Medición de temperatura en Raspberry Pi con sensores 1-Wire Maxim y puente I2C DS2482
  3. Construya un sensor de temperatura remoto con Raspberry Pi y Python – Guía paso a paso
  4. Monitorización fluida de temperatura y humedad en Raspberry Pi con EzTemp
  5. Control de temperatura casero para cerveza: monitorizar y regular con Arduino
  6. Medición y registro preciso con termopar para laboratorio y experimentos científicos
  7. Construya un Sistema de Monitorización de Temperatura y Luz Multi‑Sensor con Raspberry Pi y DS18B20
  8. Registrador de Temperatura y Humedad con Arduino, DHT11 y Ethernet Shield
  9. Herramientas de medición: tipos, usos y mejores prácticas
  10. Cómo las Transmisiones Manual y Automática Transfieren Potencia: Visión General Clara
  11. Monitorización precisa de temperatura dentro de estructuras compuestas y líneas de unión adhesivas