Inspiration
Leaving an iron, a space heater, or a hot straightener on after walking out of the room is one of those small anxieties everyone knows — and it's not just a feeling, it's a genuinely common cause of preventable house fires. Existing "smart" solutions mostly require swapping in a proprietary smart plug tied to one app and one brand. I wanted something that works with an appliance already in the house, without rewiring anything.
What it does
WattWatch clips onto the outside of an appliance's power cord — no wires cut, no mains ever touching the board — and reads how much current it's drawing. A motion sensor tracks whether the room is actually occupied. If the appliance is on and the room's been empty past a set window, it raises a local alarm (buzzer + LED) and pushes a notification to a phone. A small OLED shows live current draw and state, and a mute button silences a known false trigger without disabling monitoring — it re-arms on its own instead of staying quiet forever.
How I built it
The core is an ESP32-WROOM-32, chosen for onboard WiFi so it can push notifications directly. The hardest part was the analog front end: a non-invasive current-transformer clamp produces a small AC signal, which needs a burden resistor and a bias network to land inside the ESP32 ADC's 0–3.3V input range without clipping or going negative. From there, I wrote firmware that samples the ADC, computes true RMS current, and runs a state machine that cross-references current draw against motion-sensor input.
I built the circuit as a real schematic in KiCad — using the actual ESP32-WROOM-32 module symbol with its real GPIO pin numbers rather than a generic placeholder — and validated it against KiCad's Electrical Rules Checker until it came back clean. From there I extended it into a full PCB: every part placed with its real physical footprint, fully netlisted, and checked against KiCad's Design Rules Checker.
Challenges I ran into
Sizing the analog front end correctly took real iteration — the burden resistor has to stay linear across realistic appliance currents (up to ~30-40A) while still being sensitive enough to catch a low-draw device like a phone charger. I also hit a subtle bug where KiCad's board coordinate system doesn't match the symbol library's coordinate system one-to-one, which silently connected some wiring to the mirror-image of the correct pin — the kind of bug that looks fine visually but is electrically wrong. Catching that meant running verification (ERC/DRC) constantly rather than trusting the design by eye. I also had to decide what to leave unfinished rather than fake: I chose not to draw copper traces I couldn't verify were collision-free, because a board that looks routed but is actually shorted is worse than an honest, unrouted ratsnest.
Accomplishments that I'm proud of
Getting from a rough idea to a schematic and PCB that both pass their respective validation checks clean, using real parts and a real microcontroller footprint rather than placeholders. It was important to me that this be an actual, checkable design — not just a diagram that looks plausible.
What I learned
I came out of this with a much better grasp of non-invasive AC current sensing — why a burden resistor and bias network are necessary, and the actual math behind sizing them. I also learned how much of real circuit design is verification-driven: most of the design that ended up "correct" got there by catching something wrong through a checker, not by getting it right the first time. And I learned that finishing something honestly — leaving a clearly-marked gap instead of a plausible-looking fake — is worth more than a result that only looks complete.
What's next for WattWatch
-Finish copper routing in KiCad's interactive router -Populate the optional op-amp front end for better accuracy at low currents -Add deep-sleep duty cycling to firmware for multi-day battery life on a single charge -Build and test a physical prototype -Explore a multi-channel version that can monitor several appliances from one unit
Log in or sign up for Devpost to join the conversation.