miércoles, 20 de marzo de 2019

NORBA-STATIONS: sensor de temperatura y humedad DHT11 y pantalla LCD (Bachillerato)


En el proyecto NorbaSky debemos trabajar con diferentes tipos de sensores, con los cuales mediremos temperatura, humedad, movimiento, luz… Para aprender a utilizar este tipo de sensores hace un tiempo empezamos a trabajar con la placa programable Arduino.
Algunos de los alumnos ya conocían Arduino y habían hecho alguna práctica en cursos pasados pero otros no habían oído hablar de ella. Por esta razón, empezamos programando un simple led parpadeando, así conseguimos que algunos refrescasen la memoria y otros se iniciasen en la programación de esta conocida placa.
Debido a la rápida curva de aprendizaje que tiene Arduino, muy pronto todos estábamos listos para programar algo más complejo que un simple led parpadeante.
Primer programa: Led parpadeante
Botón que enciende y apaga un led
Diferentes leds encendiéndose y apagándose
Después de unos días de trabajo, llegamos a programar un sensor de temperatura y humedad DHT11 y una pantalla LCD en la cual se escriben los datos que lee el sensor, es decir, la temperatura y la humedad del lugar en el que se encuentra el sensor.
El sensor DHT11 es simple de programar, pues solo tiene 3 salidas (una a tierra (GND), otra a 5 V y otra a un pin digital de la placa Arduino).
Su circuito es el siguiente:
Circuito con sensor DHT11
Y el programa para su funcionamiento básico:

#include <DHT.h>

int SENSOR = 2;
float temp,humedad; 


DHT dht (SENSOR, DHT11);
 

void setup(){
    Serial.begin(9600);
    dht.begin(); 

    } 


void loop(){
    humedad = dht.readHumidity();
    temp = dht.readTemperature();
    Serial.println("Temperatura ");
    Serial.println(temp);
    Serial.println("C");
    Serial.println("Humedad: ");
    Serial.println(humedad);
    Serial.println("%");
    delay(15000); 

    }

Código de gestión del sensor de temperatura

Alumnos trabajando en el circuito
Usar una pantalla LCD 16×2 con Arduino es algo complicado por la cantidad de lineas de conexión que se requieren. Además se necesita un potenciómetro para ajustar el contraste. Primero colocamos la conexión de la alimentación, hay que fijarnos en la polaridad para evitar dañar la pantalla. En este caso utilizaremos los pines VSS(-), VDD(+), A(+) y K(-).
Después conectamos un potenciómetro de 10K que permite el ajuste del contraste. Los extremos del potenciómetro van al positivo y negativo de la alimentación, mientras que el pin central va al pin VO del módulo LCD.
Lo siguiente fue conectar los pines de datos D4, D5, D6, D7. Utilizaremos solamente estos 4 pines.
Finalmente hicimos la conexión de los pines de control RS y E, que irán conectados a otros 2 pintes digitales de Arduino.
Circuito:
Esquema del circuito de control del LCD 16x2 con Arduino
El programa para que esto funciones es el siguiente:

/* Usamos la librería LiquidCrystal.h, para el manejo de las pantallas 
 * LCD. El circuito tiene los siguientes pines: * RS ->pin 12
 * Enable (E) --> pin 11
 * D4 ->pin 5
 * D5 ->pin 4
 * D6 -> pin 3
 * D7 -> pin 2
 * R/W-> GND
 * Resistencia10K
 * Corriente: +5V y GND
 * VO a un pin PWM (pin 3)
 */



// incluimos la librería


#include <LiquidCrystal.h>


// asociamos los pines de la pantalla LCD con el número 

// del pin arduino al que está conectado
 
int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);


void setup() {
    //configurar el número de columnas y filas de la pantalla LCD
    lcd.begin(16, 2);
    // Imprimir un mensaje en la pantalla

    lcd.print("¡Hola, Norba!");
    delay(1000);
    }


void loop() {
    // desplazarse 13 posiciones (longitud de la cadena)

    // hacia la izquierda para “meter el texto” hacia 
    // la izquierda y que desaparezca
    for (int i = 0; i < 13; i++) {
        // desplaza 1 posicion hacia la izquierda        

        lcd.scrollDisplayLeft();
        delay(150);
        }
    }
Código de gestión del display LCD

Finalmente, conseguimos nuestro objetivo, y pudimos ver en la pantalla la medición hecha por el sensor DHT11
Circuito de mide temperatura y humerad con sensor DTH11 y muestra resultados a través del  LCD 16x2

No hay comentarios: