Primeros pasos con ESP32


El famoso fabricante aleman AZDelivery en efecto nos pone disponible el ESP32 ESP-WROOM-32 NodeMCU Modulo WiFi + Bluetooth Dev Kit C Placa de Desarrollo 2.4 GHz Dual Core con Chip CP2102 , lo cual para muchos expertos es el sucesor del ESP8266 a un precio muy parecido ( unos 10€ en Amazon)

Este módulo AZ-Delivery , desarrollado por la empresa Espressif tiene el potente Microcontrolador ESP32 instalado siendo por tanto ideal para prototipos rápidos ya que esta placa de desarrollo ESP32 permite la dinámica creación de prototipos con una sencilla programación a través de un script Lua o en la construcción compatible con Arduino-IDE y Breadboard. Integra funciones Wi-Fi y Bluetooth.

Destaca además el consumo ultra bajo de energía ideal para poderlo alimentarlo con baterías. Asimismo cuenta con chips Bluetooth Wi-Fi de modo dual de 2,4 GHz y TSMC, así como tecnología de bajo consumo de 40 nm.

Esta versión tiene 38 pines y ofrece más funciones que un módulo de 30 pines y es más pequeño y más conveniente de usar.

De igual manera que en el modelo predecesor ESP8266, la funcionalidad WLAN está implementada directamente en el SoC, pero con funcionalidad Bluetooth adicional (incl. BLE).


El procesador ESP32 es mucho más potente que el ESP8266 pues combina una CPU con 2 núcleos Tensilica LX6, con una frecuencia de hasta 240 MHz, y 512 Kilobytes de SRAM en un único chip microcontrolador. Además, integra una unidad de radio para WLAN (según 802.11bgn) y Bluetooth (Classic y LE) , esta conectividad que por cierto no posee el ESP8266.

La función WLAN soporta todos los métodos de encriptación habituales, como WPA2. También puede actuar en la WLAN como punto de acceso o Sniffer en modo pasivo.

A través de los 32 pines están disponibles, entre otros, UART, I2C, SPI, DAC, ADC (12 bits) y todos los pines GPIO pueden utilizarse como entrada o salida.

Información Técnica

Voltaje de alimentación5V
Voltaje de entrada / salida3.3V
Corriente de Funcionamientomin. 500mA
SoCESP32-WROOM 32
Frecuencia de Reloj80MHz / 240MHz
RAM512kB
Memoria Flash externa4MB
Pines I / O34
InterfacesSPI, I2C, I2S, CAN, UART
Protocolos Wi-Fi802.11 b/g/n (802.11n hasta 150 Mbps)
Frecuencia Wi-Fi2.4 GHz – 2.5 GHz
BluetoothV4.2 – BLE y Bluetooth clásico
Antena inalámbricaPCB
Dimensiones56x28x13mm


Hay un complemento para el IDE de Arduino que le permite programar el ESP32 utilizando el IDE de Arduino y su lenguaje de programación. En este post, le mostraremos cómo instalar la placa ESP32 en Arduino IDE, ya sea que esté usando Windows, Mac OS X o Linux..

Antes de comenzar este procedimiento de instalación, asegúrese de tener instalada la última versión del IDE de Arduino en su computadora. Si no lo hace, desinstálelo e instálelo de nuevo. De lo contrario, es posible que no funcione.

Con el último software Arduino IDE instalado desde arduino.cc/en/Main/Software , continúe con este post.

Para instalar la placa ESP32 en su Arduino IDE, siga las siguientes instrucciones:

  1. En tu IDE de Arduino, ve a Archivo > Preferencias Instalación del complemento ESP32 en Arduino IDE Preferencias abiertas de Windows, Mac OS X y Linux
  2. Ingrese lo siguiente en el campo «URL adicionales del administrador de la junta»:https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json .
  3. Luego, haga clic en el botón «Aceptar»:Instalación del complemento ESP32 en Arduino IDE Windows, Mac OS X, Linux ingrese las URLNota: si ya tiene la URL de los tableros ESP8266, puede separar las URL con una coma de la siguiente manera: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json, http://arduino.esp8266.com/stable/package_esp8266com_index.json
  4. Abra el Administrador de tableros. Vaya a Herramientas > Tablero > Administrador de tableros…Instalación del complemento ESP32 en Arduino IDE Windows, Mac OS X, administrador de tableros abiertos de Linux
  5. Busque ESP32 y presione el botón de instalación para » ESP32 by Espressif Systems «:Complemento ESP32 en Arduino IDE Windows, Mac OS X, Linux instalado
  6. Eso es todo. Debe instalarse después de unos segundos.

