Stash: Flexible Energy Storage for Intermittent Sensors

Batteryless sensors promise a sustainable future for sensing, but they face significant challenges when storing and using environmental energy. Incoming energy can fluctuate unpredictably between periods of scarcity and abundance, and device performance depends on both incoming energy and how much a device can store. Existing batteryless devices have used fixed or run-time selectable front-end capacitor banks to meet the energy needs of different tasks. Neither approach adapts well to rapidly changing energy harvesting conditions, nor does it allow devices to store excess energy during times of abundance without sacrificing performance. This article presents Stash, a hardware back-end energy storage technique that allows batteryless devices to charge quickly and store excess energy when it is abundant, extending their operating time and carrying out additional tasks without compromising the main ones. Stash performs like a small capacitor device when small capacitors excel and like a large capacitor device when large capacitors excel, with no additional software complexity and negligible power overhead. We evaluate Stash using two applications—temperature sensing and wearable activity monitoring—under both synthetic solar energy and recorded solar and thermal traces from various human activities. Our results show that Stash increased sensor coverage by up to 15% under variable energy-harvesting conditions when compared to competitor configurations that used fixed small, large, and reconfigurable front-end energy storage.


INTRODUCTION
Batteryless, intermittently powered sensors promise a lower-cost, more-sustainable alternative to their traditional battery-powered counterparts in many sensing applications, including greenhouse and archaeological site monitoring [2,19], health tracking [24,29,32,41], and gesture recognition for interactive interfaces [43].With variable and unpredictable energy harvesting patterns and tight resource constraints, they are also challenging to design.
One challenge is tuning a device's energy storage.The unpredictable nature of harvested energy, along with the application requirements and behaviors, often makes it difficult for designers 18:2 A. Alsubhi et al. to decide on the size of the storage capacitor (or capacitors) required for each application and harvesting environment.Small changes in energy storage capacity can significantly impact a device or an application's performance [49], and the conventional intuitionâĂŤthat increasing energy storage is always betterâĂŤis often wrong, especially for devices that experience frequent fluctuations in harvested energy, such as kinetic/solar-powered wearables.Similarly, solar-powered devices located near trees can also experience inconsistent harvested energy, frequently varying from minute to minute.
A few techniques aim to improve energy storage for intermittent devices by proposing various approaches to size the front-end storage residing between the harvester and system load.These techniques premise that energy harvesting fluctuates smoothly over time, such as natural light intensity varying hourly during the day or seasonally throughout the year [31].Federated energy storage (United Federation of Peripherals (UFoP) [19]) decouples processor storage from its peripherals, allowing devices to turn on quickly even when only partially charged, but with fixedsized capacitors, UFoP users still face the same tradeoffs.In contrast, Capybara's reconfigurable bank of capacitors [11] provides devices with the ability to adjust their energy storage to meet the needs of different application tasks during run time.Nevertheless, Capybara is unable to adapt to quickly changing harvesting conditions, since it can only make changes when its microcontroller unit (MCU) is active.This can delay reactions.When harvesting conditions change, the device can't adjust until after it is fully charged based on its current storage setting.If a large storage size is selected and energy becomes scarce during a power outage, that outage may last indefinitely until (1) harvesting conditions improve or (2) the energy switches' state expires and resets (approximately 3 min in the published version).GRANT [48] also provides a new mechanism for routing energy stored on one peripheral's capacitor to another at runtime-a mechanism that only works when the MCU is active, incurs additional computation costs and delays, and is unable to adapt to changing harvesting conditions during power outages.
All of these methods make the front-end energy storage more flexible to meet application needs, but none allow the system to adapt to changing harvesting conditions at all times (including during power outages).
Morphy [46], however, aims to maximize the operation time for Internet-of-Thing devices in response to changes in harvesting environments by offering run-time configurable front-end storage using an additional co-processor that monitors the harvesting conditions frequently with a significant power overhead (2.38 −46.99 µW in the published version) and with the assumption that the co-processor is always powered on with the use of a supercapacitor.
Current techniques approach dynamic energy harvesting conditions with static solutions, require developers to predict the unpredictable, and present an unnecessary decision between a quick recovery and effectively using available energy.These front-end storage-sizing decisions are almost guaranteed to produce poor results for intermittent devices at some point in time.
This article explores the advantages of back-end energy storage-excess energy that is stored after the device's main energy storages are fully charged-compared to the traditional front-end storage.To do this, we present a new back-end storage system, called Stash, that augments UFoP with additional back-end storage for times of energy abundance and provides the device with run-time notifications when excess energy is available, without lengthening recovery times and allowing sensors to take advantage of short bursts of harvested energy when energy is scarce.Specifically, this article makes the following contributions: (1) We provide a valuable new perspective on effectively managing harvested energy in highly dynamic conditions by describing Stash, a new back-end storage hardware approach that extends (UFoP [19]) to allow intermittent batteryless devices to use excess harvested energy without affecting the early operation under low energy.
(2) We provide a reference Stash implementation as a peripheral for the Flicker hardware platform [20]. 1  (3) We highlight the influence of various energy storage arrangements and sizes on device performance under highly dynamic harvested conditions by evaluating Stash against three alternative hardware configurations: small, large, and run-time reconfigurable front-end energy storage.This comparison illustrates the balance between rapid startup and utilizing excess energy for extended operation under a range of synthetic and recorded solar and thermal energy traces from different activities using two applications: indoor temperature sensing and human activity monitoring.

