GridBuddy is a solar microgrid monitoring and management system designed to retrofit existing solar trailers and help operators (often non-technical volunteers) understand system status at a glance and extend runtime by intelligently shedding non-essential loads.
Developed as part of the Georgia Tech undergraduate capstone project in Mechanical Engineering. Spring 2025
This repository contains multiple PlatformIO firmware modules that together form the GridBuddy prototype:
monitoring_module/— DC-side sensing + on-device displaypriority_switch_module/— smart-plug / outlet controlremote_module/— an optional hand-held monitor that sync the system information
Each folder is its own PlatformIO project (see each module’s
platformio.ini).
GridBuddy is split into two major subsystems:
-
Monitoring Module (DC side)
Measures PV/battery electrical quantities using non-invasive Hall-effect current sensing and a voltage divider, digitized with a high-resolution external ADC and displayed locally on an ESP32-based UI. -
Smart Plug Module (AC side)
Controls multiple AC outlets through relays (with manual override + automatic mode) to shed non-essential loads when battery conditions require it.
The modules communicate via ESP32 wireless telemetry/control.
- Microcontroller: ESP32
- External ADC: ADS1115 (16-bit) over I²C for improved resolution vs. typical on-board ADCs
- Voltage measurement: resistive divider scales high DC bus voltage into the ADC input range
- Current measurement: non-invasive Hall-effect current sensor(s) (PV input; optional battery charge/discharge channels)
- Power estimation: computed from measured
VandI - Retrofit-friendly wiring: inline install with MC4 connectors
These plots show the calibration relationships used to convert raw analog/ADC readings into physical units:
Hall-effect current sensor calibration: analog reading (mV) → current (A) using a fitted linear model.
Voltage divider calibration: analog reading → bus voltage (V) using a fitted linear model.
- Microcontroller: ESP32
- Power chain: 110 VAC input → AC/DC supply → regulation for logic/relays
- Outputs: multiple relay-controlled outlets (prototype: 4)
- Control modes:
- Manual override via local buttons (force on/off)
- Automatic mode based on a finite-state load-shedding strategy
- Stability: uses hysteresis to reduce outlet “chatter”
How the state machine works (high level):
- The controller classifies the system using:
- Time-of-day (day / transitional / night)
- Battery state-of-charge (sufficient → at risk)
- Rate-of-charge (charging vs. discharging)
- These inputs map to a discrete system state (NORMAL, ALERT 1, ALERT 2, CRITICAL).
- An operator override can force “always on” or “always off.”
- In automatic mode, the module either continues Normal Operation or issues a Request to Shed Load, which translates to switching one or more outlets off based on priority.







