En este artículo aprenderás a utilizar el sensor de temperatura y humedad SHT31 con Arduino, una combinación perfecta para proyectos de monitoreo ambiental y control de clima. Descubre cómo conectar y programar este sensor para obtener mediciones precisas y mejorar tus proyectos de electrónica. ¡No te pierdas esta guía completa sobre la interfaz del sensor SHT31 con Arduino!
¿Quiere registrar el clima en su invernadero, construir un sistema de control de humidores o realizar un seguimiento de los datos de temperatura y humedad para un proyecto de estación meteorológica? ¡El sensor de temperatura y humedad SHT31 podría ser la elección correcta para usted!
El sensor SHT31 está calibrado de fábrica y no requiere ningún componente externo para funcionar. Entonces, con solo unas pocas conexiones y algo de código Arduino, puedes comenzar a medir la humedad relativa y la temperatura de inmediato.
Descripción general del hardware
El módulo cuenta con un sensor digital de temperatura y humedad de alta precisión, rentable y fácil de usar de Sensirion – SHT31.
Debido al pequeño tamaño del módulo, se puede utilizar para casi cualquier cosa, p. B. para termostatos, higrostatos, estaciones meteorológicas interiores y dispositivos similares para monitorear o controlar la humedad y/o temperatura del aire.
El sensor SHT31 es capaz de medir la humedad en todo el rango de 0 a 100 % de HR con una precisión típica de ±2 % en el rango de 20 % a 80 % de HR (resolución de 0,01 % de HR).
El rango de temperatura máximo del SHT31 es de -40 a 125°C. La precisión típica es ±0,3°C a 25°C (resolución 0,015°C).
Advertencia:
El sensor SHT31 cuenta con una pequeña ventana que expone la película del sensor de polímero responsable de medir la temperatura y la humedad. Se recomienda evitar el contacto con líquidos, polvo u otros contaminantes ya que esto puede afectar la precisión del sensor.
Requisitos de energía
El sensor en sí utiliza de 2,4 V a 5,5 V, lo que hace que este módulo sea compatible con 3 V o 5 V. Para que puedas usarlo fácilmente con tu microcontrolador favorito de 3,3 V o 5 V.
El SHT31 consume menos de 0,8 mA durante las mediciones y menos de 0,2 µA en modo de disparo único (sin medición). Este bajo consumo energético permite su implementación en dispositivos que funcionan con baterías como teléfonos móviles, wearables o relojes inteligentes.
interfaz I2C
El SHT31 es un sensor I2C, lo que significa que utiliza las dos líneas de reloj/datos I2C disponibles en la mayoría de los microcontroladores y puede compartir estos pines con otros sensores I2C siempre que no haya colisión de direcciones.
Admite dos direcciones I2C separadas: 0x44Maleficio y 0x45Maleficio. Esto permite utilizar dos módulos SHT31 en el mismo bus o evitar conflictos de dirección con otro dispositivo en el bus.
El pin AD determina la dirección I2C del módulo. Este pin tiene una resistencia desplegable incorporada. Por lo tanto, si deja el pin AD desconectado, la dirección I2C predeterminada es 0x44Maleficio y cuando lo conectas a una señal de alto voltaje, la dirección I2C se convierte en 0x45Maleficio.
Modo de alarma
El SHT31 tiene un pin de salida de alarma (AL) que se puede activar cuando las condiciones ambientales (humedad y/o temperatura) exceden los límites definidos por el usuario. Esto permite que las mediciones se realicen mediante interrupción en lugar de sondeo, lo que permite que el microcontrolador host realice otras tareas mientras se recopilan los datos del sensor.
Cuando la humedad y/o la temperatura exceden el límite superior, el pin de alarma pasa a ALTO y permanece ALTO hasta que la temperatura cae por debajo del límite claro. Si la humedad y/o la temperatura exceden el límite bajo, el pin de alarma también pasa a ALTO y permanece ALTO hasta que la temperatura sube por encima del límite claro.
La siguiente imagen muestra los diferentes límites del modo de alarma.
Puedes leer más sobre esto en un artículo separado. Nota de aplicación.
Especificaciones técnicas
Aquí están las especificaciones completas:
Fuente de alimentación | 2,4 V a 5,5 V |
Consumo de corriente | ~0,8 mA (durante las mediciones) |
~0,2 µA (en modo de disparo único) | |
Rango de humedad | 0 a 100% de humedad relativa |
Precisión de la humedad | ±2% en el rango de 20% a 80% de humedad relativa |
Rango de temperatura | -40 ˚C a +125 ˚C |
Precisión de temperatura | ±0,3˚C a 25°C |
Consulte la siguiente hoja de datos para obtener más detalles.
Asignación de pines del módulo SHT31
Ahora veamos el pinout.
VCC es el pin de alimentación. Dado que el sensor usa 2,4-5,5 VCC, déle el mismo voltaje que el nivel lógico de su microcontrolador; por ejemplo, para un micro de 5 V como Arduino, use 5 V.
Tierra es la base común del poder y la lógica.
SCL es el pin del reloj I2C, conéctelo a la línea de reloj I2C de su microcontrolador.
ASD es el pin de datos I2C, conéctelo a la línea de datos I2C de su microcontrolador.
ANUNCIO El pin determina la dirección I2C del módulo. Si deja el pin AD desconectado, la dirección I2C predeterminada es 0x44Maleficio y cuando lo conectas a una señal de alto voltaje, la dirección I2C se convierte en 0x45Maleficio.
Alabama El pin se activa cuando las condiciones ambientales (humedad y/o temperatura) exceden los límites definidos por el usuario.
Cableado de un módulo SHT31 a un Arduino
¡Cablear el sensor SHT31 es muy sencillo!
Sólo es necesario conectar cuatro pines para utilizar el sensor. Una para VCC, otra para GND y dos líneas de datos para comunicación I2C.
Conecte el pin SCL al pin de reloj I2C y el pin SDA al pin de datos I2C de su Arduino. Tenga en cuenta que cada placa Arduino tiene diferentes pines I2C que deben conectarse en consecuencia. En las placas Arduino con diseño R3, SDA (línea de datos) y SCL (línea de reloj) se encuentran en los encabezados cerca del pin AREF. También se les conoce como A5 (SCL) y A4 (SDA).
La siguiente figura muestra el cableado.
Instalación de biblioteca
Para que su sensor funcione, debe instalarlo Adafruit SHT31 Biblioteca. Está disponible en el administrador de la biblioteca Arduino.
Para instalar la biblioteca, navegue hasta Bosquejo > Incluir biblioteca > Administrar bibliotecas… Espere a que el administrador de la biblioteca descargue el índice de la biblioteca y actualice la lista de bibliotecas instaladas.
Filtra tu búsqueda escribiendo “SHT31' e instalar la biblioteca.
La biblioteca Adafruit_SHT31 utiliza el Autobús Adafruit IO Biblioteca auxiliar interna para abstraer transacciones y registros I2C y SPI. Así que consulte con el administrador de la biblioteca. Autobús Adafruta e instálelo también.
Código Arduino – leer temperatura y humedad
A continuación se muestra un boceto básico de Arduino. Continúe y cárguelo en su Arduino. ¡Puedes ver la temperatura y humedad actuales en tu habitación!
#include <Arduino.h>
#include <Wire.h>
#include "Adafruit_SHT31.h"
Adafruit_SHT31 sht31 = Adafruit_SHT31();
void setup() {
Serial.begin(9600);
if (! sht31.begin(0x44)) { // Set to 0x45 for alternate I2C address
Serial.println("Couldn't find SHT31");
while (1) delay(1);
}
}
void loop() {
float t = sht31.readTemperature();
float h = sht31.readHumidity();
if (! isnan
Serial.print("Temp *C = "); Serial.print
} else {
Serial.println("Failed to read temperature");
}
if (! isnan(h)) { // check if 'is not a number'
Serial.print("Hum. % = "); Serial.println(h);
} else {
Serial.println("Failed to read humidity");
}
delay(1000);
}
Una vez cargado su código, abra el terminal serie de 9600 bps. Deberías ver algo como el resultado a continuación. ¡Intenta respirar en el sensor para ver cómo cambian las lecturas de humedad y temperatura!
Explicación del código:
El código es bastante simple. Al principio, Arduino.h
, Wire.h
Y Adafruit_SHT31.h
Se incluyen bibliotecas y se crea un objeto Adafruit_SHT31 en el espacio global.
#include <Arduino.h>
#include <Wire.h>
#include "Adafruit_SHT31.h"
Adafruit_SHT31 sht31 = Adafruit_SHT31();
En la configuración inicializamos la comunicación serie con el PC y la llamamos. begin()
Función.
El begin(<address>)
La función inicializa el sensor donde <address>
es la dirección I2C del sensor. Por defecto es 0x44MaleficioTambién puedes configurar el sensor en 0x45.Maleficio y luego pasar ese valor. Esta función devuelve Verdadero si el sensor se encontró y respondió correctamente, y Falso si no se encontró.
void setup() {
Serial.begin(9600);
if (! sht31.begin(0x44)) { // Set to 0x45 for alternate I2C address
Serial.println("Couldn't find SHT31");
while (1) delay(1);
}
}
Después de la inicialización, puede acceder a los métodos del objeto (sht31) utilizando el operador de punto.
sht31.readTemperatura() Devuelve un valor de temperatura de punto flotante (decimal + fraccionario) en °C. Puedes convertir a Fahrenheit multiplicando por 1,8 y sumando 32.
sht31.readHumedad() Devuelve el valor de humedad, también como un valor de punto flotante entre 0 y 100 (esto indica % de humedad)
void loop() {
float t = sht31.readTemperature();
float h = sht31.readHumidity();
if (! isnan
Serial.print("Temp *C = "); Serial.print
} else {
Serial.println("Failed to read temperature");
}
if (! isnan(h)) { // check if 'is not a number'
Serial.print("Hum. % = "); Serial.println(h);
} else {
Serial.println("Failed to read humidity");
}
delay(1000);
}
Introducción
¿Quiere llevar un registro del clima en su invernadero, construir un sistema de control de humidor o rastrear datos de temperatura y humedad para un proyecto de estación meteorológica? ¡El Sensor de Temperatura y Humedad SHT31 puede ser la elección correcta para usted!
Descripción de Hardware
El módulo lleva un sensor digital de temperatura y humedad de bajo costo, fácil de usar y altamente preciso, de Sensirion – SHT31. Su tamaño pequeño permite utilizarlo para casi cualquier cosa, como termostatos, humidostatos, estaciones meteorológicas interiores y dispositivos similares para monitorear o controlar la humedad y/o temperatura.
- Rango de humedad: 0 a 100 % RH
- Precisión de humedad: ±2% en el rango del 20% al 80% RH
- Rango de temperatura: -40°C a 125°C
- Precisión de temperatura: ±0.3°C a 25°C
Requerimientos de Energía
El sensor utiliza 2.4V a 5.5V, lo que hace este módulo compatible con 3V o 5V. Por lo tanto, puede usarlo con su microcontrolador favorito de 3.3V o 5V sin preocupaciones.
Interfaz I2C
El SHT31 es un sensor I2C, lo que significa que utiliza los dos cables de datos/reloj I2C disponibles en la mayoría de microcontroladores, y puede compartir esos pines con otros sensores I2C siempre que no haya una colisión de direcciones.
Modo de Alerta
El SHT31 tiene un pin de alerta que se activa cuando la condición ambiental (humedad y/o temperatura) excede los límites definidos por el usuario. Esto permite que las mediciones sean impulsadas por interrupciones en lugar de utilizar el polling, lo que permite que el microcontrolador realice otras tareas mientras los datos son recopilados por el sensor.
Especificaciones Técnicas
Aquí están las especificaciones completas:
- Alimentación: 2.4V a 5.5V
- Consumo de corriente: ~0.8mA (durante mediciones) ~0.2µA (modo de disparo único)
- Rango de humedad: 0 a 100 % RH
- Precisión de humedad: ±2% en el rango del 20% al 80% RH
- Rango de temperatura: -40°C a 125°C
- Precisión de temperatura: ±0.3°C a 25°C
Instalación de la Biblioteca
Para poner en marcha su sensor, necesitará instalar la biblioteca Adafruit SHT31. Está disponible en el gestor de bibliotecas de Arduino.
Código de Arduino – Lectura de Temperatura y Humedad
A continuación se muestra un boceto básico de Arduino. ¡Sube el código a tu Arduino y verás la temperatura y humedad actuales en tu habitación!
Adafruit_SHT31 sht31 = Adafruit_SHT31();
void setup() {
Serial.begin(9600);
if (! sht31.begin(0x44)) {
Serial.println(«No se pudo encontrar el SHT31»);
while (1) delay(1);
}
void loop() {
float t = sht31.readTemperature();
float h = sht31.readHumidity();
if (! isnan(t)) {
Serial.print(«Temp *C = «); Serial.print(t); Serial.print(«tt»);
} else {
Serial.println(«Fallo al leer la temperatura»);
}
if (! isnan(h)) {
Serial.print(«Hum. % = «); Serial.println(h);
} else {
Serial.println(«Fallo al leer la humedad»);
}
delay(1000);
}