Registro de Datos con ESP32: Sensor BME280 y Tarjeta MicroSD


Introducción

En el mundo de los sistemas embebidos, la capacidad de almacenar información para su posterior análisis es vital. Ya sea que estés monitoreando el clima de un invernadero o el rendimiento de una máquina, una tarjeta microSD es la herramienta perfecta para proyectos de Datalogging.

En este artículo, vamos a configurar un ESP32 para leer datos ambientales de un sensor BME280 y guardarlos en un archivo de texto dentro de una tarjeta microSD. Lo mejor de todo es que cada lectura incluirá una marca de tiempo precisa (Epoch time) obtenida mediante un servidor NTP vía WiFi, lo que te permitirá organizar tus datos cronológicamente de forma profesional.

El uso de una tarjeta microSD es especialmente útil para proyectos de registro de datos. Como ejemplo, le mostraremos cómo guardar las lecturas del sensor de un sensor BME280 con marcas de tiempo ( tiempo de época ).

Descripción general del proyecto de tarjeta microSD BME280 de registro de datos ESP32

Requisitos previos

Para este ejemplo, asegúrese de tener instaladas las siguientes bibliotecas:

Puede instalar estas bibliotecas utilizando el administrador de bibliotecas de Arduino. En tu IDE de Arduino, ve a Sketch > Incluir biblioteca > Administrar bibliotecas… Luego, busca los nombres de las bibliotecas e instálalos.

Diagrama esquemático

Para este ejemplo, debe conectar el módulo de la tarjeta microSD y el sensor BME280 al ESP32. Aquí hay una lista de las piezas necesarias:

  • Placa de desarrollo ESP32 (lea: Las mejores placas de desarrollo ESP32 )
  • sonda BME280
  • Módulo de tarjeta MicroSD
  • Tarjeta micro SD
  • Cables de puente
  • Tablero de circuitos

Conecte el circuito siguiendo el siguiente diagrama esquemático.

Diagrama esquemático del circuito de la tarjeta microSD ESP32 BME280

También puedes echar un vistazo a las siguientes tablas:

BME280ESP32
VIN3V3
TIERRATIERRA
SCLGPIO22
ASDGPIO21
módulo de tarjeta microSDESP32
3V33,3 V
CSGPIO5
MOSIGPIO23
CLKGPIO18
MISOGPIO19
TIERRATIERRA

https://8d47f2cdfa0fea8c35311dc564e24b83.safeframe.googlesyndication.com/safeframe/1-0-38/html/container.html

Código

Copie el siguiente código en su IDE de Arduino. Este boceto obtiene lecturas del sensor BME280 (temperatura, humedad y presión) y las registra en un archivo en la tarjeta microSD cada 30 segundos. También registra la marca de tiempo (tiempo de época solicitado a un servidor NTP).


// Libraries for SD card
#include "FS.h"
#include "SD.h"
#include <SPI.h>

//Libraries for BME280 sensor
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

// Libraries to get time from NTP Server
#include <WiFi.h>
#include "time.h"

// Replace with your network credentials
const char* ssid     = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";

// Timer variables
unsigned long lastTime = 0;
unsigned long timerDelay = 30000;

// BME280 I2C
Adafruit_BME280 bme;

// Variables to hold sensor readings
float temp;
float hum;
float pres;
String dataMessage;

// NTP server to request epoch time
const char* ntpServer = "pool.ntp.org";

// Variable to save current epoch time
unsigned long epochTime; 

// Function that gets current epoch time
unsigned long getTime() {
  time_t now;
  struct tm timeinfo;
  if (!getLocalTime(&timeinfo)) {
    //Serial.println("Failed to obtain time");
    return(0);
  }
  time(&now);
  return now;
}

// Initialize WiFi
void initWiFi() {
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.print("Connecting to WiFi ..");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print('.');
    delay(1000);
  }
  Serial.println(WiFi.localIP());
}

// Init BME280
void initBME(){
  if (!bme.begin(0x76)) {
    Serial.println("Could not find a valid BME280 sensor, check wiring!");
    while (1);
  }
}

// Initialize SD card
void initSDCard(){
   if (!SD.begin()) {
    Serial.println("Card Mount Failed");
    return;
  }
  uint8_t cardType = SD.cardType();

  if(cardType == CARD_NONE){
    Serial.println("No SD card attached");
    return;
  }
  Serial.print("SD Card Type: ");
  if(cardType == CARD_MMC){
    Serial.println("MMC");
  } else if(cardType == CARD_SD){
    Serial.println("SDSC");
  } else if(cardType == CARD_SDHC){
    Serial.println("SDHC");
  } else {
    Serial.println("UNKNOWN");
  }
  uint64_t cardSize = SD.cardSize() / (1024 * 1024);
  Serial.printf("SD Card Size: %lluMB\n", cardSize);
}

// Write to the SD card
void writeFile(fs::FS &fs, const char * path, const char * message) {
  Serial.printf("Writing file: %s\n", path);

  File file = fs.open(path, FILE_WRITE);
  if(!file) {
    Serial.println("Failed to open file for writing");
    return;
  }
  if(file.print(message)) {
    Serial.println("File written");
  } else {
    Serial.println("Write failed");
  }
  file.close();
}

// Append data to the SD card
void appendFile(fs::FS &fs, const char * path, const char * message) {
  Serial.printf("Appending to file: %s\n", path);

  File file = fs.open(path, FILE_APPEND);
  if(!file) {
    Serial.println("Failed to open file for appending");
    return;
  }
  if(file.print(message)) {
    Serial.println("Message appended");
  } else {
    Serial.println("Append failed");
  }
  file.close();
}

void setup() {
  Serial.begin(115200);
  
  initWiFi();
  initBME();
  initSDCard();
  configTime(0, 0, ntpServer);
  
  // If the data.txt file doesn't exist
  // Create a file on the SD card and write the data labels
  File file = SD.open("/data.txt");
  if(!file) {
    Serial.println("File doesn't exist");
    Serial.println("Creating file...");
    writeFile(SD, "/data.txt", "Epoch Time, Temperature, Humidity, Pressure \r\n");
  }
  else {
    Serial.println("File already exists");  
  }
  file.close();
}

void loop() {
  if ((millis() - lastTime) > timerDelay) {
    //Get epoch time
    epochTime = getTime();
    
    //Get sensor readings
    temp = bme.readTemperature();
    //temp = 1.8*bme.readTemperature() + 32;
    hum = bme.readHumidity();
    pres = bme.readPressure()/100.0F;

    //Concatenate all info separated by commas
    dataMessage = String(epochTime) + "," + String(temp) + "," + String(hum) + "," + String(pres)+ "\r\n";
    Serial.print("Saving data: ");
    Serial.println(dataMessage);

    //Append the data to file
    appendFile(SD, "/data.txt", dataMessage.c_str());

    lastTime = millis();
  }
}

Inserte sus credenciales de red en las siguientes variables y el código funcionará de inmediato:

const char* ssid     = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";

Este ejemplo utiliza las funciones que hemos visto anteriormente para escribir y agregar datos a la tarjeta microSD (escribirArchivo()yagregar archivo ()funciones).

Demostración

Sube el código a tu tablero. Puede comprobar en el monitor serie si todo funciona como se esperaba.

ESP32 BME280 Registro de datos en tarjeta microSD Monitor serie

Deje que el proyecto funcione durante un tiempo para recopilar algunas lecturas. Luego, inserte la tarjeta microSD en su computadora, y debería tener un archivo llamado datos.txt con las lecturas del sensor.

ESP32 BME280 Registro de datos a archivo en tarjeta microSD

Conclusión

Implementar un sistema de registro en SD te permite independizar tus proyectos de una conexión constante a la nube y asegurar que no se pierda ninguna lectura importante. Este método es la base para estaciones meteorológicas autónomas y sistemas de monitoreo industrial.

Si te ha gustado este tutorial, no te pierdas nuestro último post donde exploramos como optimizar un ordenador portátil para ejecutar aplicaciones avanzadas [Optimizar un portátil para uso con herramientas avanzadas].

Ariston NET: problemas reales en la configuración ( y como evitarlos)


La promesa es clara: controlar tu caldera, termo o bomba de calor desde el móvil, recibir alertas antes de que te quedes sin agua caliente y optimizar el consumo hasta un 25%. Sin embargo, en la práctica, muchos usuarios encuentran fricciones importantes en la configuración inicial.

En este artículo analizamos los puntos críticos al instalar y vincular la app, por qué fallan y cómo resolverlos.

1. Antes de empezar: lo que casi nadie revisa