POWERING INTERMITTENT SENSORS
Batteryless, energy-harvesting computing sensors have a peculiar relationship with energy.They operate entirely on environmentally harvested energy, which often varies widely and unpredictably, and they typically store very little of the energy they collect in capacitors that are many orders of magnitude smaller than a typical rechargeable battery.And, unlike traditional batterypowered devices, changes in harvested energy or the size of a batteryless device's storage capacitor dramatically impact when the device will be able to turn on, what data it can gather, and what tasks it can perform.Devices often operate intermittently, saving up energy to perform tasks during short periods of active computation, punctuated by sporadic power outages.The intermittent operation makes batteryless devices more difficult to design, program, debug, and deploy.While a range of tools and techniques have been developed to help devices maintain memory consistency and forward progress [3,10,37], manage timing constraints [21], and keep time across power failures [6,12,22,36], choosing the right energy storage for a device deployed in a highly dynamic energy-harvesting environment is still a challenging task.
Conventional wisdom favors larger front-end capacitors that store more energy, which have several advantages.They allow devices to run longer without harvesting more energy, perform more complicated tasks without fear of being interrupted by a power outage, and avoid some power outages altogether.Unfortunately, these front-end larger capacitors also have drawbacks.They have a large leakage (wasting energy) and take longer to charge and recover from power outages.When harvested energy is scarce and sporadic, a larger front-end capacitor may cause a device to miss important events or never charge up enough for the device to turn on.
In contrast, smaller front-end capacitors charge more quickly, allowing the devices to turn on quickly and start sampling sensors and detecting events, even at lower energy levels.But, these benefits come at a cost.Devices with smaller front-end capacitors store less energy, are less reliable, and are more likely to lose power with every short-lived dip in harvested energy.
This tension between responsiveness and fast charging (smaller front-end capacitors) and more reliability and ability to complete more complicated tasks (larger front-end capacitors) leaves device designers to choose capacitor sizes that match their computational tasks and the energy harvesting conditions they expect their devices to encounter when deployed.Determining per-task energy requirements is challenging, especially in highly dynamic harvest environments.
Figure 1 illustrates how an intermittent sensor node behaves differently under static and dynamic indoor solar energy harvesting over ten minutes.Indoor harvesting conditions exhibit a smooth-changing pattern due to predictable factors such as natural light availability throughout the day and the timing of light operation based on occupancy schedules.This predictability has been used in some work to train models that can accurately predict harvested energy to manage sensors' power effectively [4,15].In contrast, dynamic harvesting conditions fluctuate 18:4 A. Alsubhi et al.
Fig. 1.An intermittent sensor runs a sense-and-send application for 10 min under two different indoor harvesting scenarios: static (solar energy captured from a wall-mounted panel (top)) and dynamic (solar energy captured from a wrist-worn panel (bottom)).Static harvesting preserves a pattern that changes smoothly over time and can be predicted, while dynamic harvesting is random and unpredictable.
unpredictably and drastically.Similarly, when another source of harvested energy such as kinetic is used to power a static sensor (from the airflow in an HVAC system [45]), harvesting patterns are predicted (based on the AC operating schedule), but when it is used to power a mobile sensor, such as a shoe insole pedometer [24,29], harvesting patterns are completely random.Consequently, predicting future energy harvesting is often impossible for intermittent sensors operating in dynamic harvesting environments, and no single-capacitor size will optimally work well all of the time.
When energy is abundant, and the sensor harvests more energy than it needs, that excess energy is often wasted.With UFoP [19], we could increase the size of the front-end capacitor, and with Capybara [11], we could increase the total effective front-end capacitance, but that would sacrifice the sensor's ability to start up quickly and operate under low-energy conditions.
The focus of this article is to allow intermittent devices to effectively use their available harvestable energy, including excess energy to do useful work, without compromising the device's responsiveness, and to automatically adapt their energy storage capacity as energy harvesting conditions change.

Energy Management Requirements
In light of the challenges and gaps in existing solutions for managing energy in highly dynamic harvesting scenarios discussed above, we have outlined the following requirements for Stash to establish an efficient storage approach: (1) Fast charging: Under low-energy harvesting conditions is crucial for the system to charge its energy buffer and startup quickly to complete tasks successfully.While Capybara [11] focuses on task completion by adjusting the capacitor size to match the energy demand, it does not take into account the harvesting conditions.Consequently, energy-light tasks that can be completed quickly under low harvesting conditions may be delayed if large capacitors are selected to perform energy-intensive tasks under these conditions.Alternatively, Stash uses a minimum federated energy approach (UFoP) [19] that prioritizes charging based on both application tasks and the harvested conditions for fast charging, early startup, and successful completion.(2) Prolonged operation: As harvested energy conditions improve and energy becomes abundant, the system should be able to expand its energy buffer to maximize its operational time rapidly.However, Morphy [46] attempted to extend the capacitance by employing an external, constant-powered microcontroller to monitor harvesting conditions, which is not feasible under highly dynamic energy conditions.Stash's large back-end capacitor eliminates the need for an always-on microcontroller and allows seamless expansion of storage capacity according to the harvesting condition.(3) Hardware-based control: To accomplish fast charging and prolonged operation, relying on hardware rather than software allows quick decision-making under all harvested conditions, even when the system is not powered on.Morphy [46] and Capybara [11] utilize software to control energy storage, which requires a microcontroller to be active.Stash, however, uses hardware-based control mechanisms, which allow timely decisions based on the harvested conditions regardless of the MCUâĂŹs status.(4) Low overhead: Systems operating under highly dynamic harvesting conditions frequently experience low-energy availability.In these situations, efficient energy management must minimize overhead so that the majority of harvestable energy can be utilized for system operation.In Capybara [11] and Morphy [46], energy buffers are reconfigured using analog switches, increasing overhead due to switch leakage, and even with low leakage switches, the cumulative leakage current from multiple switches can negatively impact the system performance, especially under poor harvest conditions.Stash seeks to minimize overhead and optimize energy management.(5) Real-time energy burst notification: When energy is abundant, and the system has already expanded its capacitance for prolonged operation, it is crucial for efficient energy management to inform the system of this surplus energy in realtime.This allows the system to utilize the additional energy for more useful work and avoid wastage.Existing solutions lack this feature, while Stash provides it.