Prueba de la instalación

Conecte la placa ESP32 a su ordenador mediante un cable USB. Lo más sencillo seria probar a hacer parpadear el led interno , pero realmente si queremos probar la conectividad wifi es mejor probar esto con un codigo mas elaborado. Afortunadamente no tenemos que buscar mucho porque el propio IDE de Arduino incluye los ejemplos .

Con su Arduino IDE abierto, siga estos pasos:

1. Seleccione su placa en el   menú  Herramientas  >  Placa (en el ejemplo es un  DOIT ESP32 DEVKIT V1 pero si compra el AZDelivery ESP32 ESP-WROOM-32 NodeMCU Modulo WiFi + Bluetooth Dev Kit C Placa de Desarrollo 2.4 GHz Dual Core con Chip CP2102 deberemos poner ESP32Dev Module )

Arduino IDE seleccione la placa ESP32 en el menú Herramientas

2. Seleccione el puerto (si no ve el puerto COM en su IDE de Arduino, debe instalar los  controladores CP210x USB to UART Bridge VCP ):

Arduino IDE seleccione el puerto ESP32 en el menú Herramientas

3. Abra el siguiente ejemplo en Archivo > Ejemplos > WiFi (ESP32) > WiFiScan

Ejemplo de Arduino IDE open WiFiScan para ESP32

4. Se abre un nuevo boceto en su IDE de Arduino:

Arduino IDE cargando WiFiScan ejemplo a ESP32

5. Presione el  botón Cargar  en el IDE de Arduino. Espere unos segundos mientras el código se compila y carga en su placa.

6. Si todo salió como se esperaba, debería ver un mensaje » Terminó de cargar». » mensaje.

Arduino IDE terminó de cargar ESP32 WiFiScan sketch

7. Abra el monitor serie Arduino IDE a una velocidad de transmisión de 115200:

8. Presione el botón Habilitar integrado de ESP32   y debería ver las redes disponibles cerca de su ESP32:

Instalación del complemento de prueba ESP32 en PC con Windows, Max OS X y computadora con Linux

Solución de problemas más comunes

Si intenta cargar un nuevo boceto a su ESP32 y recibe este mensaje de error » Se produjo un error fatal: no se pudo conectar a ESP32: se agotó el tiempo de espera… Conectando… «. Significa que su ESP32 no está en modo de carga/parpadeo.

Con el nombre de la placa y el puerto COM seleccionados, siga estos pasos:

  • Mantenga presionado el botón » BOOT » en su tablero ESP32
Resuelto Ocurrió un error fatal: No se pudo conectar a ESP32: Se agotó el tiempo de espera... Conectando...
  • Presione el botón » Cargar » en el IDE de Arduino para cargar su boceto:
  • Después de ver el mensaje “ Conectando…. ” en su IDE de Arduino, suelte el dedo del botón “ BOOT ”:
Arduino IDE terminó de cargar ESP32 WiFiScan sketch
  • Después de eso, debería ver el mensaje » Terminó de cargar «.

Eso es todo. Su ESP32 debería tener el nuevo boceto ejecutándose. Presione el botón » HABILITAR » para reiniciar el ESP32 y ejecutar el nuevo boceto cargado.

Solución de otros problemas

Los problemas de parpadeo pueden ser complicados de solucionar. Pruebe las sugerencias aquí si tiene problemas:

El gestor de arranque no responde

Si ve errores como «Error al conectar», es probable que su chip no esté ingresando correctamente al gestor de arranque:

  • Compruebe que está pasando el puerto serie correcto en la línea de comandos.
  • Verifique que tenga permisos para acceder al puerto serie y que otro software (como el administrador de módem en Linux) no esté tratando de interactuar con él. Un error común es dejar un terminal serial accediendo a este puerto abierto en otra ventana y olvidarse de él.
  • Compruebe que el chip esté recibiendo 3,3 V de una fuente de alimentación estable (consulte Alimentación insuficiente para obtener más detalles).
  • Verifique que todos los pines estén conectados como se describe en Selección del modo de inicio . Verifique los voltajes en cada pin con un multímetro, los pines «altos» deben estar cerca de 3.3V y los pines «bajos» deben estar cerca de 0V.
  • Si ha conectado otros dispositivos a los pines GPIO, intente eliminarlos y vea si esptool comienza a funcionar.
  • Intente usar una tasa de baudios más lenta ( es un valor muy lento que puede usar para verificar que no es un problema de tasa de baudios).-b 9600

