Skip to the content
PCBKitNew board
2 layers185 × 126.1 mmWattMeter, the printed circuit board in 3D

This is a repo for a class project about making a wattmeter. Enjoy it if you want to aswell.

Size
185 × 126.1 mm
Copper layers
2
Thickness
1.6 mm
Parts
80
Nets
89
Pads
290
Tracks, vias
820, 72
Pours
10
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
10 Dec 2025
Updated
4 Jan 2026

Overview

WattMeter is an open-source printed circuit board by Mourty, from the Mourty/Wattmeter-Project repository on GitHub. It is a 2-layer board of 185 × 126.1 mm with 80 parts on 89 nets, routed with 820 tracks and 72 vias.

It is built around the ESP32-C6-DEVKITC-1-N8, GSD09002SEU and ATM90E32AS-AU-R, with the CR1220-2 among its other parts. Its parts include 17 capacitors, 16 resistors, 16 connectors, 6 diodes and 4 ICs. It belongs with the ESP32 and RISC-V boards of this library.

Main components

4

README

README.md

The Wattmeter Project

This project was created for a senior design course as part of my degree path. I wanted to create a wattmeter similar to the "Kill A Watt" meters typically available, but with an important change. I wanted the ability to log the energy consumption data over time. I created a functional prototype well before I even began the class, but decided to iterate on the project and improve it. This is my first project of this scale, and I am sure it isn't perfect. In fact I'm sure it can be improved upon, but it works well enough for me.

Features

  • Single Phase voltage, current, active power, reactive power, apparent power, frequency, and power factor measurement.
  • LCD Display for user readable measurements.
  • WiFi connectivity with RESTful API
  • Configurable via SD card or web interface
  • Dedicated Real time clock with automatic NTP syncing (WiFi required)
  • Logs data to an SD card for optional independent operation
  • Integrated UPS to prevent data loss due to power outage (100ish seconds plenty to automatically save data buffer)
  • Monitoring server for remote data collection, storage, and presentation using React and python.

Hardware

The hardware is a custom designed PCB with mostly through hole components. I chose through hole because it is what I wanted to use, more on this later. The meter uses the Atmel M90E32 Poly-phase energy monitoring IC to do the heavy lifting of accurate power measurement. The voltage input uses a stepdown transformer and voltage divider to bring the 120VAC input voltage down around a manageable 0.6vrms. The transformer is somewhat unnecessary as a series of resistors could do the same, but this also provides some transient protection and isolation. The current measurement utilizes a current transformer with a carefully sizes burden resistor to bring the voltage down to around 0.6vrms when 20 amps is flowing though the primary of the CT. The power supply for the whole board is an off the shelf AC to DC power supply. This provides stable "safe" power without needed to roll my own PSU. This is fed to a super capacitor, then to the LM2621 based boost converted. The super capacitor provided an energy buffer to allow for controlled shutdown of the microcontroller in the event of a power outage. This allows time to write the current buffer of power statistics to the SD card. without this feature the SD card would either need to be written to more often with small amounts of data or the buffer would be lost during a power outage. Depending on the setting this could be multiple minutes or hours of data lost. The size of the super cap was chosen due to part availability at the time; It could easily be a quarter or even an eighth as large and still serve its purpose. None of the components have been price optimized to a good degree. For example the diodes that are apart of the super capacitor/boost converter are rated for 2 amps, but don't ever see near that amount. These are simply what I had on hand during the design and didn't see a need to order different ones. So If you make this project too, you might want to consider components carefully, you might save some money.

Wattmeter 5.2 Board Render.

I figured I could improve upon the wattmeter with the wattmeterJR. This version has fewer features, but is smaller and uses SMD components. It lacks an LCD display or the whole integrated UPS part. It is mainly to measure the same power statistics, but really requires the remote server to log the data. it is much less user friendly to build and to debug, but is cheaper and smaller. You can find this version at https://github.com/Mourty/WattmeterJR

Firmware