STASH
To overcome the rigidity in the current state of the art for managing harvested energy efficiently for non-supercapacitor batteryless sensors operating under dynamic harvesting conditions, we propose an adaptable and efficient approach that expands upon the concept of the federated energy existing technique, called Stash.It is a simple and straightforward change to how we store energy that has significant benefits.Instead of increasing the device's front-end capacitance (or the per-peripheral capacitors in UFoP), Stash uses an additional back-end capacitor to store excess energy once the device is fully charged-energy that can be used later when energy becomes scarce-without delaying device startup.
Stash extends prior federated energy solutions like UFoP [19] with a negligible overhead (around 352 nA current draw), where each device's processor and peripherals have individual storage capacitors-preventing the system energy storage from being exhausted by energy-hungry tasks or components-and a charge controller that routes energy to those capacitors.MCU and perperipheral capacitors are sized based on minimum system requirements, allowing the intermittent device to quickly turn on core functionality (like the main processor) while waiting for other components (i.e., sensors, and radios) to charge up.Fig. 2. Stash overview: In addition to the typical federated energy (UFoP) components (energy harvester, charge controller, computational core, and peripherals), Stash adds an additional backend energy store (Stash Cap) to store excess energy for later use when energy becomes scarce.Stash also adds signaling circuitry to notify the MCU when the Stash Cap is charged and lightweight overvoltage protection.Charge priorities (shown as circled numbers on the figure) are determined during the design phase using voltage thresholds, as explained in Section 4. As shown in Figure 3, once the individual capacitors are charged, Stash diverts excess energy to the dedicated Stash capacitor to prolong device operation during periods of energy scarcity.Stash also provides a real-time burst notification to the MCU when the excess storage is full and more energy is available.The batteryless device can leverage this capability to perform supplementary useful tasks, such as on-device machine learning, sampling of an additional sensor, or performing computationally intensive tasks, without compromising the essential ones.This feature also could be used for task adaptation in dynamic harvesting conditions where heuristic-based adaptation techniques [8] struggle.However, this is not the main focus of this work, and we will leave it for future work.
In this article, we use Stash to enhance devices using federated energy storage, but the approach is not limited to federated designs.A device using a single centralized storage capacitor shared between its MCU and peripherals could also use Stash to store excess energy.But, single-capacitor designs require larger main capacitors-capacitors that can store (at safe voltages) enough energy for the application's most power-hungry tasks.These larger capacitors result in longer startup times, which reduces the benefit of using Stash.Centralized storage also lacks the energy isolation that federated designs use to prevent energy-intensive tasks from depleting the entire system's energy, increasing the likelihood of system failures [19,46].
For example, recent work has used a single capacitor with dynamic voltage thresholds to schedule tasks in response to changing energy harvesting conditions [34].This approach reduces the number of total capacitors, but uses a much larger shared capacitor (1 mF), which will take much longer to charge up to the microcontroller's minimum required voltage.This approach also frequently monitors the device's stored energy to set these dynamic thresholds, introducing overhead that may be prohibitive for systems deployed under highly dynamic harvested conditions, especially when energy is scarce.As energy levels fluctuate rapidly, as illustrated in Figure 1 in Section 2, energy measurements may also need to be taken more frequently, leading to higher energy consumption-energy that could be spent completing useful work.As an alternative, a single-capacitor design could use a voltage booster to allow the device to turn on at subthreshold voltages.Unfortunately, we have found voltage boosters to be inefficient at low-energy levels, often requiring more current to turn on than the harvester can provide.
Figure 2 shows how a federated energy storage architecture (UFoP) [19] can be extended using Stash to store excess energy.The UFoP architecture has four core components: an energy harvester that scavenges energy (solar, thermal, RF, kinetic energy, etc) and provides DC power to the system; a charge controller that routes energy among the MCU, peripherals and Stash, prioritizing the main capacitor that supplies the microcontroller; a computational core, a microcontroller, that manages peripherals to collect and process data; and peripherals like sensors for collecting data and radios to transmit gathered data.
Stash adds an additional capacitor, which is the device's largest capacitor with the lowest charge priority-ensuring that it will only charge once all other peripherals are fully charged.This capacitor is connected back to the system input power through a Schottky diode that automatically releases the stored energy when the main capacitor's voltage drops below the voltage on the Stash capacitor, even when the Stash capacitor is not fully charged, allowing continuous operation as long as the routed voltage is above the system's turn-off threshold.This energy routing requires minimal latency and no added software complexity.
The released energy passes through the charge controller and is prioritized among MCU and peripherals, using the same charging and routing process used by harvested energy-the MCU receiving the highest priority.
Stash also provides overvoltage protection with a threshold higher than Stash's charging.This overvoltage protection uses a bleeder resistor, which activates after ensuring all the system peripherals are fully charged including Stash, thus adding a negligible overhead to the system (around 55 nA).The commonly used overvoltage protection method-a Zener diode connected in parallel with the energy harvester, draws 1 −2 µA, which may not be affordable by some batteryless systems.

Choosing Capacitor Sizes
To maximize the benefits of using Stash-quick startup and longer operating times when surplus energy is available-we choose the smallest storage capacitors that guarantee our application's tasks will be completed at least once.Developers can determine the best capacitor sizes by considering the worst-case consumption either empirically using a current measurement instrument (for more complex tasks) or by using Equation (1) (for simple tasks), where E task is the energy required for the task, V on is the voltage at which the MCU or peripheral turns on, and V off is the voltage when it turns off.The required energy to complete a task can be calculated based on the consumed current that can be found in datasheets, the operating voltage, and the time required to complete the task.Additionally, the energy stored in any bypass capacitor used by the microcontroller or other peripherals must be included in the total task energy.To minimize both system costs and size while ensuring fast charging under low-energy harvesting conditions, developers may consider using single storage with the smallest possible capacity that still meets the total energy demands of multiple ultra-low power tasks.
To prevent incomplete tasks resulting from underestimation, designers should consider capacitor tolerance, capacitance degradation, leakage, and temperature factors, ensuring the device operates under all required conditions, especially when the device is expected to operate at high temperatures, as leakage increases with rising temperatures: The size of the Stash capacitor is determined by two factors: the duration of the burst energy and the specific tasks that developers choose (during the development stage) to be completed when energy scarcity follows the burst.The bigger the capacitor, the longer it takes to charge, but the more tasks it can potentially support.The Stash capacitance C Stash can be estimated using Equation (2), where E tasks is the energy of the tasks that need to be completed during energy draught, V Stash is the minimum stored voltage in Stash capacitor (the charge voltage level that is set by the charging control), V d is Schottky diode's forward voltage drop, and V off is the system off voltage: Stash's performance, when deployed, is significantly influenced by front-end (federated energy) and back-end (Stash) capacitor sizing.Underestimating federated energy capacitance, especially when using capacitors that experience significant degradation, can lead to incomplete tasks and wasteful task reexecutions [39], especially if Stash's capacitor has not yet been charged to compensate.In contrast, overestimating the needed capacitance can delay task execution, especially in low-energy scenarios; however, it provides a safety margin for capacitance degradation, ensuring successful completion and minimizing failure, albeit with potential delays.Similarly, the selection of Stash capacitor size is crucial for enhancing system performance.When burst energy is available for only short durations and infrequently, using a large Stash's capacitor can lead to delays in providing support for prolonged operation.On the contrary, a smaller Stash's capacitor and disregarding its capacitance degradation can facilitate faster support for prolonged operation, but this comes at the expense of shorter periods of sustained operation once the excess stored energy is depleted.When a capacitor starts to degrade due to stressful conditions (charging/discharging), it can be addressed by leveraging its self-recovery behavior as in Reference [9], which involves disconnecting the capacitor from its load.While the current Stash implementation uses ceramic capacitors without self-recovery capabilities, developers can use capacitors with self-recovery capabilities.The Stash's capacitor can self-recover and regain its degraded capacitance by periodically isolating it from the rest of the system using a timer and a switch.Also, the federated energy capacitors for other peripherals are already controlled by switches, which only connect peripherals when needed to the capacitors; utilizing self-recovery capacitors would have no issue, because they would be disconnected periodically when not in use to recover their capacitance.

