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:
- Arduino UNO
- Sensor de Temperatura KY-001
- Cables Dupont hembra-macho
- Led 5 mm
- Display LCD 16X2
- Potenciómetro de 10K, 3 pines
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.