Objetivos

 

  • Presentamos el sensor SHT20 de humedad y temperatura precisos.
  • Veremos sus características.
  • Mostraremos un sencillo programa con ejemplo de uso.

Material Requerido

 

 

Vista principal  Un ESP32
 Un ESP32 BreakOut
 Un Sensor SHT20

 

Midiendo Temperatura y Humedad

 

Ya hemos manejado antes los sensores de temperatura y humedad como los clásicos DHT11 y DHT20. Son sensores de humedad y temperatura desarrollados para la industria alimenticia y dan un valor excelente por muy poco dinero. De hecho, su gran virtud es que funcionan y son baratos, que no es poco.

Pero esto sensores están pensados para aplicaciones especificas y no de uso general, ya que su exactitud y repetibilidad son muy mejorables, y además la velocidad de lectura es muy lenta para algunas aplicaciones. Además, no están pensados para uso industrial en ambiente medianamente agresivos.

Recientemente he necesitado probar con algo mas resistente y preciso y me he encontrado con los sensores SHT20 de Sensirion que son un poco mas caros que los DHT (Aunque no demasiado: unos 15€) y que a cambio están mucho mejor protegidos y sus medidas mucho más fiables. Y más importante, aguantan bien el paso del tiempo.

 

El sensor SHT20

 

El sensor SHT20 viene en varios encapsulados, incluyendo uno a prueba de agua y mide humedad y temperatura mediante el bus I2C lo que resulta de lo más cómodo de cara a trabajar con nuestros Arduino y ESP32.sensor de humedad y temperatura

Es un sensor capacitivo de nueva generación , que incluye los sensores de humedad y temperatura, además de un convertidor Analógico a Digital, y el amplificador de señal interno, de forma que su procesador realiza todas los cálculos y conversiones para entregarnos un valor final mediante el bus I2C, que puede ser conectado directamente a nuestros Arduino y ESP32.

Hay varios encapsulados disponibles desentendiendo de las necesidades: Polvo, Agua, etc. pero el encapsulado incluye los sensores, un convertidor Analógico a digital y los amplificadores necesarios para dar una lectura digital precisa, además de la electrónica necesaria para el I2C lo que le convierte en un sensor muy cómodo de usar.

Especificaciones

  • Operating Voltage: 3.3V/5V
  • Communication Interface: I2C / IIC
  • Protection Class: waterproof anti-condensation
  • RH Response Time: 8s (tau63%)
  • Accuracy: ±3% RH / ±3 ℃
  • Measuring Range: 0-100% RH / -40-125 ℃
  • Dimension: 73mm * 17mm / 2.87 * 0.67 inches
  • Weight: 44g Board Overview.

 

La salida del SHT20 tiene 4 hilos:

Num Label Description
1 Red VCC
2 Green GND
3 Black (Blue) SDA
4 White (Yellow) SCL

 

Instalando la librería del SHT20

 

Para leer este sensor podemos instalar la librería de DFRobot, mediante:

\Programa\Incluir Librería\Administrar bibliotecas:

Después escribe DHT20 en la ventana de búsqueda y da intro. Elige la primera que sale:

Una vez tengamos instalada la librería, el programa es trivial y voy a usar directamente el ejemplo “getHumidityAndTemperature” que viene como muestra porque me funcionó a la primero (Lo que no es frecuente)  Pero antes veamos las conexiones con un ESP32

SHT20 con el ESP32

 

Voy a usar un ESP32 que tengo dando vueltas por la mesa desde no se cuando y que creo que es un viejo ESP32 Vroom V1, cuyo pinout es este:

Y por lo que a mi esp32 consiste, el bus I2C usa los pines GPIO21 como SDA (Data) y el GPIO22 como SCL (Clock), No estoy seguro de que toda las versiones de los ESP32 cumplan con esto por lo que te recomiendo que revises tu modelo para estar seguro de que pines corresponden al I2C.

La versión del SHT20 que voy a usar viene con los terminales en forma de pequeño conector que no cabe en la protoboard por lo que voy a usar una breakout board para conectarlo convenientemente, ya que tiene una par de filas Dupont hembra para que dependiendo de tu modelo encajes el esp32 en una u otra fila, que conectan con los tornillos exteriores:

Estas placas son ideales para hacer montajes un poco decentes y en los que los cables no se anden soltando continuamente. Al final queda una cosa así, que puedes atornillar a una caja o rack:

El programa de lectura

 

Si ya habéis instalado la librería del SHT20, viene con un ejemplo que vamos a usar, llamado “getHumidityAndTemperature” y que podéis encontrar en la sección de ejemplos del DFRobot_SHT20 de vuestro Arduino. En primer lugar hacemos el include de la librería y creamos una instancia llamada sht20, a la que pasamos la dirección I2C del sensor (Por defecto el valor estándar):

#include "DFRobot_SHT20.h"
DFRobot_SHT20 sht20(&Wire, SHT20_I2C_ADDR);

En el setup(), inicializamos el sensor y le damos tiempo para que arranque y por ultimo comprobamos que todo está bien con él:

void setup()
{  Serial.begin(115200);
   sht20.initSHT20();            // Init SHT20 Sensor
   delay(100);
   Serial.println("Sensor init finish!");

   sht20.checkSHT20();
}

El loop() es trivial:

void loop()
{  float humd = sht20.readHumidity();
   float temp = sht20.readTemperature();
   Serial.print("Time:");
   Serial.print(millis());   // Get the system time from Arduino

   Serial.print(" Temperature:");
   Serial.print(temp, 1);   // Only print one decimal place
   Serial.print("C");
   Serial.print(" Humidity:");
   Serial.print(humd, 1);   // Only print one decimal place
   Serial.print("%");
   Serial.println();

   delay(1000);
}

Y aquí os dejo un ejemplo del resultado:

Le he tenido que soplar un poco para que diera siempre lo mismo (Era de lo más aburrido)