IMPLEMENTATION
To evaluate the efficacy of our approach, we implement Stash as an extension and peripheral to Flicker hardware platform [20].Flicker provides an ideal starting point for evaluating Stash, since it is designed for energy harvesting and batteryless operation, with built-in support for federated energy storage.By leveraging Flicker's modular peripheral interface, we are able to incorporate two distinct sensor peripherals to support two applications without requiring modifications to the primary computation board or common peripherals, such as radio and Stash.
Flicker also, incorporates CusTARD [22], a capacitive timekeeper that keeps track of time during power failures when the system's internal clocks are unable to operate.Maintaining a sense of time is critical for most intermittent sensors-whether they use fixed or variable sampling ratesto make sense of the gathered data and avoid two problematic conditions: over-sampling (where the device reboots and samples a sensor too soon, wasting energy on extra samples at the expense of other tasks) and under-sampling (gathering too few samples due to inaccurately estimating delays).
As shown in Figure 4, we configure the radio, sensor, and Stash boards as Flicker peripherals.While Flicker supports dynamic software-configurable charging thresholds for ease of prototyping, we configure the platform to use fixed charging thresholds to reduce runtime energy overhead and latency during device reboots.Flicker's compute core board consists of MSP430FR5989 with integrated 128 KB FRAM.
This microcontroller consumes 100 µA/MHz in active mode, and 0.4 µA in low-power mode (LPM3) when the Low-power Low-frequency Internal Clock (VLO) is used for periodic wakeups.For convenience, we implement Stash as a custom Flicker peripheral, which simply plugs into the core computation board.This board is 13 mm × 28 mm, costs $15.00 due to small-quantity pricing, and includes additional components (headers and trimmer potentiometers) that are useful for prototyping and evaluation.These potentiometers allow us to easily adjust charging and overvoltage protection thresholds to fit the needs of our applications using a single board.In a production device, they would be replaced by smaller, cheaper, fixed resistors.Stash components would also be integrated into the device's existing board(s), resulting in minimal added cost and bulk.
The charging controller unit in Flicker prioritizes the charge in cascading order, an MIC841 chip charges the main capacitor first at 2.7 V. Subsequently, the sensor capacitor charges at 2.8 V, generating an interrupt to the MCU when the capacitor voltage reaches 3.2 V.The CC1101 radio capacitor follows, charging at 3.2 V and firing an interrupt at 3.8 V. Finally, the Stash capacitor charges at 3.9 V, generating an interrupt when the voltage reaches 4.5 V and harvested energy produces 4.7 V.At 5 V, the overvoltage protection is activated, ensuring the system's safety.

EVALUATION
The goal of Stash is to allow intermittent devices to more effectively use their available energy to do useful work, across a wide range of energy harvesting conditions.In this section, we evaluate how well Stash accomplishes this goal for two different applications-temperature sensing and mobile activity monitoring-under recorded solar and thermal energy traces from a range of conditions and activities.For repeatability, we use Ekho [18] to both record the I-V surfaces of these traces and emulate the surfaces for each experimental run.
Hardware Configurations: Throughout our evaluation, we compare four different hardware configurations: a UFoP system with a small front-end capacitor (Small_FE), a UFoP system with a large front-end capacitor (Large_FE), a UFoP system with a small front-end capacitor augmented with Stash (Small_FE+ Stash), and a UFoP system with a runtime reconfigurable front-end capacitor array (Reconfig_FE).We develop Reconfig_FE to combine Capybara's [11] and Morphy's [46] features to make it suitable for highly dynamic energy harvesting conditions, because both systems cannot be used as they are for such situations due to limitations discussed in Section 2.1.
Additionally, the original Capybara and Morphy boards incorporate additional circuitry, extra components, and higher capacitance (supercapacitors), which increases their overhead and prevents them from functioning under the conditions in which we test our hardware.To maintain fairness and prioritize energy management based on its availability, we implement a simple runtime capacity configuration approach that takes into account the harvesting conditions (inferred from the systemâĂŹs on and off times) rather than the applicationâĂŹs tasks or relying on an external, always-on microcontroller to monitor the harvested condition, as is the case with Capybara [11] and Morphy [46], respectively.
Reconfig_FE starts with the smallest capacitance, equivalent to Small_FE, and gradually expands it to the maximum capacity, equivalent to Stash and Large_FE, as long as the power outage does not exceed 1 min.This indicates that the current harvested energy is sufficient to charge the larger capacitor for a more extended operation period without delaying the system's startup time, as large capacitor selection takes longer than 1 min to charge under low harvested conditions.If the power outage lasts longer than 1 min, then Reconfig_FE switches to its smallest capacitance, indicating that the harvesting condition is poor, and the system should have a rapid startup with the smallest capacitor.After a 15 s outage-free period, Reconfig_FE starts to increase its storage capacity again, ensuring that outages are not triggered solely by expanding capacity, such as connecting capacitors, which could briefly drop the voltage to the system-off level.Similar to Capybara maintaining the status of switches across outages, Reconfig_FE maintains its capacitor configuration for up to 2.5 min.
We choose the smallest capacitors for Small_FE and each peripheral in all configurations using Equation (1) in Section 3.1 to meet the energy requirements for the targeted application.However, for the Large_FE and Reconfig_FE configurations, we increase the size of the main capacitor(s) to ensure that the total capacitance is equivalent to that of the Small_FE+Stash.
To eliminate the effects of manufacturing and other board-to-board variations, we use the same Flicker compute core, sensor, and radio peripherals, as well as overvoltage protection for all hardware configurations.We only vary the size of the front-end capacitor with regard to the configuration and the presence of Stash.
For the wearable indoor temperature sensing application, we use 420 nF and 100 µF for the sensor and radio, respectively, in all configurations.The only difference between all the settings is the size of the front-end and Stash capacitors.Both Large_FE and Reconfig_FE configurations have a total capacitance of 347.5 µF, as a single capacitor or series of 14.5 µF, 33 µF, and three capacitors of size 100 µF.In contrast, the Small_FE configuration has a smaller main capacitor size of only 14.5 µF.
For the human activity monitoring application, all settings have 100 µF for the radio peripheral and again vary in the front-end capacitance.Large_FE and Reconfig_FE have a total of 351 µF, with the latter split into 18 µF, 33 µF, and three capacitors of size 100 µF.The Small_FE setting has the smallest capactiance among all (18 µF).In this application, the total capacitance used across all configurations is higher compared to the previous application.This increase in capacitance is necessary to meet the energy requirement for processing accelerometer data, which requires the MCU to be active, while the previous application involves sampling ADC temperature sensor data, allowing the MCU to be in sleep mode during ADC conversion.In both applications, the Small_FE+Stash configuration is identical to the Small_FE except for an additional 333 µF backend Stash's capacitor.We completely discharge all capacitors before each experiment to remove any residual energy from prior experiments.

