Inicio/Monitores de Energía/Medidor de Energía WiFi con ESP32 y Pantalla OLED: Proyecto DIY para Monitorización Local sin Nube
Monitores de Energía

Medidor de Energía WiFi con ESP32 y Pantalla OLED: Proyecto DIY para Monitorización Local sin Nube

Alex R.Escrito por: Alex R.
Fecha: 2 Jul 2026
Lectura de 10 min
Medidor de Energía WiFi con ESP32 y Pantalla OLED: Proyecto DIY para Monitorización Local sin Nube

La monitorización del consumo eléctrico se ha convertido en una necesidad para hogares inteligentes y eficientes. Sin embargo, la mayoría de soluciones comerciales dependen de servicios en la nube, suscripciones o plataformas cerradas. Este artículo te guiará en la construcción de un medidor de energía WiFi con ESP32 y pantalla OLED, un proyecto DIY que te permitirá visualizar en tiempo real el consumo eléctrico de forma local, sin enviar datos a internet. Exploraremos desde la selección de componentes hasta la programación y calibración, ofreciendo una alternativa open source, económica y respetuosa con la privacidad.

Fundamentos del Proyecto: Medición de Corriente Alterna con ESP32

El corazón del proyecto es el ESP32, un microcontrolador con WiFi y Bluetooth integrados, ideal para aplicaciones IoT. Para medir el consumo eléctrico, necesitamos un sensor de corriente que pueda acoplarse a un cable de corriente alterna (AC) sin intervenir en el circuito. El sensor SCT-013 (de tipo toroidal) es la opción más común: se coloca alrededor de uno de los conductores (fase o neutro) y genera una señal de voltaje proporcional a la corriente que circula. Esta señal es alterna y de baja amplitud, por lo que debe ser acondicionada antes de ser leída por el ADC (convertidor analógico-digital) del ESP32. El acondicionamiento consiste en un circuito de polarización que eleva la señal a un nivel de 0-3.3V (rango del ADC) y un filtro paso bajo para eliminar ruido de alta frecuencia. Además, para medir la potencia activa (vatios), necesitamos conocer el voltaje de la red. Aunque podríamos asumir un valor fijo (por ejemplo, 230V en Europa), para mayor precisión se recomienda medir el voltaje real con un transformador de tensión o un módulo sensor de voltaje AC (como el ZMPT101B). Este proyecto se centrará en la medición de corriente y potencia aparente, asumiendo un voltaje nominal, aunque se indicará cómo integrar la medición de voltaje para una mayor exactitud.

La pantalla OLED de 0.96 pulgadas (128x64 píxeles) con controlador SSD1306 se comunica por I2C, ocupando solo dos pines del ESP32. Proporciona una interfaz visual clara para mostrar en tiempo real la corriente (A), potencia (W), energía acumulada (kWh) y otras métricas. La comunicación WiFi permite acceder a los datos desde cualquier dispositivo de la red local mediante una interfaz web simple alojada en el propio ESP32. De esta forma, no necesitas internet ni cuentas de terceros: todo queda en tu hogar.

Componentes Necesarios y Presupuesto

A continuación se detalla la lista de componentes necesarios para construir el medidor. La mayoría son fáciles de conseguir en tiendas de electrónica o plataformas online. El coste total ronda los 20-30 euros, muy inferior a soluciones comerciales equivalentes.

ComponenteEspecificaciónCoste Aprox.
ESP32NodeMCU-32S o similar8-12 €
Sensor SCT-013100A:50mA, con jack de 3.5mm6-8 €
Pantalla OLED0.96", 128x64, I2C (SSD1306)4-6 €
Resistencias2x 10kΩ, 1x 100kΩ, 1x 1kΩ0.5 €
Condensador10µF electrolítico0.2 €
Diodo Zener3.3V, 1N4728A0.2 €
Fuente de alimentación5V DC, 1A (USB o adaptador)3-5 €
Cables, protoboard, caja-3-5 €

El sensor SCT-013 es la opción más segura para principiantes, ya que no requiere contacto directo con el cable de alta tensión. Existen variantes con salida de voltaje (como el SCT-013-030) que simplifican el circuito de acondicionamiento, pero el modelo de corriente (100A:50mA) es más versátil y preciso. Si optas por el de voltaje, el circuito se reduce a un divisor de tensión.

Circuito de Acondicionamiento de Señal

