Módulo 8

Proyecto: datalogger de sensores en tarjeta SD

Almacenamiento y Manejo de Datos

ESP32 Mecatrónica IoT UNAM

Proyecto: Datalogger Industrial Completo

Un datalogger es un sistema de adquisición de datos que registra información de sensores a lo largo del tiempo. En aplicaciones de mecatrónica industrial, estos sistemas son fundamentales para el monitoreo de procesos, mantenimiento predictivo y análisis de eficiencia.

Aplicaciones Industriales Reales
Manufactura
  • Temperatura de moldes
  • Velocidad de líneas
  • Vibración de motores
  • Consumo energético
Agroalimentaria
  • Condiciones de crecimiento
  • Cadena de frío
  • pH y conductividad
  • Control de calidad

Explicación Técnica Detallada

ESP32 y IoT

El ESP32 es un microcontrolador de bajo costo con capacidades WiFi y Bluetooth integradas, convirtiéndolo en la opción ideal para proyectos de Internet de las Cosas (IoT). Su arquitectura dual-core permite manejar múltiples tareas simultáneamente: adquisición de datos de sensores, comunicación inalámbrica y almacenamiento local.

Ventajas para Dataloggers:
  • Procesamiento dual-core para multitarea
  • Conectividad WiFi/Bluetooth integrada
  • Bajo consumo energético
  • Amplia gama de GPIOs configurables

Interfaz SPI y SD

El ESP32 incorpora una interfaz SPI (Serial Peripheral Interface) de alta velocidad para comunicación con tarjetas SD. Esta interfaz permite transferencias de datos rápidas y eficientes.

Conexiones SPI para SD:
MOSIGPIO23Datos ESP32 → SD
MISOGPIO19Datos SD → ESP32
CLKGPIO18Señal de reloj
CSGPIO5Selección de chip
Código Base para Inicialización SD
#include <SD.h>
#include <SPI.h>

// Definición de pines para interfaz SPI
#define CS_PIN 5
#define MOSI_PIN 23
#define MISO_PIN 19
#define CLK_PIN 18

File dataFile;

void setup() {
    Serial.begin(115200);
    
    // Inicializar SPI con pines personalizados
    SPI.begin(CLK_PIN, MISO_PIN, MOSI_PIN, CS_PIN);
    
    // Inicializar tarjeta SD
    if (!SD.begin(CS_PIN)) {
        Serial.println("❌ Error: Fallo al montar la tarjeta SD");
        Serial.println("Verificar:");
        Serial.println("- Conexiones SPI correctas");
        Serial.println("- Tarjeta SD formateada (FAT32)");
        Serial.println("- Alimentación suficiente (3.3V)");
        return;
    }
    
    Serial.println("✅ Tarjeta SD inicializada correctamente");
    
    // Crear archivo de datos con timestamp
    String filename = "/datalog_" + String(millis()) + ".txt";
    dataFile = SD.open(filename, FILE_WRITE);
    
    if (!dataFile) {
        Serial.println("❌ Error al crear archivo de datos");
        return;
    }
    
    // Escribir encabezado del archivo
    dataFile.println("timestamp,sensor_id,value,unit");
    dataFile.println("# ESP32 Datalogger - Iniciado: " + String(millis()));
    dataFile.close();
    
    Serial.println("📁 Archivo de datos creado: " + filename);
}

void loop() {
    // Ejemplo de escritura de datos
    logSensorData("DHT22", 25.6, "°C");
    delay(5000);
}

void logSensorData(String sensor, float value, String unit) {
    dataFile = SD.open("/datalog.txt", FILE_APPEND);
    if (dataFile) {
        String logEntry = String(millis()) + "," + sensor + "," + 
                         String(value, 2) + "," + unit;
        dataFile.println(logEntry);
        dataFile.close();
        Serial.println("📝 Datos registrados: " + logEntry);
    } else {
        Serial.println("❌ Error al abrir archivo para escritura");
    }
}
Análisis del Código: Este ejemplo muestra la inicialización completa de la interfaz SD, incluyendo verificaciones de error, creación de archivos con timestamps únicos y funciones de logging estructurado para proyectos industriales.

Ejercicios Prácticos Visuales

Implementa sistemas de datalogger con diferentes sensores industriales

Datalogger de Temperatura y Humedad Industrial

Intermedio 60-90 min DHT11/DHT22

Objetivo: Desarrollar un sistema de monitoreo ambiental que registre temperatura y humedad con intervalos configurables y alertas por umbral.

Materiales Necesarios:
  • ESP32 DevKit v1
  • Sensor DHT11 o DHT22
  • Tarjeta microSD (8-32GB, FAT32)
  • Módulo lector SD
  • Resistor pull-up 10kΩ
  • Protoboard y cables