Metrics:
To quantify Stash's primary goal, we focus on two metrics: availability and sensor coverage.One useful consequence of using federated energy storage is that we are able to record when each system component (MCU, sensors, and radio) is available or charged up sufficiently to use.Availability is defined by each application depending on its specific needs.We consider our radio to be available when it has enough energy to send a message.We consider our sensor to be available when it has enough energy to collect a single measurement.The MCU is available whenever it is powered on and able to perform computations.
We monitor the availability of the MCU, sensor, and radio components throughout each experimental run by measuring the MCU's regulated power input and the interrupt signal that each federated peripheral uses to notify the MCU when the peripheral is available.The typical input sampling currents for analog measurement devices, like oscilloscopes and data acquisition devices (DAQs)-while inconsequential in most system evaluations-significantly affect our results and the correct operation of our test devices.Instead, we use a Texas Instruments MSP430FR5994 Launchpad [28] and measure only digital inputs, which have much lower input bias current.We power the launchpad externally at 2.2 V to match the test device's logic levels and program the launchpad to report changes in pin state (from high to low and low to high) and the time stamps of those changes to a connected laptop through its USB connection.By reporting state changes only, we are able to monitor availability with sub-µs accuracy.
While the availability of the MCU and the other peripherals provide insights into what a device could do at a particular time, it does not tell us how much useful work the device actually completed.For this, we use the sensor coverage metric used in Reference [42].Sensor coverage captures both the amount of work performed (number of sensor readings collected) and the usefulness of that work (how the sensor readings are distributed).
In our experiments, we use periodic sensing applications that sample and report sensor readings (energy permitting) every T s seconds, and whenever the base station receives a sensor reading (and accompanying timestamp), the T s seconds of time centered at the reading's time stamp is considered to be covered by the reading.An internal timer is used to time sensor readings, and CusTARD timekeeper [22] is used to account for additional delays incurred due to power outages.To provide redundancy in case of packet loss, each radio packet contains the most recent six readings along with their timestamps.Using both the node-assigned and base station-assigned timestamps, we map each reading to a window of covered time and compute the sensor coverage of the experimental run by adding up all of the covered windows, minus any overlaps.

Indoor Temperature Sensing Experiments
To understand how energy harvesting conditions impact Stash's performance, we evaluate our Stash peripheral prototype with Small_FE using example solar energy traces with harvesting patterns that favor the strengths and weaknesses of different capacitor sizes.The purpose is both to provide intuition about how different harvesting characteristics impact device performance and to evaluate how well Small_FE+Stash can adapt to those different scenarios.

Application:
We use a wearable indoor temperature sensing application that periodically collects temperature readings and sends those readings to a base station, which can then adjust an individual's thermal comfort in the workspace.In this application, the MCU wakes up from sleep (LPM3) every 10 s using a timer to sense the temperature using a TMP35 sensor [26] and transmits the new value along with the five previous readings (if there are any) using a CC1101 radio when its storage capacitor is sufficiently charged.When the radio is unavailable, it will continue to gather data, keeping up to six prior readings and their corresponding timestamps in a circular queue in nonvolatile FRAM, to be sent later when more energy is harvested and the radio becomes available.Once the queue is full, each new reading is added to the front of the queue, and the oldest reading is discarded.

Energy traces:
For these experiments, we generate three different energy harvesting patterns using a programmable lightbox.The box consists of a car headlight controlled by Arduino Duemilanove [7] and a small solar panel [14] placed 10 cm from the light.A laptop, connected over USB to the Arduino, sends commands to adjust the light intensity over time, and the panel is connected to an Ekho [18], which records current-voltage (I-V) pairs as light levels change.We use Ekho software tools to generate I-V surfaces from the collected pairs, which can then be emulated or played back, repeatedly, to test devices.
The lightbox can generate a nearly infinite range of possible harvesting patterns, but we focus on the following three traces that effectively capture the tradeoff between small, large, and reconfigurable front-end capacitors: Trace 1.The first energy trace represents an energy-scarce environment where little energy arrives for short periods of time.We create this trace by alternating between a dim light setting (around 240 lux) for 3 min and darkness (light off) for 3 min for a total duration of 15 min.This sort of sporadic low-energy trace favors smaller capacitors that charge quickly and typically have lower energy leakage and is challenging for larger capacitors, which may not harvest enough energy to start up.
Trace 2. The second energy trace alternates between brighter energy-rich bursts of light (around 2,786 lux) for 10 s and darkness (light off) for the next 40 s.This pattern is also repeated for a total of 15 min.These sporadic high-energy traces favor large capacitors, which will now charge quickly and store more energy that can be used during periods of scarcity, during which a smaller capacitor will quickly discharge.
Trace 3. The third energy trace is a 20 min combination of the previous two traces.It starts with the first pattern (from Trace 1), which lasts for 12 min, followed by the more energy-abundant pattern (from Trace 2) for the final 8 min.
We run twelve experiments, using Ekho to emulate each of the three recorded energy traces to power each of our four hardware configurations.We repeat each experiment 3 times and calculate the average availability of both the MCU and peripherals, as well as the sensor coverage.