La señal de salida del SCT-013 (corriente) es una corriente alterna de hasta 50mA (para 100A en el primario). Para convertirla en voltaje y adaptarla al ADC del ESP32, necesitamos una resistencia de carga (burden resistor) y un circuito de polarización. El esquema típico utiliza una resistencia de 100Ω (para 50mA obtenemos 5V pico, pero debemos limitar a 3.3V). Sin embargo, para mayor seguridad y precisión, se recomienda usar una resistencia de 33Ω (dando 1.65V pico a 50mA) y luego amplificar si es necesario. En este proyecto usaremos una resistencia de 22Ω para obtener aproximadamente 1.1V pico a 50mA, lo que deja margen para picos de corriente. Luego, la señal se polariza a 1.65V (mitad de 3.3V) mediante un divisor de tensión con dos resistencias de 10kΩ (o usando una referencia de voltaje). El condensador de 10µF en paralelo con la resistencia de carga filtra el componente DC y estabiliza la señal. Finalmente, un diodo Zener de 3.3V en paralelo protege el pin del ESP32 contra sobretensiones. El esquema completo incluye: el sensor SCT-013 conectado a la resistencia de carga (22Ω) y al condensador; el divisor de tensión (dos resistencias de 10kΩ) conectado a 3.3V y GND, con el punto medio conectado a la señal acondicionada; y el diodo Zener entre la señal y GND. La salida se conecta al pin ADC del ESP32 (por ejemplo, GPIO34).

Advertencia de SeguridadEl circuito trabaja con voltajes de red (230V AC). Aunque el sensor es aislante, asegúrate de que todas las conexiones de baja tensión estén bien aisladas y no haya riesgo de contacto. No manipules el circuito mientras esté conectado a la red. Si no tienes experiencia con electricidad, pide ayuda a un profesional.

Programación del ESP32: Firmware con Arduino IDE

El firmware se desarrolla en el entorno Arduino IDE, con las librerías adecuadas. Necesitarás instalar el soporte para ESP32 (siguiendo la guía oficial) y las librerías: EmonLib (para cálculos de potencia), Adafruit SSD1306 y Adafruit GFX (para la pantalla OLED), y WiFi y WebServer (para la interfaz web). El código se estructura en varias partes: configuración de WiFi, inicialización de pantalla, lectura del ADC, cálculo de RMS, y servidor web.

Cálculo de Corriente y Potencia

La librería EmonLib simplifica el cálculo de corriente RMS y potencia activa. Toma un número de muestras (por ejemplo, 1480 muestras en un periodo de 1 segundo) y calcula la raíz cuadrática media. Para la potencia activa, necesitas la tensión de red (asumimos 230V) y el factor de potencia (asumimos 1 para cargas resistivas). Si mides tensión real, puedes usar un segundo ADC. El código básico incluye: emon1.current(A0, 22.0); (pin y calibración) y luego en el bucle: double Irms = emon1.calcIrms(1480); y double Potencia = Irms * 230.0;. La calibración (22.0) se ajusta según la resistencia de carga y la relación del sensor.

Visualización en Pantalla OLED

La pantalla OLED muestra en tiempo real: corriente (A), potencia (W), energía acumulada (kWh) y dirección IP local. Se actualiza cada segundo. El código usa la librería Adafruit: display.clearDisplay(); display.setCursor(0,0); display.println('Corriente: ' + String(Irms) + ' A'); etc. La energía acumulada se calcula integrando la potencia a lo largo del tiempo (sumando cada segundo: energia += Potencia / 3600.0 / 1000.0;).

Servidor Web Local

El ESP32 actúa como servidor web, sirviendo una página HTML con los datos en tiempo real. Se puede acceder desde cualquier navegador en la red local. La página se actualiza automáticamente mediante AJAX o refresco periódico. El código del servidor es sencillo: server.on('/', handleRoot); donde handleRoot genera el HTML con los valores. Para datos en tiempo real, se puede usar una ruta /data que devuelva JSON. El diseño de la página web puede ser minimalista, usando Tailwind CSS si se desea, pero al estar en el ESP32, el espacio es limitado. Se recomienda un HTML básico con estilos inline.

Consejo de OptimizaciónPara ahorrar memoria, puedes comprimir el HTML usando cadenas en PROGMEM o generar la página dinámicamente con concatenación de strings. También puedes usar WebSockets para actualizaciones en tiempo real sin recargar la página.

Calibración y Precisión

