Skip to content

Franzabner/epi-meter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

YOSO-YAi

epi-meter

Open-Source 4-Channel AC Power Measurement Board for AI Energy Research

RP2350 + 4x Energy Metering ICs + CT Clamps — Designed in KiCad 9.0

Status License HW License FW EPI Paper epi-bench


An electrician does not trust a device's self-reported power draw. An electrician puts a meter on the circuit.

The epi-meter is a custom power measurement PCB designed to instrument a Raspberry Pi 5 cluster with dedicated AC-side energy metering hardware. It measures the true cost of every token an AI model generates — in joules — using calibrated metering ICs and non-invasive CT clamps.

This is the measurement instrument behind the Energy Per Intelligence (EPI) research pipeline. It is the first YOSO-YAi board design that is fully public — complete KiCad source, Gerber files, BOM, firmware, enclosure, assembly guide, and calibration procedure. Everything needed to build one.


Table of Contents

  1. Why This Board Exists
  2. Why Not Software Measurement
  3. Specifications
  4. Block Diagram
  5. Schematic Overview
  6. Bill of Materials
  7. PCB Layout
  8. Firmware Architecture
  9. Telemetry Protocol
  10. Calibration Procedure
  11. Enclosure
  12. Assembly Guide
  13. Integration with EPI Pipeline
  14. Breadboard Prototype
  15. Repository Structure
  16. Build Your Own
  17. Four Purposes
  18. Contributing
  19. License

1. Why This Board Exists

The EPI research pipeline performs surgery on open-weights LLMs (expert pruning, head removal, mixed quantization), deploys the modified models to a Raspberry Pi 5 cluster, and measures the energy cost of inference. The measurement requires a dedicated, independent instrument — not software estimation.

The epi-meter sits between the wall outlet and each Pi node, measuring:

  • True RMS real power (watts) — not apparent power, not estimated power
  • Power factor — the ratio of real to apparent power
  • RMS voltage and current — per channel
  • Reactive power (VAR) — for complete power analysis
  • Energy accumulation (Wh/kWh) — for long-duration runs

All computed in hardware by dedicated energy metering ICs. The RP2350 MCU reads results over SPI and streams JSON telemetry to the Orchestrator Pi.


2. Why Not Software Measurement

Method Problem
nvidia-smi Does not exist on Pi 5. No GPU telemetry on ARM.
/sys/class/power_supply/ Reports battery/USB status, not wall power consumption.
perf energy counters x86 RAPL only. Not available on ARM Cortex-A76.
Software estimation models Unreliable. Not independent of the system being measured.
USB power meters (DC side) Misses PSU efficiency losses and fan power. Not AC-side.
epi-meter (AC side, CT clamps) Independent. Non-invasive. Captures total system draw. Calibrated.

For publishable research, the measurement instrument must be independent of the system being measured. The epi-meter is a separate board on a separate power domain, measuring AC inlet power via CT clamps that don't touch the device under test.


3. Specifications

Parameter Specification
MCU RP2350 (Raspberry Pi Pico 2 silicon) — dual Cortex-M33 @ 150 MHz
Energy Metering ICs 4x ATM90E26 (or ADE7753 class) — dedicated single-phase energy metering
Communication (MCU ↔ ICs) SPI, up to 4 chip selects
Current Sensing 4x SCT-013-030 CT clamps (30A, 1V output) — non-invasive, split-core
Voltage Sensing 1x voltage divider from shared AC reference via isolation transformer
Measurements per Channel True RMS voltage, true RMS current, real power (W), reactive power (VAR), apparent power (VA), power factor, frequency, energy (Wh)
Metering IC Sampling Internal ADC: 1 kHz+ per channel
RMS Output Rate 10–50 Hz (configurable via IC registers)
Output UART TX to Orchestrator Pi — 115200 baud, JSON, 1 Hz (configurable)
Power Input USB-C (5V) from Orchestrator Pi or separate 5V supply
Board Power Draw < 500 mW estimated (MCU + 4x metering ICs + reference)
Measurement Point AC side — between wall outlet and each Pi node's PSU
CT Clamp Accuracy ±1% typical (SCT-013 class, calibrated against known resistive load)
Metering IC Accuracy ±0.5% (ATM90E26 class, factory-calibrated registers)
Operating Voltage 100–240 VAC (universal input — measures, does not power from mains)
PCB Layers 4-layer (signal, ground, power, signal) — mixed-signal layout
PCB Size Target: 80mm × 60mm (approximately)
Fabrication JLCPCB — Gerber files included, order directly
Enclosure 3D-printed (Bambu Lab H2D) — Fusion 360 source + STL included