Results:
The sporadic low-energy trace results are shown in Figures 5(a) and 5(b).Under these conditions, a quick startup is key to a device's success.Small_FE charges most quickly, followed by Small_FE+Stash.Due to their small capacitors, both are able to start up, get sensor readings and send them to the base station, before the available energy expires.
The Reconfig_FE setup experiences a delay of 30 s compared to Small_FE with/without Stash due to its hardware and software configuration overhead.It starts with the smallest capacitance available but quickly loses power when the capacitance is increased gradually.Eventually, it stabilizes and reaches the maximum capacitance after 22 s of the first attempt at turning on.As a result, the temperature sensor is affected by the slow charge of the main configured capacitor and becomes available 2 min after Small_FE+Stash.
In contrast, the Large_FE configuration struggles.Its large main capacitor charges more slowly and leaks more energy.This impacts the other peripherals' charging states.As shown in Figures 5(a), its MCU does eventually charge up, albeit nearly 80 s after the others.The temperature sensor follows the same pattern, where it is ready to use in Small_FE with/without Stash and Reconfig_FE after 14 s, 16 s, and 2 min, respectively, but takes 8 min in Large_FE.Throughout the entire 15 min experiment, both Reconfig_FE and Large_FE configurations' radios never become available, while Small_FE with/without Stash is able to start sending packets after roughly 2 min.
Whether we consider availability or sensor coverage, Small_FE has a slight edge over the one with Stash.The difference is small, amounting to two additional packet transmissions and a 5% increase in sensor coverage.This difference is consistent across runs and is due to the overhead of Stash's additional components and circuitry, which incur a small amount of additional current draw.
The sporadic high-energy trace results, shown in Figures 6(a) and 6(b) demonstrate the other side of the capacitor size tradeoff.In contrast to the previous trace, now energy is abundant, and the keys to success are storing and using that energy effectively.With more light and more energy, all four configurations charge quickly.The Small_FE configurations, with and without Stash, still start first, with their MCUs turning on roughly 8 and 5 s before Reconfig_FE and Large_FE, respectively.Both the sensor and radio follow the same pattern.And, if the period of abundant energy were to continue indefinitely, Small_FE with and without Stash, would likely still maintain a small and likely insignificant advantage, thanks to their small head start.When darkness comes, however, Large_FE, Reconfig_FE, and Small_FE+Stash's extra stored energy provides a significant advantage, allowing these configurations to continue to operate, while Small_FE quickly loses power until the next energy burst returns.Interestingly, the gradual increase in Reconfig_FE's capacitance provides an advantage over Large_FE and Small_FE+Stash, enabling it to store enough energy from the first burst to extend sensor availability and keep the MCU on during the initial period of darkness.In contrast, the Large_FE and Small_FE+Stash capacitors are not charged sufficiently to survive the first period of energy deprivation.
In terms of both availability and sensor coverage, Reconfig_FE consistently outperforms Large_FE and Small_FE+Stash due to its ability to persist through the first energy draught period, achieving 1% and 3% more sensing coverage than Large_FE and Small_FE+Stash, respectively.But Fig. 6.Sporadic high-energy trace results from running temperature sensing application.(a) The availability of MCU and the temperature sensor are similar in Large_FE, Reconfig_FE, and Small_FE+Stash hardware options, unlike Small_FE, which loses power frequently due to limited energy storage.(b) Reconfig_FE achieves the best sensor coverage, followed by Large_FE and Small_FE+Stash, while Small_FE falls behind due to more frequent power failures when energy is scarce.
once again the difference is small.We can see that Large_FE's radio is more available than Recon-fig_FE and Small_FE+Stash's, but the latter ones' transmission opportunities are still many and well-distributed across the entire emulation period.
In contrast, Small_FE consistently trails the other three with significantly worse sensor coverage (40%) due to its more frequent power outages during periods of darkness.
The hybrid energy trace results, shown in Figures 7(a) and 7(b) demonstrate the advantage of using small federated energy with Stash.When faced with energy conditions that vary between those that favor small capacitors and those that favor larger capacitors, Small_FE+Stash's sensor coverage exceeded Small_FE, Large_FE, and Reconfig_FE by 20%, 15%, and 18%, respectively.
Without performing any computation, Small_FE+Stash adapts to the changing energy harvesting conditions.It rarely outperforms the ideal capacitor size for a particular situation but closely approximates it.And, in conditions where energy harvesting patterns change, Small_FE+Stash gives a batteryless sensor device the flexibility to operate under low-energy periods like a small capacitor device and effectively utilize excess energy like a large capacitor device when energy is abundant.

Activity Monitoring Experiments
To evaluate the small, large, and reconfigurable capacitors tradeoff under more organic harvesting conditions, we also evaluate Small_FE+Stash against Small_FE, Large_FE, and Reconfig_FE Fig. 7. Hybrid energy trace results from running temperature sensing application.(a) The MCU and the temperature sensor are available earlier in both Small_FE and Small_FE+Stash compared to Large_FE and Reconfig_FE.In Small_FE+Stash, radio availability is close to Small_FE where it is 12 min behind in Large_FE and Reconfig_FE.The availability of MCU and temperature sensor in Small_FE+Stash becomes similar to Large_FE after 12 min, unlike Small_FE, which loses power frequently due to its limited energy storage.(b) Small_FE+Stash achieves the best sensor coverage followed by Large_FE option where Small_FE has the lowest sensor coverage.in a wearable activity monitoring application, using two mobile solar and thermal energy traces, recorded while performing common indoor activities.We also evaluate how Stash's notifications allow devices to perform optional tasks during periods of surplus solar energy, without compromising the application's essential tasks.
Application: we develop a continuous human activity monitoring application that uses an ADXL362 [25] accelerometer to quantify the wearer's current level of activity.This application features sensing, processing, and communication behaviors comparable to step counters, calorie counters, and other commercially available activity monitors.Since the ADXL362 consumes around 1.3 µA at the sampling rate we use and is the most energy efficient when powered continuously, using its FIFO, and waking up the MCU when its buffer is full, we power it directly from Flicker's GPIO pin rather than using federated energy.This means that it is available whenever the MCU is available.We set the ADXL362's sampling rate to 12.5 Hz and configure the FIFO to interrupt the MCU after gathering 26 samples.The MCU stays in deep sleep (LPM4, which consumes around 400 nA) until it receives an interrupt.When the interrupt fires (every 2.08 s), it reads and processes the acceleration data and estimates the wearer's activity level by summing the absolute values of the measured accelerations.The estimated activity level value is stored in FRAM with its timestamp, along with a global counter, which keeps track of the number of FIFO readings, which is only reset at the beginning of each experiment.A maximum of seven readings are saved in FRAM, where new values replace the oldest value in the queue when it is full.These values are sent to a base station when the radio's capacitor is sufficiently charged and there is at least one new value in the queue.

Additional tasks:
To evaluate Stash's surplus energy notifications, we sample an additional sensor (Adafruit Analog UV Light Sensor (Guva-S12Sd) [27]) that measures UV exposure-either to monitor indoor versus outdoor activities or the wearer's overall exposure to UV radiation when solar energy traces are used.This sensor is sampled once every time Stash interrupts the MCU when its capacitor is fully charged and more energy is coming.

