Baike.dev
All toolsOnline toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
E

Expandable-6-Channel-ESP32-Energy-Meter

> 编程语言
Open source

Hardware & Software documentation for the CircuitSetup Expandable 6 Channel ESP32 Energy Meter. Works with ESPHome and Home Assistant.

684 stars0 likes1 views
WebsiteGitHub

About

Hardware & Software documentation for the CircuitSetup Expandable 6 Channel ESP32 Energy Meter. Works with ESPHome and Home Assistant.

CircuitSetup Expandable 6 Channel ESP32 Energy Meter

The CircuitSetup Expandable 6 Channel ESP32 Energy Meter is a real-time power and energy monitor built around two ATM90E32AS metering ICs. The main board measures six current transformer channels and one voltage reference by default, and you can stack up to six add-on boards for a total of 42 current channels. It is a good fit for whole-home monitoring, subpanels, solar, large branch circuits, and multi-voltage or 3-phase projects.

The first AC-AC adapter powers the main board and provides the primary voltage reference. A second voltage can be measured on the main board, and stacked systems can monitor additional voltage references when the hardware is configured for it.

Table of Contents

  • Quick Start: ESPHome via ESP Web Installer
  • What You Will Need
  • Setting Up the Meter
  • Software Options
  • FAQ
  • More Resources

Typical Uses

  • North American split-phase 120V/240V 60Hz service: mains, solar, subpanels, and individual circuits
  • Single-phase 230V/240V 50Hz or 60Hz systems with a suitable 9VAC or 12VAC AC-AC adapter
  • 3-phase systems when each measured phase has the correct voltage reference

Features

  • 6 current channels on the main board
  • Expandable to 42 current channels and up to 8 voltage references with add-on boards
  • Built around two ATM90E32AS energy metering ICs
  • Calculates active power, reactive power, apparent power, power factor, frequency, and temperature
  • 16-bit measurement resolution
  • 22 ohm burden resistors on each current channel
  • Built-in buck converter to power the board and supported ESP32 dev boards
  • SPI interface to the ESP32
  • Energy pulse outputs, IRQ outputs, warning output, and zero-crossing signals are available on the board
  • Typical metering IC accuracy is 0.1 percent with a 6000:1 dynamic range
  • Current gain selection is available up to 4x

Quick Start: ESPHome via ESP Web Installer

The fastest way to get the meter running is to flash ESPHome directly from the CircuitSetup ESP Web Installer, connect it to your network, then adopt the device into Home Assistant.

Flash Now With the Web Installer

  1. Open the CircuitSetup ESP Web Installer
  2. Under 6 Channel Meter, choose:
    • the number of add-on boards
    • the connection type: Wi-Fi, Ethernet (Lilygo), or Ethernet (Waveshare)
  3. Choose the firmware version
  4. Connect the ESP32 to your computer with a USB data cable
  5. Click Connect, choose the correct serial port, and start the flash
  6. If the board does not enter the bootloader automatically, hold the right or IO0 button while the installer starts
  7. If you flashed a Wi-Fi build, provision Wi-Fi after the flash
  8. Once the device is online, adjust names, calibration values, and extra sensors as needed

The current Wi-Fi configs in this repo already include captive_portal, esp32_improv, and improv_serial, so the device can be provisioned before it is ever adopted into Home Assistant.

Adopt Into Home Assistant/ESPHome Device Builder

If you want UI-based management, dashboard imports, OTA updates from Home Assistant, to change default meter/CT names, and do any other YAML editing, install ESPHome Device Builder after the first flash.

  1. Open Settings > Add-ons > Add-on Store
  2. Search for ESPHome Device Builder
  3. Install it, then click Start
  4. Click Open Web UI

The device should then appear in ESPHome Device Builder and in Home Assistant under Settings > Devices & services.

For package layout, local copies, calibration files, CS-pin changes, and advanced YAML examples, see Software/ESPHome/.

What You Will Need

Current Transformers

You can use any mix of supported CTs as long as the secondary output does not exceed 720mV RMS or 33mA. CircuitSetup CTs with mA output work directly with the board and do not require cutting the burden resistor jumpers on the back.

  • SCT-006 20A/25mA Micro CT - 6mm opening, 3.5mm plug
  • SCT-010 80A/26.6mA Mini CT - 10mm opening, 3.5mm plug
  • SCT-013-000 100A/50mA CT - 13mm opening, 3.5mm plug
  • SCT-016 120A/40mA CT - 16mm opening, 3.5mm plug
  • SCT-024 200A/50mA CT - 24mm opening, 3.5mm plug
  • Magnelab SCT-0750-100 and similar voltage-output CTs can also be used, but channels using CTs with built-in burden resistors require the matching jumper trace on the back of the board to be cut

AC-AC Transformer

The meter requires an AC output transformer, not a DC wall adapter.

  • North America: Jameco Reliapro 120V to 9VAC or a similar 9VAC or 12VAC adapter with a 2.5mm center pin
  • Europe and other 230V regions: use a native 230V to 9VAC or 12VAC AC-AC adapter rated for at least 500mA. OpenEnergyMonitor keeps a useful list here

