InicioTarjetas de DesarrolloArduinoTransforma tu LCD 16x2 en un Termómetro: Guía de Visualización de Temperatura

Transforma tu LCD 16×2 en un Termómetro: Guía de Visualización de Temperatura

A continuación te presentamos como trabajar con el Sensor de Temperatura Digital Modulo KY-001 con un Arduino UNO y recibir la lectura del sensor en el monitor serial de IDE Arduino y un display LCD 16X2.

Esto es funcional cuando se requiere un control de la temperatura en alguna habitación, carro, horno o sistema que te nos avise de cierta temperatura

Introducción

El Sensor de Temperatura Digital Modulo KY-001 posee el IC DS18B20 , gracias a ello no nos preocuparemos en la conversión de datos analógicos a digitales , por lo tanto recibiremos la información de temperatura sin ningún problema; en donde tendremos que tener cuidado, es recordar que el rango de temperatura al cual trabaja nuestro dispositivo es de -55 °C a 125 °C.

Material

Para realizar nuestro proyecto necesitaremos:

Diagrama de conexión

Requerimientos previos

Necesitaremos descargar las siguientes librerías en el IDE Arduino:

Si tienes dudas de la descarga e instalación checa el siguiente clip:

Código

Realizaremos el siguiente código que nos ayudara a tomar las primeras lecturas del Modulo KY-001, esto lo visualizaremos en el Monitor Serial del IDE Arduino.

                                                                           
                                                                      //Incluimos las librerías con las que estaremos trabajando
#include   <OneWire.h>                                 //Librería para uso del Bus OneWire del DS
#include   <DallasTemperature.h>               //Librería que nos facilitará la lectura de la temperatura (análogo a digital)

#define ONE_WIRE_BUS 10                             // Definimos cual será el bus de entrada de datos, del sensor al Arduino-Pin 10

OneWire oneWire(ONE_WIRE_BUS);                //Creamos una conexión oneWire para poder comunicarnos con este protocolo
DallasTemperature celsius(&oneWire);           //Anunciamos a nuestro sensor que se realizara la comunicación usando el protocolo
                                                                      //oneWire y la variable "celsius" llevara la comunicación
float temp;                                                      //variable que guardara datos leídos desde "celsius"
  
void setup() {
  celsius.begin();                                                //Iniciamos la comunicacion del oneWire con "celsius"
  Serial.begin(9600);                                         //Iniciamos la comunicación serial a 9600 baud
  }

void loop()
{
  Serial.print("Tomando Temperatura...");         //impresión en el Monitor Serial para avisar al usuario que se esta tomando la temperatura 
  celsius.requestTemperatures();                          //instrucción para poder obtener datos del sensor en variable "celsius", DallasTemp
  Serial.println("..Esperando..");                          //impresión en el Monitor Serial para avisar al usuario de la espera de datos
  delay(3000);                                                    //se da 3 segundos para poder imprimir el dato recibido del sensor
  Serial.print("La Temperatura del sensor es: ");    //impresión en el Monitor Serial para avisar al usuario de la temperatura obtenida
  Serial.print(celsius.getTempCByIndex(0));         //impresión en el Monitor Serial de la temperatura 
  Serial.println("°C ");                                        //en Grados centígrados
  delay(1000);                                                   //se da 1 segundos para poder realizar una nueva medición  
 }

El código realizara varias lecturas en intervalos de 3 segundos, como se muestra a continuación:

Pero, ¿Qué pasa si estas los datos los quisiéramos observar en un Display? . A continuación te explicaremos que necesitaremos para poder observar las lecturas en un Display LCD 16X2.

Uso del Modulo KY-001 con un Display LCD 16X2

Ahora, las lecturas que recibimos en el Monitor Serial , las podremos ver desde una pantalla LCD de 16×2. El Display LCD tiene la siguiente configuración de pines, que tendremos que considerar en nuestra conexión con nuestros dispositivos:

Adicional tendremos un led que nos avisara cuando el sensor tenga lecturas arriba de 30°C. Para esto requeriremos armar el siguiente circuito:

Código en Arduino y el Modulo KY-001 usando la LCD

A continuación se muestra el siguiente código en donde usaremos el código anterior, solamente añadiendo algunas líneas para agregar la librería para el uso de LCD 16X2, led y la condición para lecturas arriba de 30°C.

                                             //Incluimos las librerías con las que vamos a trabajar 
#include <LiquidCrystal.h>                           //Librería para uso del LCD 16X2
#include <OneWire.h>                                 //Librería para uso del Bus OneWire del DS
#include <DallasTemperature.h>                //Librería que nos facilitará la lectura de la temperatura (análogo a digital)