I wrote the firmware with assistance from Claude.ai. I'm not the sort to go around proclaiming to be a coder, so you will find issues here. I used the Arduino IDE to develop, compile, and upload the code to the ESP32. The code is semi-organized into different files and imported where needed. The meter itself can be configured using the SD card. You will need to write the settings.ini to the SD card. In the settings you will find a place to configure your WiFi credentials as well as other settings. Many of these will seem cryptic, but most of them won't need to be modified at all. Most are actually configuration registers for the ATM90E32. You can find more on what the do in the IC's datasheet.

Service

The service is a web server that uses React for the front end and python for the backend. I again used Claude.ai to write much of the code here. The service is containerized using docker, so you should be able to get it up and running fairly easily. I used a Raspberry PI 3+, but in theory any linux computer can run this server. You will need to install docker to compose the containers and to run them. Docker should take care of installing other things for the containers like python and such.

Live View.

Historical View.

I don't plan to maintain this or improve further at this time. If someone wants to improve this feel free, it won't hurt my feelings if you fork this project and do cool things with it, just give me credit for what you use. I have no idea what license this project should have given it uses a few external libraries, so before you go attempting to monetize this project you might need to check on that.

Parts

80
QtyValueFootprintReferences
40.1uFCapacitor_THT:C_Disc_D6.0mm_W4.4mm_P5.00mmC7, C8, C9, C10
410kΩResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1, R2, R4, R7
310uFCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mmC12, C13, C15
31N5822 SchottkyDiode_THT:D_DO-201AD_P15.24mm_HorizontalD1, D2, D3
20.33uFCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mmC21, C22
2100ΩResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR10, R11
218nFCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC23, C24
21kΩResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR14, R18
25.1kΩResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR12, R13
2Series/ParaConnector_PinHeader_2.54mm:PinHeader_2x02_P2.54mm_VerticalJ14, J15
11.5A 250Vfuse holders:Fuseholder_Clip-5x20mm_Keystone_3512P_Inline_P23.62x7.27mm_D1.02x2.41x1.02x1.57mm_Horizontal_With_ModelF4
1100mA 250VFuse:Fuseholder_TR5_Littelfuse_No560_No460F2
1100mA 250VFuseHolder OGD:00318231F1
1100nFCapacitor_THT:C_Disc_D8.0mm_W5.0mm_P5.00mmC4
110:13FD-210:3FD-224T4
112kΩResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR6
1130VACCapacitor_THT:C_Disc_D8.0mm_W5.0mm_P5.00mmRV1
116.384MHzCrystal:Crystal_HC49-U_VerticalY1
11N4734A 5.6VDiode_THT:D_DO-41_SOD81_P10.16mm_HorizontalD4
1200kΩResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR3
122μFCapacitor_THT:CP_Radial_Tantal_D5.5mm_P5.00mmC2
124kΩResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR19
1250mA 250VFuseHolder OGD:00318231F3
125Ω 2WResistor_THT:R_Axial_DIN0414_L11.9mm_D4.5mm_P5.08mm_VerticalR8
130ΩResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR9
132.768kHzCrystal:Crystal_DS26_D2.0mm_L6.0mm_HorizontalY2
139pFCapacitor_THT:C_Disc_D8.0mm_W5.0mm_P5.00mmC3
14.7uFCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mmC16
1499ΩResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR5
16.8μHInductor_THT:L_Radial_D12.0mm_P5.00mm_Fastron_11PL1
168μFCapacitor_THT:CP_Radial_Tantal_D5.5mm_P5.00mmC5
16F 6VCapacitor_THT:C_Rect_L19.0mm_W11.0mm_P15.00mm_MKS4C6
1ATM90E32AS-AU-RATM90E32AS:QFP50P900X900X120-48NIC1
1Boost InputConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ19
1Button PinsConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ2
1CR1220Battery Holders:BH127A1BT1
1CT1020CT1020:CT1020T1
1ESP32-C6-DEVKITC-1-N8ESP32:MODULE_ESP32-C6-DEVKITC-1-N8U1
1ExtrasConnector_PinHeader_2.54mm:PinHeader_1x10_P2.54mm_VerticalJ4
1GSD09002SEUSD card Holder:GSD09002SEUJ3
1HousingMounting Footprints:1591XXF Enclosure 4 pointN1
1I1Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ13
1I2 Use/GNDConnector_PinHeader_2.54mm:PinHeader_2x02_P2.54mm_VerticalJ10
1I3 Use/GNDConnector_PinHeader_2.54mm:PinHeader_2x02_P2.54mm_VerticalJ9
1InputScrew Terminals Custom:CUI_TB005-762-02BEJ11
1LCD PinsConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ1
1LM2621MMX_NOPBLM2621:SOP65P490X110-8NIC2
1LOGOMemes:Silksong LaceG***
1LOGOMemes:tank hill2 0.15.pngG***
1LOGOMemes:Hornet SilhouetteG***
1LOGOMemes:darksignG***
1LOGOMemes:Hank Hill pimp hat Silkscreen 0.150G***
1LOGOMemes:Hank Hill Silkscreen 0.150G***
1LOGOMemes:Hollow knight KnightG***
1PCF8523T/1_118PFC8523:SO8_SOT96-1_NXPU3
1PSU LEDLED_THT:LED_D5.0mmD6
1RAC10E-05SK_277RAC10E-05SK_277:RAC10E05SK277PS1
1SPI ATM90Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ5
1V1Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ17
1V2 Use/GNDConnector_PinHeader_2.54mm:PinHeader_2x02_P2.54mm_VerticalJ16
1V3 Use/GNDConnector_PinHeader_2.54mm:PinHeader_2x02_P2.54mm_VerticalJ12
1VCC LEDLED_THT:LED_D5.0mmD5
1VCC PinsConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ18
1Vout TrimmerPotentiometer_THT:Potentiometer_Bourns_3266Y_VerticalRV2

