SensorManager

Descripción

El SensorManager es la clase central responsable de la gestión de todos los sensores del sistema de monitoreo agrícola. Proporciona una interfaz unificada para la adquisición, procesamiento y almacenamiento de datos sensoriales.

Características Principales

  • Gestión Centralizada: Control unificado de todos los sensores

  • Buffer Circular: Almacenamiento eficiente de muestras atmosféricas

  • Integración GPS: Asociación automática de coordenadas y tiempo

  • VoltageReader Integrado: Lectura precisa de voltaje del sistema

  • Validación de Datos: Verificación de rangos y detección de errores

Componentes Integrados

  • DHT Sensor: Temperatura y humedad ambiental

  • GPS Module: Geolocalización y sincronización temporal

  • VoltageReader: Monitoreo de energía del sistema

  • Sensores de Suelo: NPK, pH, EC, temperatura y humedad

Ejemplo de Uso

#include "sensor_manager.h"

SensorManager sensorManager;

void setup() {
    sensorManager.begin();
}

void loop() {
    // Actualizar sensores atmosféricos
    sensorManager.update();

    // Leer todos los sensores
    sensorManager.readGroundGpsSensors();

    // Obtener información de debug
    String debugInfo = sensorManager.getVoltageReaderDebugInfo();
    Serial.println(debugInfo);
}

Métodos Principales

begin()

Inicializa todos los sensores y la comunicación.

void begin();

update()

Actualiza las lecturas de sensores atmosféricos según el intervalo configurado.

void update();

readGroundGpsSensors()

Lee y almacena datos de sensores de suelo, energía y GPS.

void readGroundGpsSensors();

readSensorsAtmospheric()

Prepara el buffer de muestras atmosféricas para transmisión.

void readSensorsAtmospheric();

getVoltageReaderDebugInfo()

Obtiene información detallada del estado del VoltageReader.

String getVoltageReaderDebugInfo();

calibrateVoltageReader()

Realiza calibración del VoltageReader.

void calibrateVoltageReader(float expectedMin, float expectedMax);

Estructuras de Datos

atmosSamples[]

Buffer circular de muestras atmosféricas.

Protocol::AtmosphericSample atmosSamples[NUMERO_MUESTRAS_ATMOSFERICAS];

groundData

Última muestra de sensores de suelo.

Protocol::GroundSensor groundData;

gpsData

Última muestra de datos GPS.

Protocol::GpsSensor gpsData;

energyData

Última muestra de datos energéticos.

Protocol::EnergyData energyData;

Configuración

El SensorManager utiliza las siguientes configuraciones desde config.h:

  • SAMPLEINTERVAL: Intervalo de muestreo en milisegundos

  • NUMERO_MUESTRAS_ATMOSFERICAS: Tamaño del buffer circular

  • PIN_SENS_DHTT: Pin del sensor DHT

  • GPS_RX_UART2: Pin RX del GPS (UART2 HardwareSerial)

  • GPS_TX_UART2: Pin TX del GPS (UART2 HardwareSerial)

Optimizaciones

  • Sleep Inteligente: Reduce consumo entre lecturas

  • Validación de Rangos: Detecta errores de sensores

  • Buffer Eficiente: Evita desbordamiento de memoria

  • Transmisión Selectiva: Solo envía datos críticos

Notas de Implementación

  • La clase sigue el principio de Single Responsibility

  • Utiliza Dependency Injection para VoltageReader

  • Implementa Error Handling robusto

  • Proporciona Debug Information detallada

Ver también