Estación de Temperatura con Arduino
Autores (Grupo 4)
- Marta Muñoz Alonso (Grado en Ingeniería Informática)
- Alexandre Ortiz Pérez (Grado en Ingeniería Informática)
- Juan Rodríguez Alonso (Grado en Ingeniería Informática)
Introducción
Tras haber buscado diferentes opciones para nuestro Proyecto Final, nos llamó la atención el hecho de poder realizar un Termómetro Infrarrojos controlado a través de nuestra placa Arduino.
Pese a que en un principio pensamos en diseñarlo como los termómetros infrarrojos que se utilizan habitualmente (debido a la situación actual con la COVID-19), finalmente decidimos diseñarlo en forma de caja.
Por lo tanto, nuestro proyecto está diseñado con el fin de ser utilizado como una estación de temperatura, de tal forma que cualquier persona pueda medir su temperatura corporal de forma más cómoda y segura.
Materiales Utilizados
En esta sección se incluyen todos los materiales utilizados para el desarrollo de nuestro proyecto (incluyendo los precios de cada uno):
Material | Precio |
Placa Arduino Uno | Aportado por la URJC |
Placa Protoboard | Aportado por la URJC |
Buzzer o Zumbador | 0,00 € |
Dos Diodos LED (Rojo y Verde) | Aportados por la URJC |
Módulo LCD1602 I2C | Aportado por la URJC |
Sensor MLX90614 | 11,99 € |
Pila Cegasa 6LR61 Super Alcalina (9 V) | 3,99 € |
Interruptor Q11 y Adaptador de Corriente | 0,00 € |
Coste Total | 15,98 € |
Diseño y Montaje del Circuito
Como bien hemos mencionado en la Introducción, nuestro principal propósito de cara al diseño era hacerlo en forma de caja. Por ello, escogimos una caja de zapatos para realizar nuestro Proyecto dentro de la misma.
Poco a poco, y tras las diferentes pruebas de código que fuimos haciendo de los componentes mencionados con anterioridad, el diseño de nuestra estación de temperatura quedó de la siguiente manera (visto frontal y lateralmente):
Con respecto al montaje del circuito que hace funcionar nuestro proyecto, mostramos en primer lugar una vista general de dicho montaje:
Tras haber visto cómo están montados todos los componentes de nuestro proyecto dentro de la caja, vamos a ir desgranando (parte por parte) cómo están conectados dichos componentes: empezando con el montaje de los Diodos LED y el Buzzer, seguido por el montaje del módulo LCD, y por último, el montaje del sensor MLX90614 (todos ellos sobre plano).
Código Fuente del Proyecto
En esta parte del post se muestra el código fuente que hace que nuestro proyecto funcione de forma correcta, en el cual se indican todos los casos de uso a los que ha de reaccionar nuestro proyecto (dependiendo de la temperatura que nuestro sensor MLX90614 reciba):
/* ============================================================================================= Nombre del proyecto : termometro.ino Autores : Marta Muñoz Alonso, Alexandre Ortiz Pérez y Juan Rodríguez Alonso ============================================================================================= */ // Librerías utilizadas #include <Wire.h> #include <Adafruit_MLX90614.h> #include <LiquidCrystal_I2C.h> // Creamos el caracter 'º' para el módulo LCD #define Circulo 0 byte caracterGrados[] = { B01110, B01010, B01110, B00000, B00000, B00000, B00000, B00000 }; // Creamos el objeto del tipo del sensor de temperatura (MLX90614) Adafruit_MLX90614 sensor = Adafruit_MLX90614(); // Ajustamos la dirección del LCD a 0x27 para una pantalla de 16 caracteres y 2 líneas LiquidCrystal_I2C lcd(0x27, 16, 2); // Definimos los pines a los que se conectan los LEDs y el Buzzer int BUZZER = 7; // El Buzzer se encuentra en el pin digital 7 int LED_ROJO = 10; // El LED Rojo se encuentra en el pin digital 10 int LED_VERDE = 8; // El LED Verde se encuentra en el pin digital 8 // Función que nos permite establecer la Configuración Predeterminada de la Placa void setup() { // Inicializamos el LCD y el sensor MLX90614 lcd.init(); sensor.begin(); // Establecemos los pines declarados anteriormente como Pines de Salida pinMode(BUZZER, OUTPUT); pinMode(LED_ROJO, OUTPUT); pinMode(LED_VERDE, OUTPUT); // Creamos el caracter 'º' para nuestro módulo LCD lcd.createChar(Circulo, caracterGrados); // Encendemos la retroiluminación de nuestra pantalla LCD lcd.backlight(); } // Función para Encender la pantalla y mostrar la información void encenderPantalla() { lcd.setCursor(0, 0); lcd.print(" - Termometro -"); delay(800); lcd.setCursor(0, 1); lcd.print(" Midiendo..."); delay(3000); } // Función para una Temperatura Normal void temperaturaNormal() { lcd.setCursor(0, 1); lcd.print("Cuerpo: "); lcd.print(sensor.readObjectTempC()); // Mostramos la Temperatura lcd.write(Circulo); lcd.print("C"); digitalWrite(LED_VERDE, HIGH); // Encendemos el LED Verde tone(BUZZER, 523, 500); // Reproducimos la nota 'DO Agudo' durante 500 ms delay(5000); // Dejamos 5 segundos para poder ver nuestra Temperatura digitalWrite(LED_VERDE, LOW); // Apagamos el LED Verde } // Función para una Temperatura Fuera de Rango void temperaturaFueraDeRango() { lcd.setCursor(0, 1); lcd.print("Cuerpo: "); lcd.print(sensor.readObjectTempC()); // Mostramos la Temperatura lcd.write(Circulo); lcd.print("C"); digitalWrite(LED_ROJO, HIGH); // Encendemos el LED Rojo tone(BUZZER, 494, 2000); // Reproducimos la nota 'SI' durante 2 segundos delay(5000); // Dejamos 5 segundos para poder ver nuestra Temperatura digitalWrite(LED_ROJO, LOW); // Apagamos el LED Rojo } // Función que realiza las acciones de la Placa en bucle void loop() { encenderPantalla(); // Encendemos nuestro módulo LCD para poder mostrar la Información if ((sensor.readObjectTempC() < 33) || (sensor.readObjectTempC() > 37.2)) { // Temperatura Rara temperaturaFueraDeRango(); } else { // Temperatura Normal temperaturaNormal(); } lcd.clear(); // Limpiamos el contenido del módulo LCD }
Problemas Encontrados (con sus Soluciones)
En este caso, el único problema que hemos tenido a lo largo del todo el desarrollo de nuestro proyecto ha sido el Buzzer o Zumbador, puesto que nos costó hacer que reprodujera los sonidos en función de los rangos de temperatura establecidos.
Dicho problema se producía debido a que no teníamos actualizadas las librerías que estábamos utilizando y, por lo tanto, no se cargaba bien el programa a nuestra placa. Tras haberlas actualizado, todo funcionó sin problemas.
Material Extra
En esta parte final del post, adjuntamos una memoria explicativa con información más detallada de los pasos seguidos para elaborar este proyecto:
Por último, adjuntamos un breve vídeo como prueba de funcionamiento de nuestro proyecto con los dos casos de prueba fundamentales: en primer lugar, probamos el caso de una temperatura fuera de rango (no ponemos nada delante y coge la temperatura ambiente) ; tras ello, ponemos la mano delante del sensor MLX90614 para comprobar el caso de una temperatura normal, es decir, una temperatura adecuada con respecto a la temperatura corporal habitual.