Energy traces:
We record two different 20 min I-V surfaces (solar and thermal) using a bodyworn Ekho.We attach a small solar panel to a user's wrist and record the harvested energy during common indoor activities, including typing, sitting, and walking as shown in Figure 8(c).
The surface was recorded indoors under mixed light conditions that included both artificial light and natural light.Light levels ranged from 0 lux, when her sleeve partially or completely covered the panel or her hand was positioned under a desk, to 2,000 lux, when working near a window.
We also use the Prometheus PRMT21-18305 Watch [1] as shown in Figure 9(b) to record a thermal energy harvesting trace as a user carries out various activities.This harvester's energy output, which depends on the heat differential between the wearer's body and her environment, varies widely, mostly due to changes in airflow.When the device is partially or completely covered (when the wearer crosses her arms or the watch is covered by clothing) the harvested energy can drop to zero (no measurable energy harvesting) or near zero.During periods of higher airflow, when the wearer moves quickly or passes near a fan or HVAC vent, the harvester produces much higher levels of energy.

Results
The outcome of the recorded solar energy trace is presented in Figures 8(a) and 8(b), highlighting the superiority of Small_FE+Stash over other configurations in mobile harvesting conditions.Similar to most batteryless devices, all configurations operate intermittently, experiencing power interruptions when the harvested energy falls below the system's turning-on threshold, which cannot be avoided.However, early in the trace emulation, when energy levels are low due to user activity such as typing and setting, both Small_FE with/without Stash are able to gather, process, and deliver some data.In contrast, Large_FE is unable to commence operations until 89 s later and is unable to charge its radio sufficiently to send a packet for over 2 min.Comparatively, Reconfig_FE starts up as early as Small_FE with/without Stash using its smallest capacitor but loses power while charging the expanded capacitance and cannot transfer data for over 2 min similar to Large_FE.Although Large_FE and Reconfig_FE are able to transmit sensor data in the first 10 min of emulation, the opportunities are less than half of those for Small_FE with/without Stash.
Later, when the user moves closer to a window and energy becomes more abundant, Large_FE, Reconfig_FE, and Small_FE+Stash configurations outperform Small_FE.
Across the whole 20 min trace, Small_FE+Stash achieves 8% better sensor coverage than both (Small_FE and Large_FE), and 7% more coverage than Reconfig_FE, while reporting 50 readings of the UV light sensor (an additional sensor activated only during periods of energy surplus through Stash real-time burst notifications) without interrupting the main tasks of the application.
Figures 9(a) and 9(b) show the recorded thermal energy trace experiment results.All hardware configurations startup, sample, and send data for the first 12 min of emulation while the user sits, and they occasionally experience outages when she crosses her arms.However, Large_FE starts 10 s after the others.
Interestingly, during the last 7 min of emulation, when the user moves quickly or passes near a fan or HVAC vent, energy becomes abundant, punctuated by drought periods when her sweatshirt sleeves cover the watch.In this case, Reconfig_FE behaves similarly to Small_FE that is unable to sustain periods of energy drought, because the thermal harvester produces less energy than solar, along with the leakage of the configuration switches, which prevent the system from rapidly charging up its maximum configurable capacitance before the energy surplus expires.Unlike solar energy traces where Reconfig_FE survives energy scarcity following surpluses like Large_FE and Small_FE+Stash, because the excess energy is sufficient to compensate for the switches' leakage and able to charge the maximum configurable capacitance before the surplus period expires.
Once again, in this unpredictable and variable mobile energy harvesting scenario, Small_FE+ Stash outperforms all configurations and provides up to 5% more sensor coverage.

DISCUSSION AND FUTURE WORK
Incorporating Stash with a small federated energy approach allows intermittently powered mobile devices to take advantage of harvesting when conditions are favorable without adding disadvantages when they fluctuate.Operating under both synthetic and two types of recorded harvested energy from different activities, using Stash with minimal federated energy storage gives both the benefit of early startup time-similar to using small front-end capacitors with fast charging capability and long execution time-a feature of large front-end capacitors with access to abundant harvested energy.
This flexibility allows intermittent systems that leverage Stash to achieve wider sensing coverage when compared with systems that use only fixed small, large, or run-time reconfigurable front-end capacitors.
While Stash has minimal energy overhead, its reliance on the federated energy approach for rapid startup will increase the overall system costs and space requirements, especially when allocating a dedicated capacitor for each peripheral or task, as discussed in the UFoP paper [19].Our Stash peripheral adds $12.67 to that cost.However, this can be mitigated by using a single capacitor for multiple low-power tasks/peripherals, as long as the selected capacitor is sufficiently small to enable swift charging, ensuring rapid startup.For instance, in our evaluation, the accelerometer was powered using the main system's storage for the activity monitoring application in Section 5.2.The system's size and cost can be further reduced in bulk production through the use of smaller surface mount packages, custom double-sided boards, and custom silicon (ASICs).
Applications: Using Stash with small federated storage enables low-power sensing applications that require multiple peripherals operating at different voltage levels.Small_FE+Stash is most useful for applications deployed in environments where the harvesting condition is changing very quickly and unpredictably.This pattern of harvesting can be found in computational RFID applications, e.g., inventory management and activity monitoring-where RF signals come in a burst, as well as solar, thermal, and kinetic-powered mobile applications for human activity monitoring and animal tracking.
Our evaluation demonstrates Stash's effectiveness in highly dynamic harvested conditions for two sensing applications.However, not all Stash features, including early startup under low harvested conditions, prolonged operation, and realtime burst notifications in times of energy abundance, are applicable to every intermittent application.Nonetheless, some of these features can be applied to support more complex tasks beyond simple sensing applications.When using Stash with complex applications like multi-core architectures [5], on-device machine learning with accelerator hardware [30], and concurrent task execution [44], estimating the required energy to complete these tasks becomes challenging.Consequently, developers often select larger front-end capacitors to ensure there is sufficient stored energy to complete these demanding tasks, which leads to delayed startup when the harvested energy is low, an unavoidable drawback that reduces the benefits of using Stash.However, these applications still benefit from the excess energy stored in Stash and the real-time burst notification to speed the completion of tasks across viewer power cycles compared to systems without Stash.
For instance, the energy stored in Stash could be used to reduce inference latency across fewer power cycles [17], particularly when the device operates on bursts of RF energy.Additionally, the real-time burst notifications from Stash could be utilized to dynamically adjust the inference workload, maximizing analysis accuracy based on the fluctuating energy availability [33].
Another scenario is when intermittent devices operate under highly dynamic harvested conditions, such as wearables.In this case, where acquiring and processing sensor data is the primary application, Stash could be used to perform inference tasks only during energy burst time.This approach enables batteryless wearables to support on-device lifelong learning [35] without compromising the primary application tasks.
Stash also, could improve the overall throughput of batteryless networks by reducing synchronization delays caused by varying amounts of energy harvested by the nodes, coupled with the high cost of listening during synchronization.Stash would enable nodes to operate in two distinct modes: conservative and burst.In conservative mode, nodes with low but sufficient harvested energy engage in brief listening periods to synchronize, potentially requiring multiple cycles for successful synchronization similar to previous work [16].In burst mode, nodes with fully charged Stash capacitors and receiving real-time burst notifications could extend their listening periods, increasing the probability of node alignment and reducing synchronization times.This burst mode also benefits intermediary nodes in multi-hop networks by allowing them to utilize excess energy for extended listening, facilitating data relay without compromising their own data delivery.

