Nuestro Journey

De la idea a 99.3% accuracy en 72 horas — hitos, bugs, decisiones y lo que aprendimos en el camino.


✅ Completado

Arquitectura y diseño

  • Definición de arquitectura MCU/MPU y separación deliberada de responsabilidades
  • Diseño CAD del enclosure con todos los componentes posicionados — listo para impresión 3D

Calibración de sensores — Día 2

  • Diagnóstico y fix DC vs AC coupling en ACS712-30A
  • Factor empírico medido: 10.52 mV/A (divisor de voltaje a 3.3V)
  • Sustitución de cable de bajo calibre que generaba caídas de voltaje internas
  • Validación ZMPT101B: 60.02 Hz, crest factor 1.4445

Captura de datos reales — Día 2

  • Dataset de voltaje: CSVs desde PicoScope 7, 6279.8 Hz, ventana 200 ms
  • Dataset de corriente: 48 ventanas reales vía Monitor de Arduino App Lab
  • Valores medidos: rawRMS 0.00 / 42.81 / 87.60 (sin carga / 950 W / 1900 W)

Pipeline de datos e IA

  • tecovolt_synth.py, tecovolt_pipeline_v2.py, tecovolt_temp_synth.py, tecovolt_demand_synth.py
  • Custom DSP blocks: tecovolt_block (6 features + THD) y tecotemp_block
  • Fix bug crítico: fs=6279.8fs=1000.0 en dsp.py

Iteraciones del modelo A (voltaje)

  • v1: 94.5% — sintético puro
  • v2: 63.7% — dataset mixto, bug fs detectado
  • v3: 63% — THD agregado, bug aún presente
  • v4: 99.3%, AUC=1.00 — bug corregido + separación agresiva en synth

Software e integración

  • Lógica de predicción compuesta en MPU: deque(maxlen=10), umbrales por patrón acumulado
  • Script AWG tecovolt_demo_awg.py: secuencia automatizada de ~60 s para el demo
  • Twilio WhatsApp API configurada en el MPU
  • GitHub Actions para gestión automática de labels

Firmware

  • tecovolt_voltage_daq.ino: 200 samples @ 1 kHz, formato label,s0..s199
  • tecovolt_daq.ino: ACS712 con delay(600) y output CSV limpio
  • Fix Monitor.readStringUntil: carácter a carácter para \r\n o \r
  • Fix dsp-server.py: guiones en parámetros JSON → underscores

🔄 En curso

  • Deployment de modelos cuantizados INT8 en el STM32U585
  • Integración MCU ↔ MPU vía RouterBridge
  • Pitch final para el jurado Qualcomm

⬜ Pendiente

  • Dashboard Flask funcional en el MPU
  • Logger SQLite de eventos históricos
  • Pruebas end-to-end: sensor → modelo → relay → WhatsApp
  • Optimización final vía Qualcomm AI Hub con datos reales
  • Impresión 3D del enclosure

Archivos generados

Archivo Descripción
tecovolt_pipeline_v2.py Pipeline PicoScope 2208B → Edge Impulse. 6 features, augmentation ×50
dsp.py DSP block custom — 6 features + THD, fs=1000 Hz
dsp-server.py Servidor HTTP para EI con fix scale-axes → underscore
tecovolt_demand_synth.py Generador sintético de demanda anclado a valores reales
tecovolt_capture.py Captura Serial → CSV para modelo de demanda
tecovolt_daq.ino Sketch ACS712 con delay(600) y output CSV limpio
tecovolt_voltage_daq.ino Sketch ZMPT101B, formato label,s0..s199
ei_voltage_train_v3.csv Dataset voltaje: 1440 train, 6 clases
ei_voltage_test_v3.csv Test set voltaje: 360 muestras reales
demand_train_final.csv Dataset demanda: 638 train (600 sintéticos + 38 reales)
tecovolt_demo_awg.py Automatización AWG PicoScope para demo (~60 s)

Gestión del proyecto

Label Área
hardware Ensamblaje físico, circuitos, enclosure
firmware Código MCU (C/C++), Zephyr RTOS
software Código MPU (Python), Flask, SQLite
edge-ai Modelos, Edge Impulse, Qualcomm AI Hub
integración Pruebas end-to-end, comunicación MCU ↔ MPU

Ver el repositorio completo en GitHub →


Subir

Slop as a Service (SAAS) — Tecovolt · Qualcomm Sustainable Power Cities · Genius Arena 2026
Bini Vázquez · Diego Pérez Rossi · Jocelyn Velarde Barrón · Armando Mac Beath