Especificaciones Técnicas:
  • Precisión: ±2°C, ±5% HR
  • Rango: -40~80°C, 0~100% HR
  • Frecuencia: 1-60 segundos
  • Formato: CSV timestampado
  • Alertas: Configurable por MQTT

Datalogger de Intensidad Lumínica

Intermedio 60-90 min LDR + ADC

Objetivo: Construir un luxómetro digital que registre variaciones de luz ambiente con calibración automática y detección de patrones diurnos/nocturnos.

Componentes:
  • ESP32 + Módulo SD
  • Fotoresistencia LDR GL5528
  • Resistor 10kΩ (divisor voltaje)
  • Capacitor 100nF (filtro)
  • LED indicador de estado
Características:
  • Resolución: 12-bit ADC (4096 niveles)
  • Rango: 0.1 - 100,000 lux
  • Sampling: 1Hz - 10Hz
  • Análisis: Trending automático

Sistema de Monitoreo de Vibraciones

Avanzado 90-120 min MPU6050 + FFT

Objetivo: Implementar un sistema de diagnóstico predictivo industrial que detecte patrones anómalos de vibración en maquinaria rotativa usando análisis FFT.

Hardware Especializado:
  • ESP32 (240MHz dual-core)
  • Acelerómetro MPU6050/MPU9250
  • SD Card alta velocidad (Class 10)
  • Filtros analógicos pasa-bajos
  • Sistema de montaje anti-vibración
Algoritmos Avanzados:
  • Sampling: 1kHz - 8kHz
  • Análisis: FFT 1024 puntos
  • Detección: Machine Learning
  • Alertas: Threshold adaptativo
  • Protocolo: MQTT/InfluxDB
Nota: Este ejercicio requiere conocimientos de procesamiento de señales y análisis espectral. Se recomienda completar primero los ejercicios anteriores.

Proyecto Aplicado: Sistema Industrial

Desarrollo completo de un sistema de monitoreo para maquinaria industrial

Sistema de Monitoreo Predictivo Multi-Sensor

Implementación de un datalogger industrial completo que integra múltiples sensores para monitoreo de condiciones operativas en tiempo real, con capacidades de análisis predictivo y alertas automáticas.

🔧 Parámetros Monitoreados:
  • Temperatura de rodamientos (±0.1°C)
  • Vibración espectral (FFT)
  • Corriente eléctrica (Clamp meter)
  • Humedad ambiente y condensación
  • Presión de sistemas hidráulicos
📊 Funcionalidades Avanzadas:
  • Dashboard web responsive
  • Alertas SMS/Email automáticas
  • Análisis de tendencias ML
  • Reportes PDF programados
  • Integración con sistemas ERP
Lista de Materiales
ESP32 WROOM-32 $15
DS18B20 x4 $20
MPU6050 $12
SD Card 32GB $8
Total estimado: $85

Metodología de Implementación

1
Diseño del Sistema

Arquitectura de sensores, protocolos de comunicación y estructura de datos optimizada para industrial IoT.

2
Desarrollo Firmware

Programación modular con FreeRTOS, manejo de interrupciones y algoritmos de filtrado digital avanzados.

3
Validación & Deploy

Testing en ambiente industrial, calibración de sensores y documentación técnica completa.

Evaluación y Troubleshooting

Diagnóstico de problemas comunes y criterios de evaluación profesional

Problemas Comunes y Soluciones

Fallo en inicialización SD

Síntomas: "Card Mount Failed", no detecta tarjeta

Causas:

  • Conexiones SPI incorrectas o flojas
  • Tarjeta SD no formateada en FAT32
  • Voltaje de alimentación insuficiente (<3.2V)
  • Tarjeta SD dañada o de baja calidad

Solución:

// Verificación diagnóstica
if (!SD.begin(CS_PIN)) {
    Serial.println("Ejecutando diagnóstico...");
    // Test voltaje
    Serial.println("Voltaje 3.3V: " + String(analogRead(A0) * 3.3/4095));
    // Test conectividad SPI
    SPI.beginTransaction(SPISettings(400000, MSBFIRST, SPI_MODE0));
}
Lectura errática de sensores

Síntomas: Valores fuera de rango, ruido excesivo

Soluciones implementadas:

  • Filtrado digital Kalman para acelerómetros
  • Promediado móvil para sensores térmicos
  • Detección de outliers por Z-score
  • Calibración automática por software

Criterios de Evaluación

📋 Aspectos Técnicos (40%)
10% Implementación correcta del protocolo SPI
15% Manejo de errores y excepciones
15% Optimización de consumo energético
🎯 Funcionalidad (35%)
20% Precisión y confiabilidad de datos
15% Interfaz de usuario intuitiva
📚 Documentación (25%)
15% Comentarios en código y README
10% Esquemas y diagramas técnicos