Skip to main content

Firmware ESP32 para monitoreo solar y energía

GizanTech EngineeringEquipo de Firmware IndustrialUpdated 15 de junio de 2026

El monitoreo solar falla en campo por razones triviales: un brownout por nubosidad corrompe la flash a mitad de escritura, un error de CRC de Modbus se registra como un string de 0V, o el inversor cambia los mapas de registros en una actualización de firmware y tu panel se queda en silencio en cero. Escribimos firmware ESP32/ESP32-S3 que trata cada lectura como sospechosa, cada enlace como intermitente y cada riel de alimentación como a punto de caer.

Challenges specific to Energy & Solar

  • Los brownouts corrompen la flash a mitad de escritura

    Cuando las nubes reducen la salida PV y el controlador cae, el ESP32 sufre un brownout justo mientras confirma un registro de log, dejando una escritura rota que inutiliza el sistema de archivos.

  • Errores de CRC de Modbus registrados como ceros reales

    Un tendido RS-485 ruidoso entre inversor y controlador produce fallos de CRC que el firmware ingenuo registra como 0A / 0V, simulando un string muerto y disparando falsas alarmas de descarga nocturna.

  • Los mapas de registros del inversor cambian entre firmwares

    Los fabricantes reasignan en silencio los holding registers entre revisiones de firmware del inversor, así que una dirección de SoC o estado fija empieza a devolver el valor escalado incorrecto sin ninguna bandera de error.

  • El SoC de la batería deriva sin recalibración

    El conteo de culombios en un banco de plomo-ácido o LFP acumula horas de error por semana a menos que el firmware reancle el SoC en la meseta de OCV de flotación/reposo que reporta el controlador.

  • Las brechas de backhaul pierden la telemetría nocturna

    Los sitios solares remotos sobre celular o LoRa pierden conectividad durante horas, y el firmware que publica-y-olvida descarta justo la ventana de agotamiento de batería que los operadores necesitan para diagnosticar.

  • El calor degrada el nodo antes que al arreglo

    Un gabinete de caja combinadora alcanza 70C en verano, llevando al ESP32 a throttling térmico y deriva de reloj que sesga las marcas de tiempo de muestreo y la asociación Wi-Fi justo cuando la carga es máxima.

How GizanTech solves them

  1. Registro seguro ante pérdida de energía. 1. Búfer circular de solo anexado en una partición LittleFS con nivelación de desgaste, con un CRC por registro y el detector de brownout (BOD) armado, de modo que una escritura rota se detecta y descarta al arrancar, sin inutilizar nunca el volumen.
  2. Adquisición Modbus RTU validada. 2. Lecturas Modbus RTU verificadas por CRC con reintento y cuarentena: una trama fallida produce una bandera NULL/obsoleta, nunca un 0 fabricado, y los factores de escala por registro viven en configuración versionada, no en el código.
  3. Protección por versión de mapa de registros. 3. Sondeamos un registro de identidad/firmware del inversor al conectar y seleccionamos el perfil de mapa de registros correspondiente, alarmando ante un mapa desconocido en vez de leer mal en silencio el SoC o las palabras de estado.
  4. Estimación de SoC anclada en OCV. 4. Conteo de culombios fusionado con reanclaje por tensión de reposo (OCV) en la meseta de flotación, con curvas específicas de química para LFP y plomo-ácido, manteniendo acotado el error de SoC durante semanas sin supervisión.
  5. Backhaul de almacenar y reenviar. 5. Almacenar y reenviar con marca de tiempo sobre MQTT con QoS 1 y backlog en flash, de modo que un corte celular/LoRa de varias horas reproduzca toda la curva de agotamiento nocturno cuando el enlace regresa.
  6. Planificación consciente del calor y OTA. 6. BOM de temperatura industrial, trabajo Wi-Fi/TLS condicionado a la temperatura interna y OTA A/B firmado con rollback, para que un nodo remoto de caja combinadora se actualice de forma segura y nunca caiga en throttling térmico hacia una flash defectuosa.
ParámetroFuenteFrecuencia de muestreoAcción segura fuera de rangoNecesidad de retención de datos
Tensión / corriente de string PVADC analógico (divisor + shunt) o registro Modbus del controlador1 HzMarcar string como fallido, mantener último valor válido, generar alarma de bajo/nulo rendimiento; nunca registrar un 0 fabricado1 s en bruto rodando 48 h, agregados de 1 min durante 2 años para tendencia de degradación
Estado de carga MPPTHolding register Modbus del controlador (enum bulk/absorb/float/fault)0.2 HzCuarentena ante fallo de CRC / enum desconocido, conservar estado previo, alarmar ante atasco en bulkEventos de cambio de estado conservados 5 años; auditoría completa de transiciones de flotación
SoC de la bateríaConteo de culombios fusionado con OCV en reposo; verificación cruzada con registro del controlador0.5 Hz interno, reanclaje en flotaciónLimitar a 0-100%, marcar si la deriva frente a OCV excede la banda, enclavar corte por SoC bajoSoC de 1 min durante 2 años; eventos de ventana de agotamiento a frecuencia completa
Estado del inversor / salida ACModbus RTU del inversor (palabra de estado, kW, código de fallo) sobre RS-4850.2 HzProtección por versión de mapa; ante bit de red/fallo, alarmar de inmediato y capturar el búfer previo al falloCódigos de fallo + búfer circular de 60 s previo al fallo conservados 5 años
Temperatura del gabinete / disipadorSensor I2C/1-Wire dentro de la caja combinadora0.1 HzAnte >70C, reducir el ciclo de trabajo del nodo, posponer OTA, alarmar antes del throttling1 min durante 1 año para análisis de correlación térmica
Parámetros de monitoreo solar/batería: fuente de adquisición, frecuencia, acción segura fuera de rango y retención

Frequently asked questions

¿Qué controladores de carga e inversores solares pueden integrar?

Cualquier dispositivo que exponga Modbus RTU/TCP o telemetría analógica: Victron, EPEVER, Morningstar, SMA, Growatt y similares. Construimos un perfil de mapa de registros versionado por modelo para que las actualizaciones de firmware que reasignan registros no rompan el monitoreo en silencio.

¿Cómo mantienen preciso el SoC de la batería sin un BMS dedicado?

Fusionamos el conteo de culombios con el reanclaje por tensión de circuito abierto en la meseta de reposo/flotación usando curvas específicas de química para LFP y plomo-ácido. Eso acota la deriva acumulada que la integración pura de corriente acumula durante semanas de operación sin supervisión.

¿Qué pasa con los datos cuando un sitio remoto pierde conectividad?

La telemetría se marca con tiempo y se escribe en un backlog en flash, y luego se reproduce sobre MQTT QoS 1 cuando regresa el enlace celular o LoRa. La ventana de agotamiento nocturno de la batería se preserva a resolución completa en vez de descartarse ante un fallo de publicación.

¿Un brownout por una caída en día nublado corromperá el registrador?

No. Usamos un búfer circular de solo anexado, con CRC por registro, sobre una partición con nivelación de desgaste y el detector de brownout armado, de modo que una escritura interrumpida por una caída de energía se detecta y descarta al arrancar en vez de corromper el sistema de archivos.

¿Puede el firmware actualizarse de forma segura en un arreglo remoto sin supervisión?

Sí. Enviamos OTA A/B firmado con rollback automático, y la actualización está condicionada a la temperatura del gabinete y la salud del enlace, así que un nodo de caja combinadora a 70C nunca flashea durante un throttling térmico o una conexión marginal.