S?guenos en Facebook
S?guenos en Twitter
S?guenos en Instagram
Crazy Design
Alicante
ROBÓTICA EDUCATIVA      •      IMPRESIÓN 3D      •      DISEÑO      •      WEB      •      TIENDA DE ELECTRÓNICA
Mi Carrito
    Total: 0€
    LEER TEMPERATURA Y HUMEDAD CON SENSOR DHT11
    ¿Quieres comprar las piezas de este tutorial para experimentar en casa? Pulsando en lo botones de abajo se añadiran los productos del tutorial automaticamente a tu carrito. Pulsa sobre el botón Añadir Todo si quieres que se añadan todas las piezas necesarias para este tutorial incluido protoboard, cables dupont y placa (Arduino, Raspberry Pi, MicroBit, ESP...) o pulsa sobre Añadir solo sensores para añadir todas las piezas menos las protoboard, cables dupont y placa (Arduino, Raspberry Pi, MicroBit, ESP...).

    En este tutorial vamos a aprender a obtener lecturas de un sensor de temperatura y humedad DHT11 de manera fácil con nuestro arduino. Si quieres aprender cómo funciona internamente el sensor DHT11 te recomendamos que visites el tutorial de ¿Qué es un sensor DHT11?.

    Para poder realizar este proyecto vamos a necesitar los siguientes materiales:


    Este sensor podemos encontrarlo fácilmente en dos tipos de configuraciones.

    La primera de ellas es la básica: solo el sensor, que se compone de 4 patas (al cual tendremos que instalarle una resistencia para su uso).

    La segunda opción: montada en una placa lista para usar con el microcontrolador.


    En los siguientes esquemas os mostramos gráficamente cómo conectarlo.

    Con Arduino Uno


    Con Arduino Mega


    Con Arduino Nano


    Ya lo tenemos todo listo para pasar a la programación. En este caso vamos a programar nuestra placa para que vaya realizando lecturas y nos las muestre por consola serial. En este caso, para obtener la lectura del sensor vamos a realizar con la librería DHT Sensor library, la cual la podremos descargar del siguiente enlace. Luego la instalaremos dentro del Arduino IDE.


    Para ello vamos a explicar las funciones que vamos a usar dentro de nuestro Arduino IDE:

    SETUP()

    En nuestro software Arduino, la función setup es una función que solo se ejecuta en el encendido de nuestro Arduino, por lo que aquí es donde pondremos la configuración de los pines (pinMode), los iniciadores (begin) que puede tener cualquier librería que hayamos añadido o cualquier configuración del aparato o variables que queremos que se realicen durante el encendido.

    #INCLUDE

    Instrucción que utilizamos para añadir una libreria o header externo que necesitemos para programar nuestra placa. En este tutorial lo usamos para llamar a la librería DHT, sensor que hemos instalado con anterioridad.

    LOOP()

    En nuestro software Arduino, la función loop es una función que se ejecuta en bucle (continuamente) mientras nuestro arduino está en marcha de manera secuencial, es decir, en orden de líneas que existen dentro del loop. En ella pondremos todas las funciones y chequeos que va a realizar durante su ciclo normal de trabajo: lectura de sensores, encendido y apagado de leds, cálculos que necesitemos realizar con la captura de los sensores,...

    DHT()

    Instrucción que utilizaremos para añadir un sensor DHT a nuestro programa arduino. Esta instrucción llama a la librería que hemos instalado. Su estructura es la siguiente: DHT nombre_que_le_pondremos_al_sensor(pin_data_del_sensor, tipo_de_sensor_dht), donde en nombre_que_le_pondremos_al_sensor escribiremos el nombre con el que identificaremos ese sensor, en pin_data_del_sensor pondremos el pin arduino al que está conectado el pin S del sensor y en tipo_de_sensor_dht pondremos el modelo de sensor que hemos instalado, en este caso DHT11.

    DELAY()

    El comando delay se utiliza para añadir un tiempo de espera en el programa. Esta función tiene la siguiente estructura: delay(tiempo de espera en milisegundos), donde en tiempo de espera en milisegundos pondremos los milisegundos que queremos que espere el programa para continuar.

    READHUMIDITY()

    Esta es una función de la libreria DHT que nos devuelve la lectura de la humedad del sensor en % de humedad relativa. Su estructura es nombre_que_le_pondremos_al_sensor_que_queremos_leer.readHumidity().


    READTEMPERATURE()

    Esta es una función de la libreria DHT que nos devuelve la lectura de la temperatura del sensor en ºC. Su estructura es nombre_que_le_pondremos_al_sensor_que_queremos_leer.readTemperature().

    SERIAL.BEGIN()

    Esta instrucción se utiliza dentro del Setup() para iniciar la comunicación serial en nuestro arduino. Su estructura es Serial.begin(baudrate de comunicación), introduciendo en el baudrate de comunicación la velocidad que queremos de la conexión serie (siendo generalmente por defecto 9600).

    SERIAL.PRINT()

    Esta instrucción se utiliza para escribir en la consola serial un texto o dato. Su estructura es Serial.print(texto o dato a imprimir), donde en texto o dato a imprimir introduciremos el nombre de la variable que queremos que muestre o un texto (debería ir entrecomillado "").

    SERIAL.PRINTLN()

    Lo mismo que el Serial.print() pero inserta un salto de línea tras escribir el texto. Su estructura Serial.println(texto o dato a imprimir), donde en texto o dato a imprimir introduciremos el nombre de la variable que queremos que muestre o un texto (debería ir entrecomillado "").

    ISNAN()

    Esta instrucción se utiliza para saber si el valor recibido no es un número NaN (not a number). Nos devuelve un true, si es valor que ponemos entre parentesis, no es un número y false, si es un número. Su estructura es isnan(variable_que_queremos_chequear).


    Una vez visto un resumen del uso de los comandos, vamos a pasar a programar en nuestro Arduino IDE con el siguiente código:


    1. Primero incluimos la librería en nuestro proyecto arduino al principio del programa.
    2. #include "DHT.h"
    3. Definimos las variables del Modelo de Sensor y el pin al que está conectado.
    4. #define DHTTYPE DHT11
      const int DHTPin = 5;

    5. Declaramos nuestro sensor
    6. DHT dht(DHTPin, DHTTYPE);

    7. En Setup inicializamos nuestra consola serial para poder visualizar las lecturas en nuestro
      PC e inicializamos nuestro sensor de temperatura
    8. void setup() {
        Serial.begin(9600);
        Serial.println("DHTxx test!");
        dht.begin();
      }

    9. Una vez hecho esto, ya pasamos al Loop y creamos un programa que espere 2000
      milisegundos y que nos lea la humedad y la temperatura y las guarde en una variable.
    10. void loop() {
        delay(2000);
        float h = dht.readHumidity();
        float t = dht.readTemperature();

    11. Ponemos una comprobación para ver si recibimos valores o no es capaz de tomar lecturas.
    12. if (isnan(h) || isnan(t)) {
        Serial.println("Failed to read from DHT sensor!");  return;
      }

    13. Y por último hacemos que nos escriba por serial los valores leídos por el sensor.
    14. Serial.print("Humidity: ");
      Serial.print(h);
      Serial.print(" %	");
      Serial.print("Temperature: ");
      Serial.print(t);
      Serial.print(" *C ");
      }



    Código completo


    #include 'DHT.h'#define DHTTYPE DHT11const int DHTPin = 5;DHT dht(DHTPin, DHTTYPE);void setup() {  Serial.begin(9600);  Serial.println("DHTxx test!");  dht.begin();}void loop() {  delay(2000);  float h = dht.readHumidity();  float t = dht.readTemperature();  if (isnan(h) || isnan(t)) {    Serial.println("Failed to read from DHT sensor!");    return;  }  Serial.print("Humidity: ");  Serial.print(h);  Serial.print(" %	");  Serial.print("Temperature: ");  Serial.print(t);  Serial.print(" *C ");}