Questions

How big is the WattMeter PCB?

It measures 185 × 126.1 mm and has 2 copper layers, 1.6 mm thick.

What parts does the WattMeter use?

80 parts, built around the ESP32-C6-DEVKITC-1-N8, GSD09002SEU, ATM90E32AS-AU-R and CR1220-2. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the WattMeter KiCad files?

From the Mourty/Wattmeter-Project repository on GitHub, at the commit this page was made from: the board is Hardware/Circuit and PCB/WattMeter.kicad_pcb and its schematic Hardware/Circuit and PCB/WattMeter.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the WattMeter design in my own project?

Its repository states no licence, so its author keeps all rights: ask Mourty before reusing the design.

Similar boards

  • 2 layers117.2 × 52.6 mmPS2 memcard flex, the printed circuit board in 3D

    PS2 memcard flex

    tschicki/PS2-Portable

    A custom designed PS2 Portable

    13 parts207MIT
  • 4 layers160 × 100 mmMainboard 767, the printed circuit board in 3D

    Mainboard 767

    Synthron/ModLab

    Modular Electronics Workstation

    200 parts3
  • 4 layers100 × 77 mmCPU V2, the printed circuit board in 3D

    CPU V2

    Synthron/SynPLC

    STM32-based PLC system

    132 parts1
  • 2 layers79.5 × 79.5 mmEsp32-energymeter V2, the printed circuit board in 3D

    Esp32-energymeter V2

    ElektorLabs/esp32-energymeter

    The Elektor ESP32 Energy Meter project, featuring schematics, PCB designs, and ESPHome integration for advanced energy monitoring

    116 parts48MIT
  • 4 layers102.6 × 148 mmLoRa Monitor, the printed circuit board in 3D

    LoRa Monitor

    m-scasserra/TrabajoFinal_MIoT

    242 parts
  • 2 layers80.5 × 45.1 mmRa5 2022, the printed circuit board in 3D

    Ra5 2022

    pedrohqr/ra5_2022_m

    Base/carrier board for a modular PLC (Programmable Logic Controller): an I/O front-end with no main MCU of its own — sensing and metering peripherals are driven by a separate MCU+LTE modem card that plugs into the…

    154 parts
  • 2 layers63 × 58 mmOPNpool r5, the printed circuit board in 3D

    OPNpool r5

    cvonk/OPNpool

    Integrates the functionality of a Pentair pool controller into the smart home using ESP32 SoC.

    17 parts102