LiquidCrystal lcd(1, 2, 4, 5, 6, 7);                 //Definimos los pines que están conectados de LCD a Arduino en el siguiente rs, en, d4,  d5,d6, d7 rs: selector de registro, control de LCD,en: habilita la pantalla LCD, d4 a d7: 4 pines menos significativos (LSB)

#define ONE_WIRE_BUS 10                             // Definimos cual será el bus de entrada de datos, del sensor al Arduino-Pin 10
OneWire oneWire(ONE_WIRE_BUS);                //Creamos una conexión oneWire para poder comunicarnos con este protocolo
DallasTemperature celsius(&oneWire);          //Anunciamos a nuestro sensor que se realizara la comunicación usando el protocolo
                                                                     //oneWire y la variable "celsius" llevara la comunicación
float temp;                                                //Declaramos una variable temp, que recibirá los valores tipo números con decimales
int led = 12;                                            //Declaramos una variable llamada "led", el cual esta conectado al pin 12 del Arduino

void setup() {
  
  celsius.begin();                            //Iniciamos la comunicación del oneWire con "celsius"
  lcd.begin(16, 2);                           //Iniciamos la comunicación del con el LCD , señalando que se trata de 16x2 segmentos
  lcd.setCursor (2, 0);                       // Movemos el cursor de nuestro LCD en (2,0) (columna, fila)
  lcd.print("Temperatura");                   //Imprimimos en la pantalla LCD "Temperatura"
  lcd.setCursor (4, 1);                      // Movemos el cursor de nuestro LCD en (4,1) (columna, fila)
  lcd.print("KY-001");                       //Imprimimos en la pantalla LCD "KY-036"
  delay(3000);                              // Dejamos 3 segundos para que el usuario lo pueda visualizar
  lcd.clear();                              //Limpiamos la pantalla LCD para un nuevo mensaje
  pinMode (led, OUTPUT);                    // Declaramos que led , será una salida digital

}

void loop() {

  celsius.requestTemperatures();           //instrucción para poder obtener datos del sensor en variable "celsius", DallasTemp  
  temp = (celsius.getTempCByIndex(0));     //el dato de la temperatura proveniente de "celsius" lo declaramos a nuestra variable "temp" 

  lcd.setCursor(0, 0);                     // Colocamos el cursor de nuestra pantalla LCD en la posición (0,0) 
  lcd.print("Temperatura de:");            //Imprimimos en la pantalla LCD "Temperatura de:"
  lcd.setCursor(0, 1);                    // Colocamos el cursor de nuestra pantalla LCD en la posición (0,1) (columna, fila)
  lcd.print(temp);                        //Imprimimos en la pantalla LCD el valor de "temp"  
  lcd.print("C");                        // en grados centígrados
  delay(3000);                           // daremos 3 segundos antes de una nueva medición 

  if (temp >= 30) {                      //realizaremos una función de condición en caso de que la temperatura sea mayor a 30°C
    digitalWrite (led, HIGH);            //en caso de que sea afirmativo , encenderá el led
  }
  else                                     //De lo contrario , no se prendera el led del pin 10
  {
    digitalWrite (led, LOW);
  }
 }                                                                           
                                                                   

La temperatura que estaremos censando es la de una persona, que al tocar el sensor y eventualmente al transferir calor va aumentando el valor de la temperatura

Conclusiones

En esta práctica, hemos logrado integrar de manera efectiva un sensor de temperatura con una pantalla LCD de 16×2 para visualizar las lecturas de temperatura en tiempo real. A través del proceso, hemos aprendido a conectar el sensor al Arduino UNO y a programar la visualización en el LCD, permitiéndonos observar cómo los datos del sensor se reflejan en la pantalla de forma clara y precisa.

La experiencia nos ha demostrado la importancia de una correcta calibración del sensor y la configuración adecuada del display para asegurar lecturas precisas y legibles. Además, hemos adquirido habilidades prácticas en la manipulación de datos y en la comunicación entre componentes electrónicos, que son fundamentales para el desarrollo de proyectos más complejos.

Esta práctica no solo refuerza nuestros conocimientos en la programación y conexión de sensores y displays, sino que también abre puertas para futuras aplicaciones en sistemas de monitoreo y control ambiental. La capacidad de visualizar datos en tiempo real de manera intuitiva es crucial en muchos sistemas electrónicos, y esta experiencia nos proporciona una base sólida para explorar y desarrollar proyectos avanzados en el campo de la electrónica y la automatización.

TUTORIALES RELACIONADOS