Future Work
We would like to extend our work to take advantage of Stash runtime burst notification to implement a runtime adaptation for mobile sensors (e.g., increasing the sampling rate) and enhance on-device machine learning accuracy according to the harvested energy conditions without sacrificing the main task requirements of intermittently powered systems.
The current Stash design uses a single large capacitor to store the excess harvested energy.We aim to extend it to use multi-tier storage similar to the technique used in CHRT [13], where each hierarchy would begin to charge automatically when the previous one is fully charged.This way, the benefit of the excess energy would be maximized without affecting the early startup of the system or adding any extra complexity to the software system.

RELATED WORK
Efficient power management is essential for sustainable and maintenance-free long-term sensing in intermittent batteryless systems that rely on harvested energy.These systems face challenges in achieving optimal performance, including fast charging, prolonged operation, and task completion, particularly when operating under highly dynamic harvested energy conditions.
Capybara [11] focuses on completing one task at a time by configuring an array of capacitors to minimize charging time and meet the energy consumption requirements of the task.However, Culpeo [39] considers the high equivalent series resistance (ESR) of supercapacitors into account for setting up the threshold for configurable storage to successfully complete a set of tasks.CapOS [9], also targets task completion from different angles by utilizing a self-recovery capacitor that regains its capacitance when isolated from the load.CHANCE [23] balances charging time and task completion by avoiding energy buffer array reconfiguration overhead in prior works [11,46] and setting a predetermined threshold on a single capacitor based on average tasks consumption instead of the worst-case; resulting in incomplete tasks (waste energy) when energy is poor and force re-executing from none volatile memory to ensure completion across multiple power cycles even when harvesting condition improved, which adds unnecessary consumption.These approaches lack isolation for defective or energy-intensive tasks, which can exhaust the entire system's energy buffer and render it inoperable.GRANT [48] attempts to address this limitation and support task completion and isolation by adapting the federated energy technique [19] and routing energy between the energy storage.
However, these energy management approaches do not take into account the harvested conditions or utilize excess energy to extend system operation time when available.Morphy [46] attempts to overcome this by continuously monitoring the harvesting condition using a secondary microcontroller that is always powered on, which is unsuitable for highly dynamic harvested energy.
Other approaches aim to achieve energy-neutral operation (ENO) by balancing energy consumption and capturing energy while completing the application tasks.They use in situ power measurement with some overhead [38] or energy-aware schedulers based on predefined thresholds to minimize the management overhead [40,47], but these approaches may not be suitable for many applications.Additionally, some works utilize machine learning techniques to duty cycle event-driven sensors [4,15], considering changes in harvested conditions that can be predictable where the device is deployed in a static place and harvesting conditions change smoothly over time.However, these approaches typically rely on large capacitors that require more time to charge, which results in system responsiveness delays under highly dynamic harvesting conditions.
In contrast, Stash is a hardware, non-supercapacitor-based approach that combines small federated energy storage for an early startup and excess energy utilization for prolonged operation with low latency and minimum overhead to support batteryless devices to achieve better performance under highly dynamic harvested conditions where other energy management approach suffers.

CONCLUSION
We present Stash, a hardware solution that uses small federated energy storage to allow intermittently powered systems to benefit from additional energy storage without compromising the system performance when energy availability is low.
Stash's back-end storage together with small federated capacitors offers a flexible energy storage option with negligible power overhead and no added software complexity, allowing batteryless sensors to effectively manage their scavenged energy in environments where harvested energy changes rapidly and unpredictably.We evaluated Stash with small federated storage using synthetic and two types of recorded energy traces (solar and thermal) from a range of activities.Our experiments and evaluation show that small federated energy with Stash increases the temperature sensing coverage by up to 15% compared to using only small, large, or reconfigurable front-end capacitors, operating under synthetic variable harvested energy.In addition, using Stash with a small federated energy approach improves the continuous activity monitoring coverage by up to 8% compared to the small, large, and runtime reconfigurable energy storage using recorded solar or thermal energy traces.Using Stash with minimal federated energy storage provides another hardware technique that can benefit intermittently powered devices deployed in unpredictable and ever-changing energy environments and extend batteryless applications.

Fig. 4 .
Fig. 4. Flicker device equipped to Stash board, temperature sensor, and communicate via radio.

Fig. 5 .
Fig. 5. Sporadic low-energy trace results from running temperature sensing application.(a) MCU and temperature sensor turn on earlier in both Small_FE and Small_FE+Stash compared to both Reconfig_FE and Large_FE.Radio availability in Small_FE+Stash is close to Small_FE where it is never turned on in both Large_FE and Reconfig_FE settings.(b) Small_FE gives the highest sensor coverage followed by Small_FE+Stash, while Large_FE and Reconfig_FE were unable to charge up enough to send data.

Fig. 8 .
Fig. 8. Recorded solar energy traces results from running the human activity monitoring application.(a) The MCU, and accelerometer start early in Small_FE and Small_FE+Stash and Reconfig_FE settings compared to Large_FE.Radio is not available in both Large_FE and Reconfig_FE for over 2 min from the start of the experiment.(b) Small_FE+Stash achieves the highest coverage compared to the other three options.This improvement in the sensing comes from the flexibility afforded by small federated energy storage with Stash peripheral that enables intermittent wearable sensor operating under very low energy and extended the availability under burst energy.(c) Using a wearable solar panel connected to a mobile Ekho that is powered by a power bank to record mobile solar energy traces.

Fig. 9 .
Fig. 9. Recorded thermal energy traces results from running the human activity monitoring application.(a) The MCU and accelerometer are more available in both Small_FE+Stash and Large_FE compared to Small_FE and Reconfig_FE.(b) Small_FE+Stash achieves the highest coverage compared to the other three options.(c) Using the Prometheus watch connected to a mobile Ekho that is powered by a power bank to record mobile thermal energy traces.