InicioTarjetas de DesarrolloArduinoVisualización de datos del sensor Temperatura KY-001 en un display Oled SSD1306

Visualización de datos del sensor Temperatura KY-001 en un display Oled SSD1306

Te mostraremos como visualizar datos del Sensor de Temperatura KY-001 por medio del display Oled de 128×32 pixeles.

El Sensor de Temperatura Digital Modulo KY-001 posee el IC DS18B20 y trabaja con el protocolo de comuncación 1-Wire, que ayuda a la comunicación y procesamiento de datos analógicos a digitales , por lo tanto, podremos visualizar dentro del Monitor Serial los valores relacionados a la medición de temperatura ambiental. El rango de temperatura que detecta el KY-001 es un rango entre -55 °C a 125 °C.

Protocolo 1-Wire

Este protocolo utiliza un solo conductor (1-wire) para efectuar las comunicaciones y la transmisión de energía entre un dispositivo maestro y varios esclavos. Permitiendo una comunicación serial asíncrona entre el maestro y esclavos usando solo un pin de Entrada/Salida.

Características
  1. El maestro como los esclavos transmiten información de forma bidireccional pero una sola dirección por ocasión.
  2. Cuenta con oscilador interno, que se sincronizan en flanco de bajada.
  3. La lectura y escritura de datos es por medio de “Slot” y estos los genera el maestro.

Material y Diagrama de conexión

Para realizar nuestro proyecto necesitaremos:

Y realizaremos la conexión entre nuestros componentes:

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

Adicional necesitaremos descargar las siguientes librerías, ya que este sensor requiere del protocolo OneWire, para realizar las lecturas dentro del IDE Arduino:

La pantalla OLED, también requerirá librerías para poder realizar el despliegue de la información, las cuales son:

Ahora que ya contamos con el software y hardware para realizar nuestro proyecto, procederemos al desarrollo y carga del código.

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 lecturas del Modulo KY-001 y visualizaremos en n la pantalla OLED al mismo tiempo que dentro del 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   <Adafruit_GFX.h>
#include  <Adafruit_SSD1306.h>                /*Liberia para Oleds monocromáticos basados ​​en controladores SSD1306
                                             Se declara el pin de reset, este es requerido por el constructor de la librería SSD1306
                                              para definir el tipo de OLED y la comunicación I2C en los (pines SDA, SCL)*/
#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
#define OLED_RESET 13 
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"
Adafruit_SSD1306 display(OLED_RESET);         /*Se define una condición para saber si en la librería esta definida la altura de 32 de lo contrario
                                                no dejara compilar el código hasta que se cambie la altura correcta desde la librería*/
#if (SSD1306_LCDHEIGHT != 32)
#error("Altura incorrecta, cambie en la librería de Adafruit_SSD1306.h!");
#endif
  
void setup() {
  celsius.begin();                                            //Iniciamos la comunicación del oneWire con "celsius"
  Serial.begin(9600);                                         //Iniciamos la comunicación serial a 9600 baud
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);                //Se inicia la comunicación I2C en la direcion 0x3C para la pantalla oled 128x32
}

void loop()
{

  display.clearDisplay();              //Borra el buffer
  display.setTextSize(2);             //Establece el tamaño de fuente, admite tamaños de 1 a 8
  display.setTextColor(WHITE);       //Establece el color

  celsius.requestTemperatures();     //instrucción para poder obtener datos del sensor en variable "celsius", DallasTemp
  temp = (celsius.getTempCByIndex(0));
  
  //Se imprimen las variables en el display y puerto serial
  display.setCursor(0, 0);
  display.println("~~~~~~~~~~");
  display.setCursor(0, 5);              //Establecer las coordenadas para mostrar la posición del texto
  display.println("Temp:");
  display.setCursor(55, 10);
  display.println(temp);
  display.setCursor(115, 10);            //Establecer las coordenadas para mostrar la posición del texto
  display.println("C");
  display.setCursor(0, 27);
  display.println("~~~~~~~~~~");
  display.display();                      //Muestra el texto
  Serial.println("Temperatura: "); 
  Serial.println(temp);
  delay(2000);                            //Se espera 2 segundos para seguir leyendo datos
 }

Como podemos leer en el código, el valor de temperatura guardado en la variable temp es el que directamente imprimirá en el display OLED, tal como podemos visualizar en el siguiente video:

Como veras es muy practico realizar la visualización de información por medio de esta pantalla OLED, además que la conexión entre la tarjeta de desarrollo es muy fácil.

Si quisieras realizar la visualización de tu información en pantallas LCD , te recomendamos el tutorial:

Visualización de datos en un display LCD 16X2

Si tienes inquietudes sobre el uso de pantallas OLED SSD1306, el siguiente tutorial te puede ayudar mucho:

¿Cómo conectar el Display Oled 128×32 SSD1306 con Arduino Uno?

TUTORIALES RELACIONADOS