Este sensor nos permite obtener la temperatura y la humedad relativa del aire, pues mide el vapor de agua presente en el aire a cierta temperatura, es muy fácil de agregar a nuestras arduino. Este sensor se puede conseguir en formato de modulo con 3 pines o formato normal de 4 pines.
La diferencia de esta manera de conseguirlo en el mercado se basa en que el modulo posee la resistencia pull-up ya en el, y en el normal debemos agregarla entre vcc y data. La resolución de temperatura de este sensor es de 1 °C, con un margen de error de 2°C y el rango de temperatura es de 0°C a 50 °C y la temperatura relativa es dada en porcentaje de 20% a 90% con un margen de error de 5%, el ciclo de muestreo es de 1 segundo (1Hz) osea que cada segundo el sensor actualizara su información.
Este sensor envía 5 tramas de datos de 8 bits donde la primera trama de 8 bits tiene la información de la humedad parte entera, la segunda los decimales de la humedad, la tercera la parte entera de la temperatura, la cuarta la parte decimal de la temperatura y la quinta y ultima la trama de paridad.
Este sensor se puede alimentar con 3,3V o 5V, permitiendo mayor versatilidad al momento de diseñar nuestro proyecto, es importante tener en cuenta la resistencia pull-up cuando extendemos el sensor a distancias mayores, ya que esta es la diferencia entres el modulo y el sensor normal, pues si queremos posicionar el sensor a una distancia amplia del control (arduino) debemos modificar esta resistencia.
Para facilitar la programación recomiendo las librerías de adafruit donde son necesarias 2, la primera es Sensor_Adafruit.h, que proporciona las características de muchos sensores para usar con sus librerías, puedes descargarlo AQUI! , y la segunda es la del sensor DHT11 y DHT22 que permite la captura de datos de estos sensores, hacer conversiones de centigrados a fahrenheit, la puedes descargar AQUI!.
CONEXIÓN ARDUINO
La conexión del sensor con nuestra arduino es muy sencilla, y enfatizare en el sensor normal ya que su grado de dificultad es un poco mayor, bueno es solo agregar la resistencia pull-up de 22k Ohmios, en el modulo no se debe asignar ya que ya se encuentra en el. En el diagrama se ve una de 220 Ohmios pero en realidad es de 22k.
En el código siguiente veremos los datos a través del monitor serial.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
//Librerias #include #include #include int pinData = 2; // pin de lectura del sensor int ModDht = 11; // modelo del sensor DHT11 // si fuera el DHT22 sería 22. //se crea el objeto dht DHT dht(pinData,ModDht); void setup() { // se inicia el puerto serial Serial.begin(9600); // se inicia el sensor dht.begin(); } void loop() { Serial.print(“Temp: “); //se toma la lectura de temperatura // si se quiere en fahrenheit sería asi //dht.readTemperature(true) Serial.print(dht.readTemperature()); Serial.print(” “); Serial.print(“Hum: “); //se toma la lectura de la temperatura Serial.println(dht.readHumidity()); delay(1000); } |
ahora para hacerlo mediante un display LCD 16×2 con modulo I2C, si tienes dudas sobre la conexión del modulo para el display o el bus I2C les dejo a continuación los siguientes enlaces donde pueden obtener información sobre estos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
#include #include #include #include #include LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7); int pinData = 2; int ModDht = 11; DHT dht(pinData,ModDht); void setup() { lcd.begin(16,2); dht.begin(); lcd.clear(); lcd.setBacklightPin(3,POSITIVE); lcd.setBacklight(HIGH); } void loop() { lcd.setCursor(0,0); lcd.print(“Temp:”); lcd.moveCursorRight(); lcd.print(dht.readTemperature()); lcd.setCursor(0,1); lcd.print(“Hum:”); lcd.moveCursorRight(); lcd.print(dht.readHumidity()); delay(1000); lcd.clear(); delay(100); } |
Hola, saben como utilizar este mismo sensor, pero con mblock. Es para utilizar con chicos de 3 año.