TEORÍA: Monitor, sensores (DHT11) y las «librerías» (libraries)
En esta práctica vamos a aprender a usar el monitor en serie, un sensor de humedad/temperatura y las librerías.
Sensores
Un sensor es un objeto capaz de detectar magnitudes físicas o químicas, llamadas variables de instrumentación, y transformarlas en variables eléctricas. Las variables de instrumentación pueden ser por ejemplo: intensidad lumínica, temperatura, distancia, aceleración, inclinación, presión, desplazamiento, fuerza, torsión, humedad, movimiento, pH, etc. Una magnitud eléctrica puede ser una resistencia eléctrica (como en una RTD), una capacidad eléctrica (como en un sensor de humedad), una tensión eléctrica (como en un termopar), una corriente eléctrica (como en un fototransistor), etc. En esta práctica usaremos el DHT11 que dispone de un sensor capacitivo para medir la humedad y de un termistor, un tipo de semiconductor.
Monitor «SERIAL»: un puerto en serie
Un puerto serie envía la información mediante una secuencia de bits. Para ello se necesitan al menos dos conectores para realizar la comunicación de datos, RX (recepción) y TX (transmisión). Es la manera que tiene el arduino para comunicarse con ordenador.
Cuando la placa transmite datos veras que se encienden y apagan los ledes TX y RX. Los pines digitales 0 y 1 están vinculados con estos ledes, por eso verás que por ahora no los estamos usando.
Importar librerías
Las librerías son como pequeños programas que podemos incorporar al programa que subimos al arduino, para ello se usa el comando #include con la librería a añadir. Antes debemos o tener la librería instalada en nuestro ordenador (en el programa IDE de arduino) o importarla antes de subir el programa.
Luego se navega hasta el archivo zip y se abre.
AQUÍ ESTÁ LA LIBRERÍA DEL DHT:
EJERCICIO 1 (7PTS)
Contruye el siguiente circuito:
Montar el led RGB es opcional para esta práctica.
Monta el siguiente código :
#include <SimpleDHT.h> //Incluye la librería que nos va a ayudar a manejar el sensor int pinDHT11 = 2; //define el pin 2 como el pin donde tenemos conectado el sensor SimpleDHT11 dht11; //le especifica a la libreria que sensor estamos usando. void setup() { Serial.begin(9600); // abre un puerto serie con la frecuencia estándar (9600 baudios) } void loop() { Serial.println("================================="); // imprime en el monitor lo que está entre las comillas (vale para separar datos) desde el comienzo de una línea (Serial.println) Serial.println("Sensor de temperatura y humedad DHT11"); // imprime en el monitor lo que está entre las comillas desde el comienzo de una línea (Serial.println) // lee los datos byte temperature = 0; byte humidity = 0; byte data[40] = {0}; if (dht11.read(pinDHT11, &temperature, &humidity, data)) { Serial.print("La lectura del DHT11 ha fallado"); // imprime en el monitor un mensaje de error si los datos obtenidos no son correctos return; } Serial.print("Datos RAW Bits: ");// imprime en el monitor los datos recibidos en binario for (int i = 0; i < 40; i++) { Serial.print((int)data[i]); if (i > 0 && ((i + 1) % 4) == 0) { Serial.print(" "); } } Serial.println(""); // imprime en el monitor lo que está entre las comillas, //nada en este caso, pero se lleva el cursor al comienzo de una línea (Serial.println) Serial.print("Datos procesados: "); // ahora va a imprimir en el monitor pero sin empezar una línea, va a hacerlo desde donde se quedó el cursor (Serial.print) Serial.print((int)temperature); Serial.print(" *C, "); // ahora va a imprimir el valor medido en centígrados (Serial.print) y luego “*C” (unidades) para luego volver a una línea nueva (Serial.println) Serial.print((int)humidity); Serial.println(" %"); // ahora va a imprimir el valor medido de humedad relativa (Serial.print) y luego “%” (unidades) para luego volver a una línea nueva (Serial.println)s //el DHT11 puede funcionar una vez por segundo (1 hercio) por lo que le hacemos esperar 1000ms delay(1000); }
ANTES DE SUBIRLO IMPORTA LA LIBRERÍA DEL DHT (SimpeDHT)
AQUÍ ESTÁ LA LIBRERÍA DEL DHT:
MONITOREAR LA TEMPERATURA
Conecta el Arduino al USB y abre el Serial clicando en el icono.
Compueba que la Temperatura y la humedad responden a los cambios que puedan recibir.
Más teoría sobre Serials y comandos relacionados en http://playground.arduino.cc/ArduinoNotebookTraduccion/Serial
EXTRAS (3PTS)
1) Modifica el código para que la lectura del sensor sea cada tres segundos y aparezcan vuestros nombres en el monitor en serie.
2) Modifica el código para que la lectura del sensor sea presentada con los grados, la humedad relativa en distintas líneas y no se muestre el código binario.
3) ¿Sobra algún cable en el esquema adjunto de fritzing?