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
- El maestro como los esclavos transmiten información de forma bidireccional pero una sola dirección por ocasión.
- Cuenta con oscilador interno, que se sincronizan en flanco de bajada.
- 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:
- Arduino UNO
- Sensor de Temperatura KY-001
- Cables Dupont
- Display Pantalla Oled Blanco 128×32 0.91 I2C SSD1306
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?