4. Block Diagram

                          ┌─────────────────────────────────────────────┐
                          │              epi-meter Board                │
                          │                                             │
 ┌──────────┐             │  ┌────────────┐    ┌────────────────────┐  │
 │ AC Mains ├──┬──────────┼──┤ Voltage    │    │     RP2350         │  │
 │ (shared) │  │          │  │ Divider +  │    │  (Pico 2 silicon)  │  │
 └──────────┘  │          │  │ Isolation  │    │                    │  │     ┌──────────────┐
               │          │  └─────┬──────┘    │  SPI Master        │  │     │ Orchestrator │
               │          │        │           │  ├─ CS0: IC Ch.0   │──┼────▶│ Pi           │
               │          │        │ V_ref     │  ├─ CS1: IC Ch.1   │  │     │ (UART RX)    │
               │          │        │           │  ├─ CS2: IC Ch.2   │  │     │              │
               │          │        ▼           │  └─ CS3: IC Ch.3   │  │     │ SQLite log   │
               │          │  ┌─────────────┐   │                    │  │     │ 10" display  │
               │          │  │             │   │  UART TX ───────────┼──┘     └──────────────┘
               │          │  │ Metering IC │◀──│  (115200 baud)     │  │
               │          │  │  Channel 0  │   │                    │  │
               │  CT 0    │  │  ATM90E26   │   │  Watchdog          │  │
 ┌────────┐    │  ┌───┐   │  │             │   │  Boot banner       │  │
 │ Pi     ├────┼──┤CT ├───┼──┤ I_in        │   │  LED status        │  │
 │ Node 0 │    │  └───┘   │  └─────────────┘   │  USB-C power       │  │
 └────────┘    │          │                    └────────────────────┘  │
               │          │  ┌─────────────┐                          │
 ┌────────┐    │  CT 1    │  │ Metering IC │                          │
 │ Pi     ├────┼──┤CT ├───┼──┤  Channel 1  │                          │
 │ Node 1 │    │  └───┘   │  │  ATM90E26   │                          │
 └────────┘    │          │  └─────────────┘                          │
               │          │                                           │
 ┌────────┐    │  CT 2    │  ┌─────────────┐                          │
 │ Pi     ├────┼──┤CT ├───┼──┤ Metering IC │                          │
 │ Node 2 │    │  └───┘   │  │  Channel 2  │                          │
 └────────┘    │          │  │  ATM90E26   │                          │
               │          │  └─────────────┘                          │
 ┌────────┐    │  CT 3    │                                           │
 │ Pi     ├────┼──┤CT ├───┼──┌─────────────┐                          │
 │ Node 3 │    │  └───┘   │  │ Metering IC │                          │
 └────────┘    │          │  │  Channel 3  │                          │
               │          │  │  ATM90E26   │                          │
               │          │  └─────────────┘                          │
               │          │                                           │
               │          └───────────────────────────────────────────┘
               │
               │  CT clamps are non-invasive split-core.
               │  They clip around the AC power cable
               │  of each Pi node's PSU. No wire cutting.
               │  No mains contact. No voided warranties.

5. Schematic Overview

Status: Schematic design in progress in KiCad 9.0. Files will be committed to hardware/kicad/ when the design is complete.

The schematic is organized into the following sheets:

Sheet Contents
Top Level RP2350 MCU, crystal oscillator, decoupling, USB-C connector, UART header
Power Supply USB-C 5V input, 3.3V LDO for MCU + metering ICs, bulk capacitance
Channel 0–3 ATM90E26 metering IC, CT clamp input conditioning (burden resistor, protection, anti-aliasing filter), SPI connection to MCU
Voltage Reference AC voltage sensing: isolation transformer, voltage divider, filtering, shared across all 4 metering ICs
Connectors 4x 3.5mm jack for CT clamps, 1x AC voltage input, 1x UART header, 1x USB-C, 2x status LED