ESP32

Supported and documented controller options:

  • NodeMCU 32s
  • Espressif ESP32-DevKitC-32E
  • Espressif ESP32-DevKitC-VIE
  • Boards with the same 19-pin-per-side pinout as the boards above
  • Ethernet options for ESPHome only: CircuitSetup ESP32-S3 Ethernet Adapter, LilyGO T-ETH-Lite ESP32-S3, or Waveshare ESP32-S3 ETH

Boards with different pin maps are not drop-in compatible just because they are "ESP32" boards. For example, ESP32-C6 dev boards use different pins and are not part of the documented support path for this repo. If you are comparing boards visually, the documented dev boards are usually 19 pins per side, with 3V3 at the upper-left corner and CLK at the lower-right corner when installed correctly.

Software

  • ESPHome and Home Assistant - recommended for most new installs
  • EmonESP and EmonCMS - good if you want EmonCMS or MQTT without Home Assistant
  • CircuitPython library
  • MicroPython library

Setting Up the Meter

Plugging In the ESP32

The board is designed so the ESP32 dev board plugs directly into the meter.

Always insert the ESP32 with 3V3 in the upper-left corner of the meter. The lower pins are used to pass the voltage reference to add-on boards. Plugging the ESP32 into the lower row will likely short the board.

Main Board SPI and Chip-Select Pins

The meter communicates with the ESP32 over SPI.

Main board SPI pins:

  • CLK - GPIO18
  • MISO - GPIO19
  • MOSI - GPIO23
  • CS1 - GPIO5 for CT1-CT3 and Voltage 1
  • CS2 - GPIO4 for CT4-CT6 and Voltage 2

The 6-channel version of EmonESP in this repo is already set up with the main board pin defaults. Current ESPHome configs for the main board and add-on boards are in Software/ESPHome.

Add-On Boards

Each add-on board adds six more CT channels. Up to six add-on boards can be stacked on the main board.

Each add-on board has two CS jumper banks:

  • CS for CT1-CT3 on that add-on board
  • CS2 for CT4-CT6 on that add-on board

Only choose one pin per bank. The default jumper positions used by the installer and repo configs are:

Add-on board CS for CT1-CT3 CS2 for CT4-CT6
1st add-on GPIO0 GPIO16
2nd add-on GPIO27 GPIO17
3rd add-on GPIO2 GPIO21
4th add-on GPIO13 GPIO22
5th add-on GPIO14 GPIO25
6th add-on GPIO15 GPIO26

GPIO2 can interfere with programming on some ESP32 boards. If you temporarily cannot flash the ESP32 while that jumper is connected, disconnect that add-on board or move the jumper while programming, then restore the expected setting.

If you change jumper positions from the defaults, update the matching cs_pin values in your ESPHome config. See Software/ESPHome/README.md for examples.

CT Compatibility, Burden Resistors, and JP1-JP6

Each current channel on the board has an onboard burden resistor. That is correct for CircuitSetup CTs with mA output.

Only cut the matching rear jumper trace for a CT channel if that CT already has its own burden resistor, which is usually the case for voltage-output CTs such as 1V-output models.

In practice:

  • CircuitSetup SCT-006, SCT-010, SCT-013-000, SCT-016, and SCT-024 CTs do not require cutting JP1-JP6
  • 1V-output CTs such as SCT-013-030 or SCT-013-050 do require cutting the matching jumper trace for the channel they are connected to
  • If you are mixing CT types, only cut the jumper traces for the specific channels using CTs with built-in burden resistors

Common Calibration Starting Values

Each current channel can use its own calibration value. In the current ESPHome configs that means setting current_cal_ct1, current_cal_ct2, and so on for the main board, plus the add-on board calibration variables where needed.

Common starting values:

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

These are good starting points, not guaranteed final values. If you want tighter accuracy, use the ESPHome semi-automatic calibration workflow described below.

Measuring More Than 65A on One Channel

The ATM90E32 current register tops out at 65.535A before scaling. If you expect to measure more than that on one channel, divide the CT calibration value and multiply the reported current and power in software. Current examples are already documented in Software/ESPHome/README.md and shown in Software/ESPHome/6chan_energy_meter_main_board.yaml.

For 200A service this usually means you are monitoring a larger CT but scaling it in software so the meter stays within range.

Power Calculations and Board Revisions

The board uses voltage references to calculate power, power factor, and the other metering values.

  • v1.1 used one voltage channel per ATM90E32 by default, so some power calculations had to be done in software unless registers were remapped
  • v1.2 and v1.3 added JP8-JP11 so voltage channels could be tied together. Most v1.3 boards shipped with those connections already joined
  • v1.4 and later removed JP8-JP11 and route those voltage channels internally on the PCB

Measuring Dual-Pole 240V Circuits on Split-Phase Service

For split-phase systems, a 240V load has two hot legs. There are three practical ways to measure it:

  1. Measure one hot leg with one CT and double the current and power in software. This uses the fewest channels but is the least accurate. 2

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

C++energy-monitorenergymeteresp32esphome

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言