esp32.diy

CircuitSetup Expandable 6-Channel ESP32 Energy Meter Guide

Oct 13, 2026 · 7 min read

Intermediate 696 stars 135 forks C++ MIT Updated 2026-09-26

The CircuitSetup 6-channel ESP32 Energy Meter main board v1.3 with ATM90E32AS ICs and ESP32 header

TL;DR The CircuitSetup Expandable 6-Channel ESP32 Energy Meter monitors up to 42 current channels using two ATM90E32AS metering ICs and an ESP32, with native ESPHome and Home Assistant support. Flash it in minutes via a browser-based web installer, wire your current transformers to the panel, and every circuit appears as a live sensor in your smart home dashboard.
What you need
  • CircuitSetup Expandable 6-Channel ESP32 Energy Meter main board
  • CircuitSetup 6-channel add-on boards (up to 6)
  • NodeMCU 32s
  • Espressif ESP32-DevKitC-32E
  • Espressif ESP32-DevKitC-VIE
  • CircuitSetup ESP32-S3 Ethernet Adapter
  • LilyGO T-ETH-Lite ESP32-S3
  • Waveshare ESP32-S3 ETH
  • ATM90E32AS metering IC (x2 on main board)
  • SCT-006 20A/25mA current transformer
  • SCT-010 80A/26.6mA current transformer
  • SCT-013-000 100A/50mA current transformer
  • SCT-016 120A/40mA current transformer
  • SCT-024 200A/50mA current transformer
  • Jameco Reliapro 9VAC AC-AC adapter
  • 9VAC or 12VAC AC-AC adapter (230V regions)
BoardESP32 (NodeMCU 32s, DevKitC-32E, or Ethernet variants)
Metering ICATM90E32AS × 2 on main board
FrameworkESPHome / EmonESP
LanguageC++
LicenseMIT
Channels6 on main board, up to 42 with add-ons

What You Will Build and Why It Is Useful

This guide walks you through flashing, wiring, and calibrating the CircuitSetup Expandable 6-Channel ESP32 Energy Meter — a real-time power monitor built around two ATM90E32AS metering ICs. The main board measures six current channels and one voltage reference. Stack up to six add-on boards and the system grows to 42 current channels and up to eight voltage references, enough to cover an entire electrical panel, subpanels, solar production, and large individual circuits at the same time.

The meter calculates active power, reactive power, apparent power, power factor, frequency, and temperature at 16-bit resolution. Stated metering IC accuracy is 0.1 percent with a 6000:1 dynamic range. Because it integrates directly with ESPHome and Home Assistant, every circuit shows up as a live sensor in your smart home dashboard with no custom server software to maintain. It is a good fit for North American split-phase 120V/240V 60Hz service, single-phase 230V/240V 50Hz or 60Hz systems, and 3-phase systems where each measured phase has a matching voltage reference.

The CircuitSetup ESP Web Installer ready to flash ESPHome firmware over WebSerial\2
The CircuitSetup ESP Web Installer ready to flash ESPHome firmware over WebSerial
Installing the ESPHome Device Builder add-on inside Home Assistant\2
Installing the ESPHome Device Builder add-on inside Home Assistant
Main board connection diagram showing CT inputs, voltage reference, and ESP32 header\2
Main board connection diagram showing CT inputs, voltage reference, and ESP32 header
Back of the main board v1.4 showing burden resistor jumpers JP1–JP6 and voltage jumpers\2
Back of the main board v1.4 showing burden resistor jumpers JP1–JP6 and voltage jumpers

What You Need

Hardware

Software

Typical use cases

Whole-Home Energy Monitoring

Measure every breaker in a residential panel simultaneously. Stack add-on boards to reach up to 42 current channels and surface all readings as Home Assistant sensors.

Solar and Subpanel Monitoring

Track solar production alongside grid consumption and subpanel loads in real time, using separate CT channels for each feed and dedicated voltage references for each leg.

Home Assistant Energy Dashboard

Native ESPHome integration means every channel is automatically available in the Home Assistant Energy dashboard without any custom code or intermediary server.

Split-Phase and 3-Phase Systems

Support for dual voltage references and expandable CT channels makes the meter suitable for North American split-phase 240V service and 3-phase installations with the correct hardware configuration.

How It Works

The main board hosts two ATM90E32AS ICs. Each IC handles three current channels and one voltage reference, communicating with the ESP32 over SPI. The default chip-select assignments are GPIO5 for CT1–CT3 and voltage reference 1, and GPIO4 for CT4–CT6 and voltage reference 2. MISO is GPIO19, MOSI is GPIO23, and CLK is GPIO18.

