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