CT Clamp Input Conditioning (Per Channel)

                    ┌──────────────────────────────┐
  CT Clamp          │  Input Conditioning Circuit   │
  (SCT-013)         │                              │
  ┌────┐            │  ┌────────┐   ┌──────────┐  │    ATM90E26
  │ CT ├────────────┼──┤ Burden ├───┤ Anti-    ├──┼───▶ I_P / I_N
  │    │            │  │ R_b    │   │ Aliasing │  │    (current
  └────┘            │  │        │   │ RC LPF   │  │     input)
                    │  └────┬───┘   └──────────┘  │
                    │       │                      │
                    │      GND                     │
                    │                              │
                    │  TVS diode for ESD/surge     │
                    │  protection across input     │
                    └──────────────────────────────┘

  R_b (burden resistor):
    SCT-013-030: built-in burden, 1V output at 30A
    If using SCT-013-000 (unburdened): R_b = V_ref / I_max

  Anti-aliasing filter:
    RC low-pass, f_c > 2x line frequency harmonics
    Target: f_c ≈ 2 kHz (captures up to ~30th harmonic)

Voltage Reference Circuit

  AC Mains ──▶ Isolation Transformer ──▶ Voltage Divider ──▶ ATM90E26 V_P/V_N
              (safety isolation)         (scale to IC range)  (shared across
               9V or 12V secondary       with anti-aliasing    all 4 channels)
                                         RC filter)

6. Bill of Materials

Status: Component selection in progress. BOM will be finalized when the schematic is complete. Preliminary selections below based on design requirements.

Key Components

Ref Component Package Qty Unit Cost (est.) Source Notes
U1 RP2350 (Pico 2 module) DIP-40 module 1 $5.00 Raspberry Pi Or RP2350A QFN for custom footprint
U2–U5 ATM90E26 SSOP-28 4 $2.50 Microchip/Digikey Single-phase energy metering IC
U6 3.3V LDO (AMS1117-3.3 or AP2112K) SOT-223 / SOT-23-5 1 $0.30 LCSC Powers MCU + metering ICs
T1 AC voltage isolation transformer PCB mount 1 $3.00 Digikey 120V/240V to 9V, safety isolation
J1–J4 3.5mm TRS jack Through-hole 4 $0.50 LCSC CT clamp connector
J5 USB-C connector SMD 1 $0.40 LCSC 5V power input only
J6 UART header (1x4) 2.54mm pitch 1 $0.10 LCSC TX, RX, GND, 3V3
CT1–CT4 SCT-013-030 Split-core clamp 4 $8.00 Amazon/AliExpress 30A, 1V output, non-invasive
Y1 12 MHz crystal HC49 or 3215 1 $0.20 LCSC For RP2350 (if not using module)
R, C Passives (burden, decoupling, filter) 0402/0603 ~60 $0.01 LCSC See full BOM
D1–D2 Status LEDs 0603 2 $0.05 LCSC Power + activity
D3–D6 TVS diodes (ESD protection) SOD-323 4 $0.10 LCSC CT input protection

Estimated Total BOM Cost

Item Cost
PCB components (excluding CT clamps) ~$20
4x CT clamps (SCT-013-030) ~$32
PCB fabrication (JLCPCB, qty 5) ~$8
3D-printed enclosure (PLA/PETG) ~$3
Total per board ~$63

Full interactive BOM will be generated from KiCad and committed to hardware/bom/ as both CSV and HTML.


7. PCB Layout

Status: Layout pending schematic completion. Design rules below.

Design Rules

Parameter Value Reason
Layers 4 (Sig / GND / PWR / Sig) Mixed-signal requires solid ground plane
Ground plane Unbroken on layer 2 Critical for metering IC accuracy and noise rejection
Analog/digital split Separate regions, single-point star ground Prevent digital noise from coupling into metering inputs
CT input traces Short, differential pair, guarded by ground Minimize noise pickup on low-level current signals
SPI traces Controlled impedance not required (< 10 MHz), but length-matched Reliable communication at metering IC SPI speeds
Voltage reference Routed to all 4 ICs with matched trace lengths Consistent voltage measurement across channels
USB-C Standard USB 2.0 routing Power only (no high-speed data)
Clearance (mains-rated) Not applicable — no mains traces on PCB All AC sensing via CT clamps (contactless) and isolation transformer
Board size Target 80mm × 60mm Compact enough for 3D-printed enclosure
Fabrication JLCPCB, 4-layer, ENIG finish Gerber files committed to hardware/gerbers/