Escribir en Flash falla a mitad de camino

Si el parpadeo falla con errores aleatorios en la mitad, vuelva a intentarlo con una velocidad en baudios más baja.

Los problemas de estabilidad de energía también pueden causar esto (consulte Energía insuficiente ).

La escritura en Flash se realiza correctamente, pero el programa no se ejecuta

Si esptool puede actualizar su módulo write_flashpero su programa no se ejecuta, verifique lo siguiente:

Modo de flash incorrecto

Algunos dispositivos solo admiten el diomodo flash. Escribir en flash con qioel modo tendrá éxito, pero el chip no puede volver a leer el flash para ejecutarlo, por lo que no sucede nada en el arranque. Prueba a pasar la opción a .-fm diowrite_flash

Consulte la página Modos de flash SPI para obtener una descripción completa de los modos de flash y cómo determinar cuáles son compatibles con su dispositivo.

Poder insuficiente

La fuente de alimentación de 3,3 V para el chip ESP tiene que suministrar grandes cantidades de corriente (hasta 70 mA continuos, pico de 200-300 mA, puede ser un poco más alto). También necesita suficiente capacitancia en el circuito de alimentación para satisfacer grandes picos de demanda de energía.

Capacitancia insuficiente

Si está utilizando una placa o módulo de desarrollo prefabricado, el regulador de potencia y los condensadores incorporados suelen ser lo suficientemente buenos, siempre que la fuente de alimentación de entrada sea adecuada.

Nota

Esto no es cierto para algunos módulos de ruptura de pines muy simples, similar a este . Estos desgloses no integran suficiente capacitancia para funcionar de manera confiable sin componentes adicionales. Los módulos OEM de montaje en superficie como ESP-WROOM02 y ESP-WROOM32 requieren un condensador volumétrico externo en la PCB para ser confiables, consulte la hoja de datos del módulo.

Clasificación de la fuente de alimentación

Es posible tener una fuente de alimentación que suministre suficiente corriente para la etapa del cargador de arranque en serie con esptool, pero no lo suficiente para el funcionamiento normal del firmware. Es posible que vea que el voltaje VCC de 3,3 V cae si lo mide con un multímetro, pero puede tener problemas incluso si esto no sucede.

Intente cambiar un suministro de 3,3 V con una clasificación de corriente más alta, agregue condensadores a la línea de alimentación y/o acorte los cables de alimentación de 3,3 V.

La salida de 3,3 V de los chips/adaptadores FTDI FT232R o las placas Arduino no suministran suficiente corriente para alimentar un chip ESP (a veces puede parecer que funciona, pero no funcionará de manera confiable). Otros adaptadores USB TTL/serie también pueden ser marginales.

Falta el cargador de arranque

ESP-IDF y utiliza un pequeño programa cargador de arranque de firmware. El cargador de arranque de hardware en ROM carga este cargador de arranque de firmware desde flash y luego ejecuta el programa. En ESP32, la imagen del cargador de arranque debe ser flasheada por ESP-IDF en el desplazamiento 0x1000.

Consulte la documentación de ESP-IDF para obtener detalles sobre qué binarios deben actualizarse en qué compensaciones.

Pines SPI que deben desconectarse

En comparación con el cargador de arranque ROM con el que habla esptool, un firmware en ejecución usa más pines del chip para acceder al flash SPI.

Si configura el modo «Quad I/O» ( , el valor predeterminado de esptool), los GPIO 7, 8, 9 y 10 se utilizan para leer el flash SPI y, de lo contrario, deben desconectarse.-fm qio

Si configura el modo «Dual I/O» ( ), los GPIO 7 y 8 se utilizan para leer el flash SPI y, de lo contrario, deben desconectarse.-fm dio

Intente desconectar cualquier cosa de esos pines (y/o cambie al modo de E/S dual si anteriormente estaba usando el modo de E/S cuádruple pero desea conectar cosas a los GPIO 9 y 10). Tenga en cuenta que si los GPIO 9 y 10 también están conectados a los pines de entrada en el chip flash SPI, aún pueden no ser adecuados para su uso como E/S de propósito general.

Además de estos pines, los GPIO 6 y 11 también se utilizan para acceder al flash SPI (en todos los modos). Sin embargo, el parpadeo generalmente fallará por completo si estos pines están conectados incorrectamente.

Accidente de etapa temprana