La FAQ oficial en
https://discover.ariston-net.remotethermo.com/#faq
insiste en algo clave: consulta siempre el manual del equipo y, ante dudas, recurre a un técnico autorizado. Ciertamente la documentación en papel es extremadamente escasa concentrándose en una guía rápida donde sobre todo se detalla la instalación hidràulica.

Recomiendo estudiar este video oficial de Ariston que explica mas o menos claro cuales son los pasos a seguir:

No es solo una recomendación formal:

  • El mantenimiento (como la revisión del ánodo de magnesio en termos) afecta a la durabilidad y a la garantía.
  • Algunos contratos de mantenimiento y extensiones de garantía exigen revisiones periódicas certificadas.
  • La configuración conectada puede estar vinculada a parámetros técnicos que el SAT debe validar.

Además, desde la propia app, en la sección Soporte Técnico, puedes localizar centros oficiales.

Obviamente los pasos para conectar el termo a las tuberías de nuestro hogar es la parte mas importante que no debemos olvidar y el procedimiento es estándar ( bajo mi opinión no descuidar el uso de teflón en todas las conexiones y vigilar las posibles perdidas apretando mas estas)

2-El gran cuello de botella: la conexión Wi-Fi (2.4 GHz)

El problema más repetido no es la instalación física, sino la conectividad pues la app necesita una conexión a Internet en la banda de 2.4GHz o de no ser posible la app no funcionará

Requisito crítico:

La mayoría de dispositivos compatibles con Ariston NET funcionan exclusivamente en red Wi-Fi 2.4 GHz.

Qué ocurre en la práctica

Hoy casi todos los routers emiten redes combinadas 2.4 + 5 GHz bajo el mismo nombre (SSID). Esto provoca que:

  • El móvil se conecte en 5 GHz.
  • El equipo Ariston solo vea 2.4 GHz.
  • La vinculación falle o se quede bloqueada en “buscando red”.

Síntomas típicos

  • La app no detecta el dispositivo.
  • El proceso se queda en bucle tras introducir contraseña.
  • Se pierde conexión tras una actualización.

Solución técnica recomendada

  1. Entrar en el router.
  2. Separar SSID 2.4 GHz y 5 GHz con nombres distintos.
  3. Conectar el móvil explícitamente a la red 2.4 GHz.
  4. Repetir el proceso de pairing.

Este simple ajuste resuelve una parte significativa de incidencias.

3-Paso a paso (y dónde suele fallar)

1️⃣ Descarga y registro

Descargar la app oficial usando el código QR de la pegatina que adjunta el aparato:

  • Ariston NET (Android / iOS)

Problemas habituales:

  • Correo de verificación que no llega.
  • Cuenta creada pero sesión que expira tras actualización.

Solución:

  • Revisar spam.
  • Evitar correos corporativos con filtros estrictos.
  • Confirmar región correcta en la app.

2️⃣ Activar modo pairing

Básicamente , y esto no lo explican bien, esta actuación va a crear un portal cautivo wifi que no tiene conexión a Internet. Lógicamente DEBEREMOS DESCONECTAR LOS DATOS de nuestro dispositivo movil y conectarnos manualmente a este ( esto no suele decirse). Una vez conectados al portal cautivo , logicamente nos pedira la red wifi de nuestra casa y por supuesto la clave

Normalmente:

  • Pulsar botón AP o botón superior durante 5 segundos.
  • El LED WEB debe parpadear en verde.

Errores frecuentes:

  • No mantener pulsación suficiente.
  • Intentar emparejar sin haber esperado reinicio completo.
  • No verificar que el LED cambia de estado.

3️⃣ Conexión temporal a “Remote GW Thermo”

Durante el proceso, el móvil se conecta a una red temporal tipo:

Remote GW Thermo

Aquí muchos usuarios abandonan el proceso porque el móvil indica “sin internet”. Es normal. No hay que desconectarse manualmente.

En algunos modelos pueda que pida una clave, que seria la siguiente o una variación de ella:

ariston123

4️⃣ Configuración manual vía 192.168.1.1

En algunos modelos es necesario:

  • Abrir navegador.
  • Acceder a 192.168.1.1.
  • Introducir red doméstica y contraseña.

Errores comunes:

  • El móvil cambia automáticamente a datos móviles.
  • El router bloquea IPs locales.
  • Se introduce mal la contraseña (ojo con espacios finales).