Layout Strategy

┌──────────────────────────────────────────────────┐
│                                                  │
│  ┌─────────┐   ┌──────┐  ┌──────┐  ┌──────┐    │
│  │ RP2350  │   │ IC 0 │  │ IC 1 │  │ USB-C│    │
│  │ (MCU)   │   │      │  │      │  │      │    │
│  │         │   └──────┘  └──────┘  └──────┘    │
│  │  SPI    │                                    │
│  │  UART   │   ┌──────┐  ┌──────┐  ┌──────┐    │
│  └─────────┘   │ IC 2 │  │ IC 3 │  │ UART │    │
│                │      │  │      │  │header│    │
│  ┌──────────┐  └──────┘  └──────┘  └──────┘    │
│  │ Voltage  │                                    │
│  │ Ref Ckt  │  [J1] [J2] [J3] [J4]              │
│  │ (iso TX) │   CT    CT    CT    CT              │
│  └──────────┘  clamp  clamp clamp clamp           │
│                jacks  jacks jacks jacks           │
│  [LED] [LED]                                      │
│                                                    │
│  ─────────── ANALOG REGION ── │ ── DIGITAL ────   │
│                                                    │
└──────────────────────────────────────────────────┘

8. Firmware Architecture

Status: Firmware skeleton committed. Full implementation after hardware validation on breadboard prototype.

The firmware runs on the RP2350 in C using the Pico SDK. It follows the same architecture as the YOSO-YAi production BMC firmware: a main loop with sensor reads, computation, and telemetry output.

Module Structure

Module File Function
Main main.c Init, main loop, watchdog, boot banner
SPI Driver spi_driver.c SPI bus init, chip select management, read/write to metering ICs
ATM90E26 Driver atm90e26.c Register map, calibration writes, measurement reads, status checks
Telemetry telemetry.c Build JSON payload, UART TX at configured rate
Calibration calibration.c Load/save calibration constants from flash, apply to readings
Watchdog watchdog.c Hardware watchdog, auto-reset on stall > 5 seconds
LED led.c Power LED (solid), activity LED (blink on UART TX)

Main Loop

// Simplified main loop — actual implementation in firmware/src/main.c

while (true) {
    watchdog_update();

    // Read all 4 metering ICs over SPI
    for (int ch = 0; ch < 4; ch++) {
        readings[ch] = atm90e26_read_all(ch);
        // readings[ch] contains:
        //   .watts_rms    — real power (W)
        //   .volts_rms    — RMS voltage (V)
        //   .amps_rms     — RMS current (A)
        //   .power_factor — PF (0.0 - 1.0)
        //   .var          — reactive power (VAR)
        //   .frequency    — line frequency (Hz)
        //   .energy_wh    — accumulated energy (Wh)
    }

    // Build and transmit JSON telemetry
    telemetry_send(readings, 4);

    // Blink activity LED
    led_activity_pulse();

    // Wait for next sample interval
    sleep_ms(sample_interval_ms);
}

Boot Banner

═══════════════════════════════════════
  epi-meter v0.1.0
  RP2350 | 4-ch AC Energy Metering
  YOSO-YAi LLC | Franzabner
  UART: 115200 baud | JSON
  Channels: 4
  Status: OK
═══════════════════════════════════════

9. Telemetry Protocol

The epi-meter streams JSON over UART at 115200 baud. The protocol is identical to the existing YOSO-YAi FACTORY telemetry format, ensuring direct compatibility with the Orchestrator Pi's SQLite logging and display system.

JSON Payload (Transmitted at 1 Hz default)

