In this guide
Energy Harvesting for Low-Power IoT Sensor Nodes
Every IoT sensor node eventually faces the same quiet failure: the battery dies, the node goes silent, and nobody notices for weeks. You can fight this with bigger batteries and longer sleep intervals, and that works up to a point. But there is a fundamentally different approach: stop storing months of energy in a battery and start trickling energy in from the environment instead.
That is energy harvesting. A small solar cell, a thermoelectric module, or a vibration harvester converts ambient energy into electricity, a nano-power management chip collects it into a supercapacitor or a small rechargeable cell, and the node sips from that reservoir in short, well-planned bursts. Done right, the node never needs a battery swap. Done wrong, it dies on a cloudy Tuesday and you learn the difference between peak ratings and average yields the hard way.
This guide covers the three harvester types a student can realistically build with, with honest power numbers; the harvesting PMIC that makes it all work; the cold-start problem nobody warns you about; storage choices; and a worked power-budget example you can reuse.
Why harvesting changes the design, not just the power supply
A battery-powered node is designed around an energy budget: a fixed number of joules, spent over a target lifetime. A harvested node is designed around an energy balance: average harvested power must exceed average consumed power, forever, with storage covering the gaps. This flips the design question from "how long will it last?" to "how often can it afford to wake up?"
That single shift determines everything. Transmission — a Wi-Fi or LoRa burst at tens of milliamps — becomes the dominant cost, sleep current becomes the floor you cannot go under, and the harvester's average output (not its headline rating) sets your duty cycle. Students who skip this math end up with nodes that work beautifully on the bench under a desk lamp and die within days on a windowsill in winter.
Harvester type 1: solar (photovoltaic)
Solar is the most practical harvester for student projects, by a wide margin. It delivers the most energy per square centimetre, works anywhere there is daylight, and the components are cheap and forgiving.
Real numbers. A palm-sized hobby solar panel (roughly 60 x 80 mm) is typically sold with a peak rating around 0.1 to 0.2 W. Treat that rating as a laboratory best case. Indoors, the same panel typically delivers only tens of microwatts — office lighting is hundreds of lux against roughly one hundred thousand lux in direct sunlight, and cells are also far less efficient under artificial spectra. A panel on a bright windowsill can do meaningfully better, in the hundreds of microwatts to low milliwatts, but deep indoors you should plan for microwatts.
What this means for design. If your node averages a milliwatt or two, outdoor or window solar is comfortably enough. A purely indoor node living on room light must average tens of microwatts — possible only with very deep sleep and rare, short transmissions. Solar pairs well with maximum-power-point tracking: a harvesting PMIC samples the panel's open-circuit voltage and loads it at roughly half, which is close to the peak-power point for photovoltaic sources.
Harvester type 2: thermal (Seebeck / thermoelectric)
A thermoelectric generator module — the same Peltier device used for cooling, run in reverse — produces a voltage from a temperature difference across it (the Seebeck effect). One side sits on something warm, the other on a heatsink exposed to cooler air, and the bigger the difference, the more power.
Real numbers. With body heat as the source (a few degrees of difference), expect tens of microwatts per square centimetre — enough for wearables in principle, marginal in practice. On a genuinely hot surface like a warm pipe or an equipment housing with 30 to 50 K of difference, low milliwatts are achievable from a standard 40 x 40 mm module. But the catch is the heatsink: the cold side must actually stay cold, which means a real heatsink and airflow. A module sandwiched between two still, room-temperature surfaces produces almost nothing.
What this means for design. Thermal harvesting is honest and steady — it does not depend on the weather — but it only fits applications where a sustained temperature gradient already exists. For most student builds it works better as a demonstration of the principle than as the primary power source. If you do use one, set the PMIC's MPPT fraction to the higher setting (around 80% of open-circuit voltage), which suits thermoelectric sources better than the solar setting.
Harvester type 3: vibration (piezoelectric and electromagnetic)
Vibration harvesters convert mechanical motion into electricity. Piezoelectric cantilevers flex and generate an AC voltage; electromagnetic harvesters move a magnet past a coil. They are the natural choice for nodes mounted on motors, pumps, fans, or vehicles — places where the vibration is free and constant.
Real numbers. Output is typically tens of microwatts to a few milliwatts, and it is sharply peaked: a piezo cantilever harvests efficiently only near its resonant frequency. On a motor housing vibrating at the right frequency, a small piezo element with a rectifier can sustain a low-duty sensor node. Off resonance, output collapses. Electromagnetic harvesters are less peaky but bulkier for the same power.
What this means for design. Vibration harvesting is the most application-specific of the three. It shines when the node already lives on vibrating equipment, and it is a poor choice anywhere the vibration is intermittent or unpredictable. The output is AC, so you need rectification before the PMIC, and tuning the cantilever to the machine's dominant frequency is a genuine part of the build.
The harvesting PMIC and the cold-start problem
Harvesters output millivolts at high source impedance. You cannot wire a solar cell straight to a supercapacitor and expect a 3.3 V node to run: the panel's voltage collapses under load, and the capacitor charges to some useless fraction of a volt.
Harvesting PMICs exist to solve exactly this. The well-known family here is the BQ25504 / BQ25570 class of nano-power boost chargers, and the concepts matter more than the part number: a boost converter that starts from a few hundred millivolts, charges a storage element up to a programmed voltage, and gates the load behind a threshold.
Cold start is the concept most students miss. From a completely dead storage element, the boost converter needs a minimum input voltage to begin switching — typically a few hundred millivolts (check the datasheet; it sits roughly in the 330 to 600 mV range depending on the part). Below that, nothing happens: a dead node in a dark box stays dead, no matter how good the rest of the design is. Once the converter is running, it can keep harvesting from input voltages well under 100 mV, so the dangerous moment is only the very first wake-up.
The load must be gated. These PMICs provide a battery-voltage monitor output (often called VBAT_OK) that flips only when storage has reached a healthy level. Wire your microcontroller's enable or your load switch to it, and the node is physically prevented from trying to boot on a half-charged capacitor — the classic failure where a node brown-outs mid-boot, resets, and brown-outs again forever. If you take one habit from this guide, let it be this: never let the load touch storage before VBAT_OK.
A generic boost module is not a substitute. Ordinary boost converters draw milliamps of quiescent current and present a fixed load that collapses a high-impedance harvester; nano-power harvesting PMICs draw hundreds of nanoamps and actively track the source's peak-power point. That difference is the whole game.
Storage: supercapacitor versus small LiPo
The storage element sits between the harvester and the node, absorbing trickle charge and delivering bursts. Two choices dominate student builds.
Supercapacitors (typically 0.5 to 5 F at 5.5 V in student sizes) are the natural partner for harvesting. They survive hundreds of thousands of charge cycles, charge at whatever rate the harvester provides, and need no charge controller — just a voltage clamp so the PMIC does not overcharge them. Their weakness is energy density: a 1.5 F capacitor holds only a few joules in a usable voltage window, and leakage current of a few microamps constantly drains it. They are ideal when the harvester runs daily and the node only needs hours of dark reserve.
Small LiPo cells (200 to 500 mAh pouch cells) store vastly more energy — days or weeks of reserve — and self-discharge slowly. Their costs are real: they need a proper charger IC and protection (never connect a bare cell directly to a harvester), they wear out after hundreds of cycles, and they are unhappy being float-charged at full voltage indefinitely. They fit nodes that must survive long dark stretches, like indoor nodes between sunny days.
The hybrid is common and sensible: a supercapacitor handles the daily burst traffic, and a small LiPo behind it covers the dark days. Size the capacitor from the burst energy with E = 1/2 x C x (Vmax^2 - Vmin^2), using only the voltage window your PMIC and regulator actually allow — the energy below your minimum operating voltage does not exist for the node.
Worked example: sizing a solar node from scratch
Let us design a real node: an ESP32 that wakes every 10 minutes, reads a sensor, sends one short LoRa packet, and sleeps. All numbers below are typical values clearly labelled — substitute your own measured currents when you build.
Step 1 — energy per wake cycle. The active burst draws about 120 mA at 3.3 V for about 3 seconds: 0.12 x 3.3 x 3 = roughly 1.19 J. Deep sleep draws about 8 uA at 3.3 V (about 26 uW) for the remaining 597 seconds: roughly 0.016 J. One full cycle costs about 1.21 J.
Step 2 — average power. 1.21 J spread over 600 seconds is about 2.0 mW average. That is the number the harvester must beat, continuously averaged over days.
Step 3 — check against the harvester. A palm-sized panel on a windowsill might average roughly 2 mW through a cloudy day into storage. That is borderline — one gloomy week and the node starves. Two honest fixes: stretch the wake interval to 15 minutes (average drops to about 1.35 mW, a comfortable margin), or use a slightly larger panel. Never fix a power deficit by hoping for sun.
Step 4 — size the storage. Pick a 1.5 F, 5.5 V supercapacitor and a usable window of 4.2 V down to 3.3 V: E = 0.5 x 1.5 x (4.2^2 - 3.3^2) = about 5.1 J. At 1.35 J per 15-minute cycle, that covers roughly three to four cycles — about an hour of zero-input operation. Enough to ride out a passing storm, not a monsoon week; for longer, add the LiPo.
Step 5 — sanity-check the leaks. Capacitor leakage of a couple of microamps and PMIC quiescent draw in the hundreds of nanoamps are both far below the 8 uA sleep current, so neither dominates the budget. If your sleep current were 100 uA instead, the story would be different — which is why measuring real sleep current is step zero of every harvested design.
A tiny script keeps the arithmetic honest when you iterate on duty cycles:
# duty-cycle power budget: fill in YOUR measured numbers
v = 3.3 # supply voltage (V)
i_active = 0.120 # active current (A)
t_active = 3.0 # active time per cycle (s)
i_sleep = 8e-6 # sleep current (A)
t_period = 15 * 60 # wake interval (s)
e_cycle = v * (i_active * t_active + i_sleep * (t_period - t_active))
p_avg = e_cycle / t_period
print(f"energy per cycle: {e_cycle:.2f} J, average power: {p_avg*1000:.2f} mW")
If average harvested power is not comfortably above that printed average, lengthen the interval or shrink the burst before you touch hardware.
Three builds you can actually finish
1. Solar weather node on a supercapacitor. A small panel, a BQ25570-class harvester board, a 1.5 F supercapacitor, a BME280 sensor, and an ESP32 or LoRa module in deep sleep. Wake every 15 minutes, transmit, sleep. What you learn: real sleep-current measurement, VBAT_OK load gating, and how violently average yield varies between a sunny and an overcast day. This is the reference build — start here.
2. Vibration-powered machine monitor. A piezo disc or cantilever mounted on a motor or fan housing, a bridge rectifier, a storage capacitor, and a tiny microcontroller that wakes on VBAT_OK to take one reading and blink an LED or send a packet. What you learn: resonance matters enormously — retune the cantilever and watch the output collapse — and why vibration harvesting only fits equipment that never stops shaking.
3. Thermal demo node on a hot pipe. A 40 x 40 mm TEG module clamped between a warm pipe and a finned heatsink, feeding a harvester PMIC set to the high MPPT fraction, powering a temperature readout that only updates when storage is full. What you learn: the Seebeck effect hands-on, and an honest feel for how much heatsinking a few milliwatts actually demands. Treat this one as a demonstration, not a deployment.
FAQ
Can a node run forever on indoor room light alone?
Only in very constrained designs. A few square centimetres of cells under ordinary indoor lighting typically yield tens of microwatts. If your sleep current is a few microamps and you transmit rarely and briefly, the math can close. If your node averages a milliwatt, it cannot — no amount of wishing changes the lux on the wall. Measure your light level with a lux meter app, estimate tens of microwatts per few cm2, and do the budget first.
My harvester works but the node keeps dying. Why?
The usual suspect is cold start plus an ungated load. If the microcontroller is wired straight to storage, it tries to boot the moment the capacitor reaches its brown-out threshold, collapses the rail mid-boot, resets, and repeats forever — burning every joule the harvester collects. Gate the load behind VBAT_OK so the node only boots on genuinely full storage.
Supercapacitor or battery?
Bursts and longevity favour the supercapacitor: hundreds of thousands of cycles and no charge controller. Long dark reserve favours the small LiPo: far more joules per rupee and per gram. Many real designs use both — the capacitor for daily cycling, the cell for the bad week. If you choose the cell, it gets a proper charger IC and protection, no exceptions.
Can I skip the harvesting PMIC and use a cheap boost module?
Not for real harvesting. Generic boost modules draw milliamps just sitting there and present a fixed load that drags a high-impedance harvester down to nothing. Nano-power harvesting PMICs draw well under a microamp and track the source's peak-power point as light and temperature drift. The PMIC is the part that makes the physics workable; the boost module is the part that teaches you why.
How do I measure what my harvester actually yields?
Never trust the peak rating alone. Put the harvester across a known load resistor, log the voltage over a full day with a multimeter or a logging ADC, and compute the average power — average, not peak, is what sizes the design. Repeat on a cloudy day. The gap between the two logs is the most educational measurement in this whole guide.
Limitations
- Averages rule, peaks mislead. A panel rated 0.2 W at noon delivers nothing at midnight; the design lives or dies on the 24-hour average through the worst week, not the datasheet headline.
- Cold start is a hard floor. Below a few hundred millivolts of input, the boost converter never begins switching. A fully dead node in a dark enclosure stays dead until conditions improve — plan the first deployment accordingly.
- Thermal needs a real, sustained gradient. The Seebeck output scales with the temperature difference, and the cold side needs an actual heatsink with airflow. Two lukewarm surfaces pressed together produce essentially nothing.
- Vibration harvesters are narrow-band. A piezo cantilever tuned away from the machine's dominant frequency loses most of its output. Change the machine speed and you may need to retune.
- Harvesting does not fix firmware that never sleeps. If the node's sleep current is hundreds of microamps, leakage and sleep drain eat the trickle before it accumulates. Get sleep current into the single-digit microamps first; harvesting multiplies a good budget, it does not rescue a bad one.