Solar-Powered IoT Devices
Besides WiFi access points, Philly Community Wireless deploys small networked devices, mainly PurpleAir air monitors at green spaces around the city and Meshtastic radio nodes. They run on 5V USB power and draw about a watt, but they still need a power source. PCW's existing air monitors (visible on the PurpleAir map) run off an outdoor, weatherproofed GFCI outlet, which rules out many sites that already have PCW internet. This page covers powering these devices from solar instead, with most of the detail on air monitors. For getting a device onto the network once it has power, see Configure IoT Devices.
The air monitor design below is a modified version of the solar mesh node that powers a 5V PurpleAir monitor instead of a 24V mesh access point. It was developed by Amaris Chen, PCW's University of Pennsylvania intern, building on Holobiont Lab's meshbox.
Power needs at a glance
| Device | Power input | Typical draw | Peak draw | Per day |
|---|---|---|---|---|
| PurpleAir air monitor | 5V, micro USB | 0.18A (~0.9W) (PurpleAir) | 0.6A (3W) | ~21.6Wh |
| Meshtastic node (Heltec V3) | 5V, USB-C | ~0.15A (~0.75W), as reported by users | 0.25A (1.25W) | ~18Wh |
These are the devices' own draws. Whatever powers them (converters, displays, controllers) adds to this; see the whole-box load below.
Solar air monitor box
From mesh node to air monitor
The Holobiont Lab box charges a 12V battery from a solar panel and boosts it to 24V for a Ubiquiti mesh access point (Holobiont documentation). The air monitor version keeps the charge controller, temperature disconnect, fuse, and Wago connectors, swaps in a smaller battery, and replaces the 12V to 24V boost converter with a 12V to 5V buck converter (a boost converter raises voltage; a buck converter lowers it) and a USB breakout for the monitor's power cable.
Parts list
| Part | What it does | What we used | Approx. cost |
|---|---|---|---|
| Weather-proof enclosure | Holds everything except the panel and monitor | Joinfworld 11.4 x 7.5 x 5.5 in junction box | |
| Solar panel, 12V 10W | Charges the battery | ECO-WORTHY 13.3 x 8.1 in, 10W | ~$29 |
| MPPT charge controller | Converts the panel's output into the right voltage to charge the battery | 4A BQ24650 board, same as the solar mesh node (review) | |
| Low-temperature disconnect | Cuts the panel off below freezing, since LiFePO4 is damaged by charging in the cold | XH-W1209 thermostat board, same as the solar mesh node (manual) | |
| LiFePO4 battery, 12V 10Ah | Stores power for nights and cloudy days | NERMAK 12V 10Ah | ~$40 |
| In-line fuse holder + 2-3A fuse | Protects against a short | 18 AWG in-line fuse holders (Holobiont boxes come with one) | ~$7.50 for five |
| F2 (6.3mm spade) crimp terminals | Connect wires to the battery's F2 terminals | 16 AWG spade terminals | ~$13 for thirty |
| WAGO lever nuts | Join wires without soldering, easy to take apart | Same as the solar mesh node | |
| Adjustable buck converter | Steps 12V down to 5V | DFRobot DFR0379 | ~$5 |
| Female USB A breakout board | Turns the USB cable into screw terminals | USB A breakout with screw terminals | |
| Micro USB to USB A cable | Carries power to the monitor | ||
| PurpleAir monitor | The load | PurpleAir Classic Plus | ~$239 |
PCW also has one ECO-WORTHY 12V 20Ah battery (~$73, screw terminals) on hand.
Load
According to PurpleAir, the air monitors require 5V x 0.18A (~0.9W) to power continuously. This is about 21.6Wh per day, assuming continuous amperage. PurpleAir's spec sheet also lists short peaks of up to 600mA (3W), which the buck converter and cable need to handle.
PurpleAir says the sensors need a full 5V and a quality cable to run reliably; below that they start to misbehave. Voltage drops along a long or thin cable, so check the voltage at the monitor end, not just at the buck converter.
The PurpleAir air monitors have female micro USB ports for power. We use a male micro USB to male USB A cord, and so we need a female USB A breakout board with screw-in pins to split into positive and negative wire terminals.
Existing air monitors' exposed micro USB connections are not water-proof, but PCW has not encountered any issues regarding that. Nonetheless, we may consider sealing the connection with liquid electrical tape.
The 21.6Wh figure is the monitor alone. The box also powers itself around the clock, so size the battery and panel for the whole box:
| Draw | Current at 12.8V | Per day |
|---|---|---|
| PurpleAir, after the buck converter's ~12% loss | ~80mA | ~24.5Wh |
| Low-temperature disconnect (XH-W1209): display always on, plus its relay | 35mA idle, 65mA with the relay on (spec) | ~11-20Wh |
| Buck converter's display, charge controller | small, not measured | |
| Total | ~36-45Wh |
With the settings in Assembly, the disconnect's relay stays on whenever it is warmer than the cutoff, which is most of the year, so expect the high end. A battery with a built-in low-temperature charge cutoff would remove the XH-W1209 and its draw entirely. To get the real figure for a box, measure the current at the battery with and without the monitor plugged in.
Buck converter
We use the adjustable DFR0379 buck converter available at UPenn's Detkin Lab. Its LM2596 chip has an average efficiency of 88%.
Notice that there is a button and an LED segment display on board. The display will show the detected input or output voltage, with a red LED lighting up on the corresponding side. The button switches between displaying input and output.
Before connecting the buck converter to the system, make sure that the output voltage is at 5V. This can be tested by inputting a 12-13V voltage from an external power supply. Black clip on IN- and red on IN+. Next, check the output voltage on the display. You can tune the output voltage by turning the tiny screw on the trimpot (CCW to decrease).
Battery
LiFePO4 (lithium iron phosphate) batteries are preferred over LiPo because LiFePO4 batteries are less prone to overheating, have a longer cycle life, and are more environmentally friendly. Typically 4-cell LiFePO4 batteries have a nominal voltage of 12.8V (see graph below for voltage at different battery life percentages).
For the box to last 3 days without sunlight at the whole-box load of ~36-45Wh a day, the battery needs about 8.5-10.5Ah, and more in practice, since the BMS shuts the battery off before it is truly empty. The 10Ah battery we used has little margin; the 20Ah battery PCW has on hand would give about six days.
The box uses the same temperature disconnect as Holobiont Lab's design, but if the battery's BMS (battery management system) has a low-temperature charge cutoff, the temperature disconnect will not be needed. An internal BMS also protects the battery from overcharge, over-discharge, over-current and short circuit. Almost every LiFePO4 battery has a BMS, but most cheaper ones do not cut off charging in the cold, so check the listing for that specifically.
Some batteries that may work:
- ~$73 12V 20Ah 6.7"x7.2"x3" Screw Terminal BMS ECO-WORTHY
- ~$40 12V 10Ah 5.9"x2.6"x3.7" F2 Terminal BMS NERMAK
Battery safety
The internal BMS can trip at low voltage, after which the battery terminals read 0V. This is called a sleeping battery; see how to wake up a sleeping LiFePO4 battery. In short: charge it at 14.6V and ~1A for our battery. During the Holobiont visit we charged at 1A, then 3A, then 5A.
The Holobiont Lab design includes a fuse holder near the positive terminal of the battery to prevent overcurrent, which can be caused by a short in the system. The fuse holder with a ring connector end may be transferred to the modified set up for screw terminal batteries. For F2 terminals, fuse holders and female F2 connectors may be purchased:
As an estimate, the max possible current through the battery is 10W / 12V = 0.83A. Fuses rated between 2-3A are some reasonable choices.
To keep the system off for troubleshooting or otherwise, disconnect the power wire from the Wago.
Solar panel
Pennsylvania averages about 4 peak sun hours a day over the year ("peak sun hours" means the day's sunlight expressed as hours of full-strength sun). Size the panel for December, though, not the average. Voltaic Systems, who tested solar setups for PurpleAir monitors, use about 2.2 sun hours a day for a south-facing panel in New York in December, a close match for Philadelphia. At the whole-box load of ~36-45Wh a day and about 20% losses (wiring, charge controller, heat, dirt), that works out to 36 / 2.2 / 0.8 = ~20W up to ~26W. Voltaic recommends a 20W panel for one monitor, and Holobiont's rule of thumb is to add 40% or more to a panel's rated wattage, since panels always produce less than rated.
The 10W panel on the first box makes only about 18Wh on a December day, less than the monitor alone uses, and about 32Wh on a clear September day, still short of the whole box.
Moreover, the voltage of the panel should be greater than the voltage of the battery for current to flow into the battery. A panel sold as "12V" actually puts out around 18V at its peak, which is what lets it charge a 12.8V battery.
This means that the ~$18 11.8"x6.8" 5V 5W USB C solar panel previously suggested is not good enough for the air monitor, though it has the ideal dimensions. The 12V 10W panels we compared are below; the same makers sell 20W and larger versions, which are the better choice for a box that runs through winter.
- ~$22 14.9"x7.8" 12V 10W Futuresolar
- ~$26 17.3"x8.5" 12V 10W Newpowa
- ~$29 13.3"x8.1" 12V 10W ECO-WORTHY (the one we use)
Assembly
Build and test the box on a workbench before taking it out. Holobiont Lab's meshbox documentation walks through the same parts one at a time.
- Tune the buck converter to 5V before it goes in the box; see Buck converter.
- Program the XH-W1209 low-temperature disconnect. Hold SET for 5 seconds to enter programming mode, use + and - to move through the settings, and SET to change one. Holobiont's settings are P0 (mode) C, P1 (hysteresis) 2, P2 (upper limit) 55°C, P3 (lower limit) 2°C, P4 (calibration) 0, P5 (start delay) 0 and P6 (high-temperature alarm) off. Boxes from Holobiont come already programmed. See the manual for more.
- Crimp F2 spade terminals onto the battery leads (for an F2-terminal battery like the NERMAK), and fit the in-line fuse holder on the positive lead, close to the battery. 6 steps to crimp ring terminals covers the technique.
- Mount the charge controller, temperature disconnect and buck converter on a backing plate inside the enclosure (Holobiont uses a fiberglass sheet), and attach any heatsinks with thermal tape.
- Wire everything through the Wago lever nuts, following the wiring diagram. The XH-W1209's first two terminals (its relay) go between the panel's positive wire and the charge controller's solar input; its other two take 12V power from the battery side. Tape its temperature probe to the side of the battery. The buck converter's output goes to the USB breakout's screw terminals.
- Connect the battery first, then the panel, then the monitor, and disconnect in the reverse order. This is the usual rule for solar charge controllers, since the battery powers the controller.
- Before closing the box, press the buck converter's button to check both sides: the input should read the battery voltage (about 13V when charged) and the output 5V. Then plug in the monitor and check that it powers on.
- On site, face the panel south, unshaded, tilted at about the site's latitude (roughly 40° in Philadelphia). Bring cables into the enclosure through cable glands to keep water out. The EPA's guide to siting air sensors covers where the monitor itself should go.
Deployment
First deployment (September 2026)
The first box ran for three days before the monitor went offline. The battery had dropped to 10-11V (read on the buck converter's display), and its BMS then put it to sleep. A full 10Ah battery holds about 128Wh, enough for about five days of the monitor alone, so the box was drawing much more than planned. The whole-box load of ~36-45Wh a day is more than a 10W panel makes even on a clear September day (about 32Wh after losses), so any shade or cloud puts the battery into steady decline. The battery was recharged and the box left running without the monitor to rule out a charging fault. The next version should use a larger panel and battery (see Solar panel and Design alternatives).
Troubleshooting
- When the input voltage is 13.0V and the solar panel has been exposed under direct sunlight for ~20-30 minutes, we empirically observe the input voltage rise to 13.1V. This can be used to verify if the solar panel is working properly during that instance of time.
- The buck converter's display doubles as a battery voltmeter: press the button to switch it to input voltage. Compare against the voltage curve to estimate how much charge is left.
- If the battery reads 0V, the BMS has put it to sleep; see Battery safety.
- To keep the system off, disconnect the power wire from the Wago.
- Check the fuse for continuity. A blown fuse points to a short during maintenance or a wiring mistake.
- Check the low-temperature disconnect: is its display on, and is it near or below freezing? If so, the panel is deliberately cut off and the battery will not charge.
- Measure the panel voltage at the charge controller input in daylight. It should be well above the battery voltage (around 18V for a "12V" panel); if not, check the panel wiring.
These checks are adapted from the troubleshooting section of Holobiont Lab's meshbox documentation. See also the troubleshooting section of Solar Mesh Nodes, which covers the shared parts of the box.
Design alternatives
Options worth considering for the next version, especially if PCW builds more of these:
- A 20W panel instead of 10W, for more margin in winter
- A battery with a built-in low-temperature charge cutoff, to drop the XH-W1209 and its constant draw (see the load table)
- A PWM solar charge controller with built-in 5V USB outputs (about $17), which would replace the MPPT board, buck converter and USB breakout in one part
- A 12V USB charger made for cars or boats in place of the buck converter and breakout board, which is easier for non-technical volunteers to swap out
- Powering the monitor from an existing solar mesh node instead of its own box, or over PoE (see below)
- 18650 cells, salvaged from e-bike batteries or cold-weather rated, though LiFePO4 remains the safer choice. Battery Hookup in Bensalem sells surplus cells.
Meshtastic nodes
PCW's Meshtastic nodes are Heltec V3 boards (from Iffy Books), built on an ESP32 chip and powered at 5V over USB-C. Users report an average draw of about 0.15A with peaks around 0.25A (1.25W), a little less than an air monitor. A small 5V 5W USB panel can't power one directly: output drops to nothing at night and sags on cloudy days, and the same goes for air monitors. Either way the device needs a battery between it and the panel.
Options Holobiont Lab suggested for Meshtastic specifically:
- Off-the-shelf solar chargers made for USB-powered Meshtastic devices, such as the YetiWurks solar charger, which Holobiont has run for a couple of years. It has a protection board but no documented low-temperature disconnect; Holobiont has read of units running for years unmaintained in North Dakota and Minnesota.
- Projects that repurpose the internals of solar lights, such as the Meshtastic Harbor Breeze solar node
- ESP32 boards with a built-in solar input for charging 18650 cells
Powering IoT devices over PoE
Where a site already has power and a PCW install, an air monitor can instead be powered over Ethernet: a PoE switch or injector sends power down the cable, and a PoE splitter at the far end steps it down to 5V micro USB (or USB-C for a Meshtastic node). The adapter at the monitor end needs heat-shrink tubing to keep moisture out. The same approach can run a monitor off a solar box's battery through a PoE injector, as in the sketch below (editable source, opens in diagrams.net).
Further resources
- Holobiont Lab meshbox documentation (PCW's copy, in case that link moves)
- XH-W1209 thermostat manual, the vendor's sheet for the low-temperature disconnect
- Power PurpleAir Quality Monitor From Solar, Voltaic Systems' tested sizing for the same monitor
- PurpleAir community: power and data use and running off the grid
- EPA: guide to siting and installing air sensors
- More on the MPPT solar controller
- 6 steps to crimp ring terminals
- Green Technology Resources, including environmental monitoring programs in Philadelphia