Utilice cualquiera de los programas de terminal serie para ver el registro de arranque. (La tasa de baudios ESP32 es 115200bps). Vea si el programa se bloquea durante el inicio temprano o si muestra un mensaje de error.

Programas de terminal serie

Hay muchos programas de terminal en serie adecuados para la depuración y la interacción en serie. El módulo pySerial (que se requiere para esptool) incluye uno de esos programas de terminal de línea de comandos: miniterm.py. Para obtener más detalles, consulte la documentación relacionada con pySerial o ejecute . Para conocer los valores exactos de configuración del puerto serie, consulte Configuración del puerto serie .miniterm -h

Seguimiento de las interacciones de Esptool

La ejecución volcará todas las interacciones en serie a la salida estándar (esto es una gran cantidad de salida). Esto puede ser útil al depurar problemas con la conexión en serie o al proporcionar información para informes de errores.esptool.py --trace

Errores comunes

Esta es una lista no exhaustiva de los errores de esptool más comunes junto con explicaciones de posibles causas y soluciones. Antes de leer cualquier consejo específico de error, se recomienda encarecidamente que revise primero toda la sección de Solución de problemas.

No se recibieron datos seriales.

Esptool no recibió ningún byte de datos o un paquete de deslizamiento exitoso . Este error generalmente implica algún tipo de problema de hardware. Esto puede deberse a que el hardware no funciona correctamente, las líneas seriales RX/TX no están conectadas o porque hay algún problema al restablecer el modo de descarga .

¡Modo de arranque incorrecto detectado (0xXX)! El chip debe estar en modo de descarga.

La comunicación con el chip funciona (se detecta el registro de arranque de la ROM), pero no se restablece automáticamente al modo de descarga.

Para resolver esto, verifique el circuito de restablecimiento automático (si su placa lo tiene), o intente restablecer el modo de descarga manualmente. Consulte Cargador de arranque manual para obtener instrucciones.

El modo de descarga se detectó correctamente, pero no se obtuvo respuesta de sincronización: la ruta de transmisión en serie parece estar inactiva.

El chip se restablece con éxito en el modo de descarga y envía datos a la computadora host, pero no recibe ninguna respuesta enviada por correo electrónico esptool. Esto implica un problema con la línea TX que se ejecuta desde el host hasta el dispositivo ESP. Verifique dos veces su placa o circuito de placa de prueba para ver si hay algún problema.

Encabezado de paquete no válido (0xXX): posible corrupción o ruido en serie.

Este error suele ser causado por una de las siguientes razones:

  • Usando un cable USB de mala calidad.
  • A veces, las placas de prueba pueden acortar los pines flash SPI en la placa y causar este tipo de problema. Intente quitar su placa de desarrollo de la placa de pruebas.
  • El chip podría estar oscureciéndose durante el flasheo. El regulador interno de 3,3 V de los chips FTDI no es suficiente para alimentar un ESP, consulte Alimentación insuficiente .

Otras cosas para probar:

  • Intente sincronizar y comunicarse a una velocidad en baudios mucho más baja, p .esptool.py --baud 9600 ...
  • Intente rastrear las interacciones en curso y vea si se recibe algo.esptool.py --trace ...
  • Intente omitir la detección automática de chips especificando el tipo de chip, ejecute .esptool.py --chip ESP32 ...

Si ninguna de las soluciones mencionadas anteriormente ayuda y su problema persiste, abra un nuevo problema .

Se produjo un error de excepción en serie

esptool.pyutiliza el módulo pySerial Python para acceder al puerto serie. Si pySerial no puede funcionar normalmente, genera un error y finaliza. Algunas de las causas de error de pySerial más comunes son:

  • No tienes permiso para acceder al puerto.
  • El puerto ya está siendo utilizado por otro software.
  • El puerto no existe.
  • El dispositivo se desconecta inesperadamente.
  • Los controladores de puerto serie necesarios no están instalados o están defectuosos.

Un ejemplo de un error pySerial:

A serial exception error occurred: read failed: [Errno 6] Device not configured

Los errores que se originan en pySerial, por lo tanto, no son un problema con esptool.py, pero generalmente son causados ​​por un problema con el hardware o los controladores.

Mas información en https://docs.espressif.com/projects/esptool/en/latest/esp32/troubleshooting.html

Por cierto, una forma rapida de conseguir el ESP32 es Amazon porque por unos 10€ podemos tenerlo en casa y empezar a experimentar porque además regalan un ebook

Cálculo resistencia de carga para sensores no invasivos de tensión