La precisión del medidor depende de la calibración del sensor y del circuito. El factor de calibración en EmonLib (actualmente 22.0) se ajusta experimentalmente: conecta una carga conocida (por ejemplo, una bombilla de 100W) y ajusta el valor hasta que la lectura coincida. También puedes usar un multímetro de pinza como referencia. La precisión típica es del 2-5%, suficiente para monitorización doméstica. Para mejorar la precisión, mide el voltaje real con un ZMPT101B y ajusta el factor de potencia para cargas no resistivas (motores, fuentes conmutadas).

Comparativa: DIY vs Soluciones Comerciales

CaracterísticaProyecto DIY ESP32Shelly EMTP-Link Kasa KP115
Precio20-30 €40-50 €15-20 €
Monitorización localSí (sin nube)Requiere nubeSolo nube
Pantalla integradaSí (OLED)NoNo
PersonalizaciónTotal (open source)LimitadaNula
InstalaciónMedia (DIY)FácilMuy fácil

El proyecto DIY gana en privacidad, coste y personalización, pero requiere conocimientos técnicos. Las soluciones comerciales son plug-and-play pero dependen de la nube y ofrecen menos flexibilidad.

Preguntas Frecuentes (FAQ)

¿Es seguro este proyecto para un principiante?
El sensor SCT-013 es aislante y no requiere contacto eléctrico con el cable de alta tensión, por lo que la parte de alta tensión es segura si se maneja con cuidado. Sin embargo, el circuito de acondicionamiento y el ESP32 operan a baja tensión. Si no tienes experiencia, es recomendable que un electricista supervise la instalación del sensor en el cuadro eléctrico. El resto del montaje (protoboard, conexiones) es seguro si se sigue el esquema.
¿Puedo medir varios circuitos con un solo ESP32?
Sí, el ESP32 tiene varios canales ADC. Puedes conectar hasta 3 o 4 sensores SCT-013 (cada uno con su circuito de acondicionamiento) a diferentes pines ADC. Eso sí, ten en cuenta que el ADC del ESP32 no es lineal en todo el rango, por lo que necesitarás calibrar cada canal individualmente. Además, la pantalla OLED solo muestra un canal a la vez (o puedes hacer un bucle). Para una monitorización multicanal, es mejor usar una pantalla más grande o la interfaz web.
¿Qué precisión tiene el medidor?
Con una calibración cuidadosa, la precisión puede estar entre el 2% y el 5% para corrientes superiores a 0.5A. Por debajo de ese umbral, el error aumenta debido al ruido y la resolución del ADC. Para mejorar la precisión a bajas corrientes, puedes usar un amplificador operacional o un sensor de corriente de mayor sensibilidad. La medición de potencia activa es precisa solo para cargas resistivas (factor de potencia unitario). Para cargas reactivas, necesitas medir el voltaje y el desfase.
¿Puedo integrar este medidor con Home Assistant?
Sí, es posible. Puedes modificar el firmware para que publique los datos vía MQTT, y luego en Home Assistant crear sensores que se suscriban a esos tópicos. También puedes usar la API REST del ESP32 para que Home Assistant haga polling. Esta integración permite visualizar los datos en los paneles de control de Home Assistant junto con otros dispositivos.

Conclusión: Tu Monitor de Energía Local y Personalizable

Construir tu propio medidor de energía WiFi con ESP32 y pantalla OLED es un proyecto gratificante que te proporciona control total sobre tus datos de consumo eléctrico. Al evitar la nube, garantizas tu privacidad y evitas dependencias externas. Con un coste reducido y componentes accesibles, obtienes un dispositivo funcional que puedes ampliar y modificar a tu gusto. Además, el conocimiento adquirido sobre electrónica y programación es valioso para futuros proyectos DIY.

Recomendación FinalSi buscas una solución inmediata y no te importa la dependencia de la nube, un dispositivo comercial como el Shelly EM puede ser más conveniente. Pero si valoras la privacidad, la personalización y el aprendizaje, este proyecto DIY es la mejor opción. Anímate a construirlo y contribuye a la comunidad compartiendo tus mejoras.
TRANSPARENCIA INFORMATIVA

Este análisis técnico es independiente. No recibimos pagos de fabricantes para alterar valoraciones. Si realizas una compra a través de enlaces en este sitio, podríamos percibir una comisión de afiliación que ayuda a mantener el servidor activo, sin coste extra para ti.