The AC-AC transformer does two jobs: it powers the board through a built-in buck converter, and it supplies the voltage waveform the metering ICs need to calculate real power and power factor. If you only connect one transformer, both ICs share that single voltage reference by default. To measure a second voltage — useful for split-phase 240V service or 3-phase work — you wire a second AC-AC transformer to the VA2 pads on the main board after cutting jumpers JP12 and JP13 (v1.3 and later boards) or JP7 (older revisions). When those jumpers are cut, CT1–CT3 stay referenced to the primary voltage and CT4–CT6 use the VA2 reference.

Add-on boards extend the SPI bus. Each add-on has two solder jumper banks — one for its CT1–CT3 and one for its CT4–CT6 — and the default chip-select assignments are documented in the README and pre-configured in the installer firmware.

Flash and Wire the Meter

Step 1 — Install the ESP32

Insert your ESP32 dev board into the meter header so that the 3V3 pin sits in the upper-left corner. Plugging into the lower row will likely short the board, so confirm orientation before applying power.

Step 2 — Flash ESPHome via the Web Installer

The fastest path requires only a browser that supports Web Serial (Chrome or Edge):

  1. Open the CircuitSetup ESP Web Installer
  2. Under 6 Channel Meter, select the number of add-on boards and your connection type: Wi-Fi, Ethernet (Lilygo), or Ethernet (Waveshare)
  3. Choose a firmware version
  4. Connect the ESP32 to your computer with a USB data cable
  5. Click Connect, select the correct serial port, and start the flash
  6. If the board does not enter the bootloader automatically, hold the IO0 button while the installer initialises
  7. For Wi-Fi builds, provision your network credentials after the flash completes

The flashed firmware already includes captive_portal, esp32_improv, and improv_serial, so Wi-Fi provisioning works before the device is adopted into Home Assistant.

Step 3 — Adopt Into Home Assistant

Once the device is online, open Settings > Add-ons > Add-on Store in Home Assistant, search for ESPHome Device Builder, install it, and open its web UI. The meter should appear automatically. From here you can rename channels, adjust calibration values, and push OTA updates without touching the USB cable again.

Step 4 — Wire the Current Transformers

Clip each CT around the hot conductor of the circuit you want to measure — not around the neutral or ground. For split-phase 240V loads you can measure one hot leg and double the readings in software, or use one CT per leg for better accuracy. If a current or power reading comes back negative, the CT is clipped in the wrong direction around the conductor; flip it.

If you are using voltage-output CTs (such as the SCT-013-030 or SCT-013-050, which have built-in burden resistors), cut the matching JP1–JP6 jumper trace on the back of the board for that channel. CircuitSetup SCT-006, SCT-010, SCT-013-000, SCT-016, and SCT-024 CTs do not require cutting anything.

Calibration

Each current channel has its own calibration variable in the ESPHome YAML. The README provides these common starting values:

CT model Calibration value
SCT-006 20A/25mA 11143
SCT-010 80A/26.6mA 41660
SCT-013-000 100A/50mA 27518
SCT-016 120A/40mA 41787
SCT-024 200A/50mA 55036
SCT-013-030 30A/1V 8650
SCT-013-050 50A/1V 15420
Jameco 9VAC transformer 7305

These are starting points, not guaranteed final values. For tighter accuracy, the repository's ESPHome README describes a semi-automatic calibration workflow.

If you expect to measure more than 65A on a single channel, note that the ATM90E32AS current register tops out at 65.535A before scaling. The fix is to divide the CT calibration value and multiply the reported current and power in software. Examples for 200A service are already included in the YAML files in Software/ESPHome/.

Ideas to Extend It and Limitations

Ways to expand the build

Limitations to keep in mind

Verdict

The CircuitSetup Expandable 6-Channel ESP32 Energy Meter is a well-documented, production-ready energy monitoring platform that scales from a single six-channel main board to a 42-channel whole-home system. Native ESPHome support and a browser-based web installer lower the barrier for new installs, while the modular add-on board design and dual voltage reference capability make it practical for split-phase, solar, and 3-phase deployments. Working inside an electrical panel carries real safety risk, so this build is best suited for makers who are already comfortable with mains wiring or who can have a licensed electrician handle the panel connections.

Sources

github.comCircuitSetup/Expandable-6-Channel-ESP32-Energy-Meter — repository & README circuitsetup.usOfficial website

Facts in this article come from the project's public README and GitHub metadata at the time of writing. Images belong to their respective owners and link back to the original source.