A la hora de medir con un controlador la intensidad de un circuito de ca, existen shunts , modernamente sensores hall, pero ambos adolecen de ser intrusivos porque requieren interrumpir el circuito para conectar estos. Modernamente han aparecido sensores no intrusivos basados en un núcleo partido que se puede abrir para intercalar el fase del circuito a medir. En este ámbito destacan los sensores de corriente alterna SCT-013 , los cuales podríamos clasificarlos en dos grupos: los que proporcionan una corriente o los que proporcionan un voltaje siendo la gran diferencia entre ellos que en los primeros no viene incluida una resistencia de carga y en los segundos sí (el nombre resistencia de carga o resistencia «burden» se refiere a la función que hace, no a como están fabricadas siendo su función convertir la corriente en un voltaje limitado que podamos medir, por ejemplo, con un microcontrolador).

El sensor SCT-013-000 es el único que nos proporciona una corriente y por tanto no tiene resistencia de carga. Puede medir una corriente de entre 50 mA y 100 A. El resto de la familia de sensores SCT-013 sí que tienen incluida la resistencia de carga. Podemos encontrar varios modelos pero todos tienen un voltaje de salida entre 0V y 1V.

Esta tabla nos describe las principales características de la familia de sensores SCT disponible :

Elegir uno u otro sensor SCT-013 dependerá de las necesidades reales. Como vemos en la tabla anterior, deberá elegir la intensidad de corriente que mejor se acople a sus necesidades o bien seleccionar el modelo «personalizado» SCT-013-000.

En post por tanto vamos a trabajar con el SCT-013-000 debido a que no tiene resistencia de carga lo cual nos va a permitir seleccionar la resistencia de carga más adecuada para medir con masa precisión el consumo eléctrico de un electrodoméstico en concreto como por ejemplo podria ser un frigorífico.

Para conectar un sensor CT a un Arduino, la señal de salida del sensor CT debe acondicionarse para que cumpla con los requisitos de entrada de las entradas analógicas Arduino, es decir, un  voltaje positivo entre 0 V y el voltaje de referencia ADC.

Este ejemplo vemos una placa Arduino que funciona a 5 V y el EmonTx que funciona a 3,3 V. Asegúrese de utilizar el voltaje de suministro y el voltaje de polarización correctos en sus cálculos que correspondan a su configuración.

Esto se puede lograr con el siguiente circuito que consta de dos partes principales: 

  1. El sensor CT y la resistencia de carga
  2. El divisor de voltaje de polarización ( R1 y R2 )

Basta con sumar 2,5V y estaría resuelto. Esto lo haremos a través de un circuito conocido como circuito offset en DC,lo cual básicamente consiste en poner un divisor de tensión y un condensador (el condensador tiene que ser de 10μF y unos pocos cientos de voltios lo cual hace que la reactancia sea baja y la corriente alterna evite la resistencia).

El valor de las resistencias del divisor de tensión puede ser 10kΩ siempre y cuando lo alimentemos a través de la red eléctrica, pero si su dispositivo va a funcionar con baterías utilice unas resistencias de 470kΩ para que el consumo sea mínimo.

Cálculo de un tamaño de resistencia de carga adecuado

Si el sensor CT es del tipo de «salida de corriente» como el YHDC SCT-013-000 , la señal de corriente debe convertirse en una señal de voltaje con una resistencia de carga. Si se trata de un CT de salida de voltaje, puede omitir este paso y omitir la resistencia de carga, ya que la resistencia de carga está integrada en el CT.

Este es el cálculo de la citada resistencia:

1) Elija el rango actual que desea medir

El YHDC SCT-013-000 CT tiene un rango de corriente de 0 a 100 A. Para este ejemplo, elijamos 100 A como nuestra corriente máxima.

2) Convierta la corriente RMS máxima en corriente pico multiplicando por √2.

Corriente máxima primaria = corriente RMS × √2 = 100 A × 1,414 = 141,4 A

Resultado =141,4 Amp

3) Divida el pico de corriente por el número de vueltas en el TC para obtener el pico de corriente en la bobina secundaria.

El TC YHDC SCT-013-000 tiene 2000 vueltas, por lo que la corriente pico del secundario será:

Pico de corriente secundario = Pico de corriente primario / no. de vueltas = 141.4 A / 2000 = 0.0707A

Resultado 2= 0.07Amp

4) Para maximizar la resolución de la medición, el voltaje a través de la resistencia de carga en el pico de corriente debe ser igual a la mitad del voltaje de referencia analógico de Arduino. (AREF / 2)