{
  "device": "epi-meter",
  "firmware": "0.1.0",
  "ts": 1234567,
  "channels": [
    {
      "ch": 0,
      "watts": 12.450,
      "volts": 121.30,
      "amps": 0.103,
      "pf": 0.997,
      "var": 0.95,
      "freq": 60.01,
      "wh": 0.0035
    },
    {
      "ch": 1,
      "watts": 11.890,
      "volts": 121.28,
      "amps": 0.098,
      "pf": 0.996,
      "var": 0.88,
      "freq": 60.01,
      "wh": 0.0033
    },
    {
      "ch": 2,
      "watts": 12.110,
      "volts": 121.31,
      "amps": 0.100,
      "pf": 0.997,
      "var": 0.91,
      "freq": 60.01,
      "wh": 0.0034
    },
    {
      "ch": 3,
      "watts": 12.340,
      "volts": 121.29,
      "amps": 0.102,
      "pf": 0.997,
      "var": 0.93,
      "freq": 60.01,
      "wh": 0.0034
    }
  ],
  "cluster": {
    "total_watts": 48.790,
    "avg_watts": 12.198,
    "peak_watts": 12.450
  }
}

Field Reference

Field Type Unit Description
device string Always "epi-meter"
firmware string Firmware version (semver)
ts integer ms Milliseconds since boot
ch integer Channel index (0–3)
watts float W True RMS real power
volts float V True RMS voltage
amps float A True RMS current
pf float Power factor (0.0–1.0)
var float VAR Reactive power
freq float Hz Line frequency
wh float Wh Accumulated energy since reset
total_watts float W Sum of all channel watts
avg_watts float W Mean of all channel watts
peak_watts float W Maximum of all channel watts

10. Calibration Procedure

Status: Procedure documented. Will be validated against known loads when hardware is built.

Equipment Needed

  • Known resistive load (e.g., 100W incandescent bulb or calibrated resistive heater)
  • Reference power meter (Kill-A-Watt P4400 or equivalent, ±0.5% accuracy)
  • Multimeter for voltage verification

Steps

  1. Voltage Calibration

    • Connect epi-meter voltage reference to AC mains via isolation transformer
    • Compare epi-meter voltage reading against multimeter on the same outlet
    • Adjust ATM90E26 voltage gain register (Ugain) until readings match within ±0.5%
  2. Current Calibration (Per Channel)

    • Connect known resistive load through CT clamp on channel under test
    • Read current from reference power meter
    • Adjust ATM90E26 current gain register (Igain) until readings match within ±1%
  3. Power Calibration Verification

    • With calibrated voltage and current, compare watts reading against reference meter
    • Verify power factor reads ~1.00 for purely resistive load
    • If power reading deviates > 1%, adjust power offset register
  4. Multi-Channel Verification

    • Connect identical loads on all 4 channels simultaneously
    • Verify all channels read within ±1% of each other
    • Record calibration constants to RP2350 flash

Calibration Constants Storage

// Stored in RP2350 flash (last sector)
typedef struct {
    uint32_t magic;          // 0xEP1CAL00
    uint16_t ugain;          // Voltage gain register value
    uint16_t igain[4];       // Current gain per channel
    int16_t  power_offset[4];// Power offset per channel
    uint32_t crc32;          // Integrity check
} calibration_t;

11. Enclosure

Status: Enclosure design pending PCB dimensions finalization. Will be designed in Fusion 360 and printed on Bambu Lab H2D.

Design Requirements

Requirement Specification
Material PLA or PETG (prototyping), ASA (production)
Color Matte black (YOSO-YAi brand)
Access CT clamp jacks accessible from one side, USB-C + UART from another
Mounting M3 standoffs for PCB, optional DIN rail clip
Ventilation Not required (< 500 mW dissipation)
Label YOSO-YAi logo + "epi-meter" engraved/embossed
Print settings 0.2mm layer height, 3 walls, 20% infill

Files (When Complete)

enclosure/
├── fusion360/
│   └── epi-meter-enclosure.f3d    # Editable Fusion 360 source
└── stl/
    ├── epi-meter-top.stl          # Top shell
    ├── epi-meter-bottom.stl       # Bottom shell with standoffs
    └── epi-meter-din-clip.stl     # Optional DIN rail mounting clip

12. Assembly Guide

Status: Guide structure documented. Step-by-step photos will be added during first board assembly.

See docs/assembly/ for the full illustrated guide.

Assembly Overview

