lunes, octubre 25, 2021
HomeTarjetas 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.

ARTÍCULOS RELACIONADOS

LEAVE A REPLY

Please enter your comment!
Please enter your name here

APRENDE MÁS

Alarma de Incendios con Módulo KY-026

0
En este tutorial aprenderemos a realizar una alarma para incendio por medio del Módulo KY-026 Sensor de Flama, este proyecto es útil para la...