
Estamos en busca de componentes que ofrezcan la mejor calidad y precisión para proyectos de electrónica y sistemas embebidos.
Características del SHT31
El sensor SHT31, desarrollado por Sensirion, es conocido por su alta precisión y fiabilidad en la medición de temperatura y humedad. Sus principales características incluyen:
- Alta Precisión: Con una precisión de ±2% RH para la humedad y ±0.3°C para la temperatura, garantiza datos exactos para aplicaciones críticas.
- Interfaz I2C: Facilita la integración con diversos microcontroladores y plataformas de desarrollo como Arduino y Raspberry Pi.
- Rápida Respuesta: Su diseño avanzado permite obtener lecturas en tiempo real, ideal para sistemas de monitoreo continuo.
- Compensación de Calor: Mejora la precisión en ambientes con fluctuaciones térmicas, asegurando mediciones consistentes.
Aplicaciones del SHT31
El SHT31 es versátil y se adapta a diversas aplicaciones, tales como:
- Sistemas HVAC: Optimiza el control de climatización en edificios inteligentes.
- Estaciones Meteorológicas: Proporciona datos precisos para el análisis del clima.
- Agricultura de Precisión: Monitoriza las condiciones ambientales en invernaderos y cultivos.
- Dispositivos IoT: Integra fácilmente en soluciones de hogar inteligente y monitoreo ambiental.
Integración Sencilla
Se valora la facilidad de uso y la versatilidad. El SHT31 se conecta mediante una interfaz I2C, simplificando su uso con cualquier microcontrolador compatible.
Código para compilar en IDE Platformio
#include <Wire.h>
#include <Adafruit_SHT31.h>
#include <FS.h>
#include <SD_MMC.h>
Adafruit_SHT31 sht31 = Adafruit_SHT31();
void setup() {
Serial.begin(115200);
while (!Serial) delay(10); // wait for serial port to open
if (!sht31.begin(0x44)) { // Set to 0x45 for alternate i2c addr
Serial.println("Couldn't find SHT31");
while (1) delay(1);
}
if (!SD_MMC.begin("/sdcard", true)) {
Serial.println("SD Card Mount Failed");
return;
}
uint8_t cardType = SD_MMC.cardType();
if (cardType == CARD_NONE) {
Serial.println("No SD card attached");
return;
}
Serial.println("SD Card initialized.");
}
void loop() {
float t = sht31.readTemperature();
float h = sht31.readHumidity();
if (!isnan(t)) { // check if 'is not a number'
Serial.print("Temp *C = "); Serial.println(t);
} 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");
}
// Open the file in write mode
File dataFile = SD_MMC.open("/sdcard/data.txt", FILE_APPEND);
// If the file opened successfully, write the temperature and humidity
if (dataFile) {
dataFile.print("Millis: ");
dataFile.print(millis());
dataFile.print(", Temp: ");
dataFile.print(t);
dataFile.print(" *C, Humidity: ");
dataFile.print(h);
dataFile.println(" %");
dataFile.close();
Serial.println("Data written to file");
} else {
// If the file didn't open, print an error
Serial.println("Error opening data.txt");
}
// Wait for 2 seconds before reading again
delay(2000);
}