Step Description Tools
1 Order PCB from JLCPCB using provided Gerber files Web browser
2 Order components from BOM (LCSC/Digikey/Amazon) Web browser
3 Solder SMD components (metering ICs, passives, LDO) Hot air / reflow oven
4 Solder through-hole components (CT jacks, UART header, module) Soldering iron
5 Solder USB-C connector Soldering iron / hot air
6 Visual inspection + continuity check Multimeter
7 Flash RP2350 firmware via USB USB cable, picotool
8 Run calibration procedure Reference load + meter
9 Print and assemble enclosure 3D printer
10 Connect CT clamps and UART cable
11 Verify telemetry output Serial terminal

13. Integration with EPI Pipeline

The epi-meter is one component of the complete EPI measurement system:

┌──────────┐   surgery   ┌──────────┐  inference  ┌──────────┐
│ DGX      ├────────────▶│ Pi       ├────────────▶│ epi-     │
│ Spark    │  deploy GGUF│ Cluster  │  AC power   │ meter    │
│ (surgeon)│             │ (patient)│◀────────────│(instrmnt)│
└──────────┘             └──────────┘  CT clamps  └────┬─────┘
                                                       │ UART
                                                       │ JSON
                                                       ▼
                                                 ┌──────────┐
                                                 │Orchestrtr│
                                                 │Pi        │
                                                 │(SQLite)  │
                                                 └────┬─────┘
                                                      │ SSH
                                                      ▼
                                                 ┌──────────┐
                                                 │epi-bench │
                                                 │(EPI calc)│
                                                 └──────────┘

Orchestrator Integration

The Orchestrator Pi receives epi-meter JSON via UART (GPIO15 RX) and:

  1. Logs every sample to SQLite with microsecond timestamps
  2. Renders live power gauges on the 10-inch display
  3. Exposes data via SSH for epi-bench to pull

epi-bench Integration

The epi-bench tooling:

  1. SSHs to Orchestrator, queries SQLite for the power trace of a specific run
  2. Pairs with benchmark results (tokens generated, accuracy scores)
  3. Calculates EPI = Joules/Token ÷ Accuracy
  4. Generates Pareto plots and comparison charts

14. Breadboard Prototype

Before committing to the epi-meter PCB, a single metering IC channel is prototyped on the YOSO-YAi FACTORY exposed breadboard — the same Pico 2 breadboard that validates WRK-IN BMC subsystems.

What the Breadboard Validates

Subsystem Validation Target
CT clamp signal conditioning Burden resistor value, signal level, noise floor
Metering IC SPI communication Register read/write, chip select, clock polarity
True RMS power calculation Watts reading vs. reference meter on known load
UART telemetry integration JSON format, Orchestrator SQLite logging, display rendering
Calibration procedure Gain register tuning, offset correction, accuracy verification

Breadboard → PCB Mapping

Breadboard epi-meter PCB
Pico 2 (DIP, breadboard) RP2350 (QFN soldered, or Pico 2 module)
Single metering IC on breakout 4x ATM90E26 (SSOP-28, reflow soldered)
Jumper wires for SPI Copper traces, length-matched
Alligator clip CT connection 3.5mm TRS jacks
Breadboard supply USB-C + LDO

Once the single-channel prototype reads clean power data and the EPI calculation pipeline produces valid results, the 4-channel PCB design proceeds with confidence. Every trace on the epi-meter PCB will have been validated as a wire on the breadboard first.


15. Repository Structure

epi-meter/
├── README.md                      # This file
├── LICENSE-HARDWARE               # CERN OHL-S v2 (hardware)
├── LICENSE-FIRMWARE               # MIT (firmware)
├── CONTRIBUTING.md                # How to contribute
├── .gitignore
│
├── hardware/
│   ├── kicad/                     # KiCad 9.0 project files
│   │   ├── epi-meter.kicad_pro    # Project file
│   │   ├── epi-meter.kicad_sch    # Schematic
│   │   ├── epi-meter.kicad_pcb    # PCB layout
│   │   └── libs/                  # Custom footprints + symbols
│   ├── gerbers/                   # Production Gerber files (JLCPCB-ready)
│   └── bom/                       # Bill of Materials (CSV + interactive HTML)
│
├── firmware/
│   ├── CMakeLists.txt             # Pico SDK build system
│   ├── src/
│   │   ├── main.c                 # Entry point, main loop, watchdog
│   │   ├── spi_driver.c           # SPI bus management
│   │   ├── atm90e26.c             # Metering IC driver
│   │   ├── telemetry.c            # JSON builder + UART TX
│   │   ├── calibration.c          # Flash storage for cal constants
│   │   ├── watchdog.c             # Hardware watchdog
│   │   └── led.c                  # Status LED control
│   ├── include/
│   │   ├── atm90e26.h             # Metering IC register map + API
│   │   ├── telemetry.h            # Telemetry API
│   │   ├── calibration.h          # Calibration data structures
│   │   └── pins.h                 # GPIO pin assignments
│   └── lib/                       # Third-party libraries (if any)
│
├── enclosure/
│   ├── fusion360/                 # Editable Fusion 360 source
│   └── stl/                       # Print-ready STL files
│
├── docs/
│   ├── assembly/                  # Step-by-step assembly guide
│   ├── calibration/               # Calibration procedure (detailed)
│   └── images/                    # Photos, diagrams, logo
│
├── tools/
│   └── serial_monitor.py          # Simple serial monitor for testing
│
└── test/
    └── test_telemetry_parse.py    # Verify JSON telemetry parsing