Ejemplo de Calentador de agua eléctrico con una capacidad de 30 litros que permite un ahorro de energía de hasta un 14% gracias a la función ECO EVO. Instale sobre el fregadero y fácilmente manejable de forma remota con Wi-Fi integrado https://amzn.to/4c5rkJ4

4-Opiniones reales: experiencia desigual

Las valoraciones de Ariston NET son mixtas. En Google Play Store la puntuación suele situarse en torno a 3,2–3,3 sobre 5. En Android es relativamente frecuente que, en el último paso del proceso de configuración, la aplicación solicite activar la ubicación real del dispositivo y que, al no completarse correctamente este paso, la activación quede bloqueada.

MUY IMPORTANTE: En la práctica, si la instalación se complica en ese punto, muchos usuarios logran finalizar el proceso sin incidencias evitando conceder permisos permanentes de ubicación durante la configuración inicial, lo que simplifica la activación y reduce errores en el cierre del registro.

En App Store la valoración suele ser más alta, moviéndose aproximadamente entre 3,9 y 4,1 sobre 5 según el país. En iOS, cuando la conexión Wi-Fi es estable y el equipo es plenamente compatible, la percepción general es más positiva y la experiencia tiende a ser más fluida.

Entre los aspectos mejor valorados destaca la comodidad de poder encender o apagar la calefacción desde fuera de casa, ajustar la temperatura sin estar físicamente delante del equipo y consultar estadísticas de consumo que ayudan a optimizar horarios. También se aprecia el control remoto intuitivo y la disponibilidad de modos específicos como Eco, Boost o anti-legionela, que aportan tanto eficiencia como seguridad sanitaria.

En el lado contrario, las principales frustraciones suelen estar relacionadas con pérdidas de conexión tras determinadas actualizaciones, integraciones inestables con asistentes de voz como Amazon Alexa o Google Home, y la necesidad de reconfigurar el sistema cuando se cambia de router o de proveedor de internet. Algunos usuarios también consideran limitada la programación horaria disponible en ciertos modelos.

Diferencia clave: Ariston NET vs Ariston NET Pro

Es importante no confundir Ariston NET con Ariston NET Pro. La primera está diseñada para el usuario final y permite controlar remotamente la caldera, bomba de calor o termo, configurar programación inteligente, utilizar funciones de geolocalización, consultar informes energéticos y recibir alertas de averías en tiempo real. Es, en esencia, la capa de control doméstico.

Por su parte, Ariston NET Pro es una plataforma orientada a servicios técnicos e instaladores. Desde ella pueden realizar diagnóstico remoto, consultar el historial de errores, acceder a parámetros internos de funcionamiento y anticipar posibles fallos mediante sistemas de mantenimiento predictivo como Active Care. Además, facilita la reducción de desplazamientos innecesarios al permitir una primera evaluación a distancia. Ambas soluciones pueden operar sobre el mismo equipo conectado, pero cada una responde a perfiles y necesidades distintas.

Modelos donde aparecen más dudas de configuración

Las dudas de configuración suelen aparecer en equipos modernos como la Genus ONE+ WiFi o la Alteas ONE+ Net en el ámbito de calderas, así como en termos eléctricos como el Velis WiFi o el Lydos Hybrid WiFi. En la mayoría de los casos, los problemas no están relacionados con la compatibilidad del equipo, sino con la red doméstica, la configuración del router o el proceso inicial de vinculación.

Beneficios cuando funciona correctamente

Cuando la instalación está bien ejecutada y la red es estable, la aplicación puede contribuir a optimizar el consumo energético hasta en un 25% según datos del fabricante, enviar alertas antes de que se produzcan interrupciones en el suministro de agua caliente sanitaria y permitir una monitorización remota continua si el servicio técnico utiliza NET Pro. En determinados escenarios de uso eficiente, esto puede traducirse en un ahorro económico anual significativo.

Conclusión: no es mala app, pero exige un entorno controlado

La experiencia con Ariston NET depende mucho más de la calidad del router, de una correcta configuración de la banda 2,4 GHz, del modelo exacto del equipo y de la versión del sistema operativo del móvil que del propio generador térmico. En entornos con Wi-Fi estable y configuración adecuada suele cumplir lo prometido; en redes mal ajustadas o tras actualizaciones conflictivas, la experiencia puede volverse frustrante.