Saltar al contenido

Reloj Eterno

Proyectos
(08/11) IoT • Hardware + Software

Descripción & Contexto

Sistema IoT de gestion inteligente de carga: app Android (Kotlin) + firmware ESP32 con histeresis para proteger la bateria del telefono. Hardware + software en un solo proyecto.

Reloj Eterno es un sistema IoT completo que combina una app Android nativa con un microcontrolador ESP32 para gestionar inteligentemente la carga de un telefono. El sistema usa histeresis con dos umbrales configurables para mantener la bateria en una ventana de carga saludable, evitando el deterioro por permanecer al 100%.

Reloj Eterno

Características Clave

  • Pantalla flip clock

    Reloj a pantalla completa con estetica flip clock clara (tarjetas blancas redondeadas con digitos oscuros sobre fondo gris azulado), con anti burn-in.

  • Logica de carga inteligente

    Histeresis con dos umbrales configurables desde la app para no conmutar constantemente.

  • Ajustes en vivo

    Menu de configuracion para IP, umbrales, heartbeat y formato 24h, con estado del ESP32 en tiempo real.

  • Comunicacion WiFi

    La app envia GET /status?battery=NN al ESP32 y recibe respuestas JSON con estado completo.

  • Fail-safe

    Si el ESP32 deja de recibir reportes por mas de 15 min, fuerza la carga por precaucion.

Arquitectura del Sistema

El sistema está estructurado en cuatro capas integradas de hardware y software: * Capa Móvil (Android Nativo - Kotlin): App con interfaz Flip Clock y protección anti burn-in. Lee el nivel de batería real vía BroadcastReceiver (ACTION_BATTERY_CHANGED) y emite un heartbeat periódico cada 60 segundos con el porcentaje exacto. * Capa de Comunicación (WiFi LAN - HTTP REST): La app móvil se comunica directamente con el servidor HTTP embebido en el ESP32 mediante peticiones GET /status?battery=NN y GET /config?corte=NN&arranque=MM. * Capa de Control Embebido (ESP32 - C++): Microcontrolador que ejecuta el algoritmo de histéresis con umbrales configurables persistidos en memoria no volátil (NVS) para sobrevivir a reinicios. * Capa de Potencia & Hardware (MOSFET Low-Side Switch): Conmutación física mediante un transistor MOSFET canal N en el pin GPIO 2 que interrumpe la línea GND del cable USB sin degradar las líneas de datos. * Mecanismo Fail-Safe: Si el ESP32 no recibe reportes del teléfono por más de 15 minutos, fuerza la carga automáticamente (MOSFET en HIGH) por seguridad.

Retos Técnicos & Soluciones

El principal reto fue disenar un sistema de conmutacion seguro para la linea GND del cable USB sin afectar las lineas de datos. Implemente un esquema low-side switch con MOSFET de nivel logico que enciende completamente con los 3.3V del GPIO del ESP32, mas un mecanismo fail-safe que fuerza la carga si pierde comunicacion con la app. Ademas, los umbrales se persisten en NVS del ESP32 para sobrevivir reinicios.

Stack Tecnológico

  • Kotlin
  • ESP32
  • C++ (Arduino)
  • Hardware

Ficha Técnica

Rol
Arquitectura, Diseño y Desarrollo
Tipo
IoT • Hardware + Software
Impacto & Resultados
Sistema completamente funcional que mantiene el telefono en una ventana de carga saludable (40%-70%) de forma autonoma. El fail-safe de 15 minutos garantiza que el telefono nunca se quede sin bateria por un fallo de software.
Aprendizajes
Este proyecto fusiona desarrollo de software movil con electronica e IoT real. Desde la app que lee la bateria hasta el MOSFET que conmuta fisicamente la carga, cada componente esta disenado para ser robusto y seguro. <div