InicioTarjetas de DesarrolloArduinoVisualización de datos en un display LCD 16X2 del Sensor de...

Visualización de datos en un display LCD 16X2 del Sensor de Temperatura Digital Modulo KY-001

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

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.

Para realizar nuestro proyecto necesitaremos:

Adicional necesitaremos descargar las siguientes librerías en el IDE Arduino:

Instalación de librerías y conexión del Modulo KY-001 con Arduino UNO

Primero descargaremos e instalaremos las librerías, si tienes dudas de la descarga e instalación checa el siguiente clip:

Ahora continuaremos armando nuestro circuito , para poder visualizar los datos en nuestro Monitor Serial:

Código en Arduino IDE para el Sensor de Temperatura Digital Modulo KY-001

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, ¿ que 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

Listo, ahora ya puedes saber cual es la temperatura sin necesidad del monitor de tu computadora.

TUTORIALES RELACIONADOS