Si está utilizando un Arduino que funciona a 5V: AREF / 2 será de 2,5 voltios. 

Entonces la resistencia de carga ideal será:

Resistencia de carga ideal = (AREF/2) / Pico de corriente secundario = 2,5 V / 0,0707 A = 35,4 Ω

Resultado 3= 35,4 ohmios

Es fácil adivinar que 35 Ω no es un valor de resistencia común. Los valores más cercanos a ambos lados de 35 Ω son 39 y 33 Ω. Elija siempre el valor más pequeño, o la corriente de carga máxima creará un voltaje más alto que AREF. Recomendamos una carga de 33 Ω ±1%. En algunos casos, el uso de 2 resistencias en serie estará más cerca del valor de carga ideal. Cuanto más lejos del ideal esté el valor, menor será la precisión.

Aquí están los mismos cálculos que arriba en una forma más compacta:

Resistencia de carga (ohmios) = (AREF * CT TURNS) / (2√2 * corriente primaria máx.)

emonTx V2

Si está utilizando un emonTx V2 alimentado por batería, AREF comenzará a 3,3 V y disminuirá lentamente a medida que el voltaje de la batería caiga a 2,7 V. Por lo tanto, la resistencia de carga ideal para el voltaje mínimo sería:

Resistencia de carga ideal = (AREF/2) / Pico de corriente secundario = 1,35 V / 0,0707 A = 19,1 Ω

19 Ω no es un valor común. Tenemos una opción de 18 o 22 Ω. Recomendamos utilizar una carga de 18 Ω ±1%.

emonTx V3

El emonTx V3 usa un regulador de 3.3V, por lo que es V CC y por lo tanto AREF, siempre será de 3.3V independientemente del voltaje de la batería. El emonTx V3 estándar usa resistencias de carga de 22 Ω para CT 1, 2 y 3, y una resistencia de 120 Ω para CT4, el canal de alta sensibilidad. 

2) Agregar un sesgo de CC

Si tuviera que conectar uno de los cables del TC a tierra y medir el voltaje del segundo cable, con respecto a tierra, el voltaje variaría de positivo a negativo con respecto a tierra. Sin embargo, las entradas analógicas de Arduino requieren un voltaje positivo. Al conectar el cable de CT que conectamos a tierra, a una fuente a la mitad del voltaje de suministro, el voltaje de salida de CT ahora oscilará por encima y por debajo de 2,5 V, por lo que permanecerá positivo.

Las resistencias R1 y R2 en el diagrama de circuito anterior son un divisor de voltaje que proporciona la fuente de 2,5 V (1,65 V para el emonTx). El condensador electrolítico C1 tiene una reactancia baja de unos pocos cientos de ohmios, y proporciona un camino para que la corriente alterna evite la resistencia. Un valor de 10 μF es adecuado por ejemplo de 100v.

Elegir un valor adecuado para las resistencias R1 y R2:

Una mayor resistencia reduce el consumo de energía en reposo por lo que podemos usar resistencias de 10 kΩ para monitores alimentados por la red. El emonTx utiliza resistencias de 470 kΩ para mantener el consumo de energía al mínimo, ya que está diseñado para funcionar con baterías durante varios meses.

Boceto de Arduino

Para usar el circuito descrito para medir la corriente RMS, con un voltaje RMS fijo asumido (por ejemplo, 240 V) para indicar la potencia aparente aproximada, podemos usar el siguiente código en Arduino:

// Include Emon Library
#include "EmonLib.h"
 
// Crear una instancia EnergyMonitor
EnergyMonitor energyMonitor;
 
// Voltaje de nuestra red eléctrica
float voltajeRed = 220.0;
 
void setup()
{
  Serial.begin(9600);
 
  // Iniciamos la clase indicando
  // Número de pin: donde tenemos conectado el SCT-013
  // Valor de calibración: valor obtenido de la calibración teórica
  energyMonitor.current(0, 2.6);
}
 
void loop()
{
  // Obtenemos el valor de la corriente eficaz
  // Pasamos el número de muestras que queremos tomar
  double Irms = energyMonitor.calcIrms(1484);
 
  // Calculamos la potencia aparente
  double potencia =  Irms * voltajeRed;
 
  // Mostramos la información por el monitor serie
  Serial.print("Potencia = ");
  Serial.print(potencia);
  Serial.print("    Irms = ");
  Serial.println(Irms);
}


Mas info en https://openenergymonitor.github.io/forum-archive/node/156.html