16. Build Your Own

Quick Start

  1. Order the PCB

    • Download Gerber files from hardware/gerbers/
    • Upload to JLCPCB — 4-layer, ENIG, default settings
    • Typical cost: ~$8 for 5 boards
  2. Order Components

    • Download BOM from hardware/bom/
    • Order from LCSC (most passives + ICs) and Amazon/AliExpress (CT clamps)
    • Typical cost: ~$55 for all components
  3. Assemble

    • Follow the assembly guide
    • SMD soldering required (SSOP-28 metering ICs)
  4. Flash Firmware

    cd firmware/
    mkdir build && cd build
    cmake .. -DPICO_SDK_PATH=/path/to/pico-sdk
    make
    # Hold BOOTSEL, connect USB, release
    cp epi-meter.uf2 /media/RPI-RP2/
  5. Calibrate

  6. Connect and Measure

    • Clip CT clamps around each Pi node's AC power cable
    • Connect UART to Orchestrator Pi (or any serial terminal)
    • Verify JSON telemetry at 115200 baud

17. Four Purposes

This board was designed to serve four objectives simultaneously:

Purpose How
Research Instrument Produces the energy data for all EPI research papers. Ground truth for joules/token measurement.
Engineering Portfolio Demonstrates KiCad mixed-signal layout, RP2350 embedded firmware, CT clamp circuits, metering IC integration, 3D-printed enclosure. Upwork portfolio piece.
Open-Source Project Full design files enable community replication. Builders become EPI contributors. Community funnel: build board → measure EPI → join research → discover YOSO-YAi.
Content Vehicle Build process documented for YouTube. Digital Abner walks through schematic, layout, soldering, calibration. Every step is an episode.

18. Contributing

See CONTRIBUTING.md for details.

Contributions welcome in:

  • Schematic review — catch errors before fabrication
  • Firmware — metering IC drivers, calibration algorithms
  • Alternative metering ICs — ports to ADE7753, ADE9000, CS5460A
  • Alternative MCUs — ports to ESP32-S3, STM32 (if you don't have a Pico 2)
  • Enclosure variants — rack-mount, DIN rail, different printer compatibility
  • Documentation — assembly photos, calibration tips, troubleshooting

19. License

Component License
Hardware (schematic, PCB, Gerbers, BOM) CERN Open Hardware Licence v2 — Strongly Reciprocal (CERN-OHL-S-2.0)
Firmware (C source, build files) MIT License
Documentation (assembly guide, calibration, images) CC BY 4.0

The epi-meter contains zero YOSO-YAi product architecture. No ATECC608B, no CM5 carrier board routing, no WRK-IN BMC firmware. Fully original power measurement IP. Completely public.


An electrician puts a meter on the circuit.

YOSO-YAi

Francisco Abner — Electrical Engineer, CEO & Founder, YOSO-YAi LLC

About

Open-source 4-channel AC power measurement board for AI energy research. RP2350 + ATM90E26 metering ICs + CT clamps. KiCad 9.0 schematic, Pico SDK firmware, 3D-printed enclosure. Measures the true cost of every token in joules.

Topics

Resources

License

MIT, Unknown licenses found

Licenses found

MIT
LICENSE-FIRMWARE
Unknown
LICENSE-HARDWARE

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors