Close

Software, PCBs, issues & ideas

A project log for Wireless solar-powered sensor node

A solar-powered node that stores energy in a supercapacitor, wakes-up regularly, measures different parameters, and sends them to a gateway

strangerandstrange.rand 11/05/2020 at 14:410 Comments

First of all, I'd like to say thank you for all your comments, recommendations, and following the project. It inspires.

Second, you know, giving a meaningful name for the logs is almost as hard as naming variables and methods in programming :)

Software

The node's software has been already published, it uses MIT license to simplify code reuse. The repo consists of two parts: node and gateway. Gateway is based on ESP32. The software isn't 100% reliable and I have a lot of plans for improving it in the future, but currently, it is used as-is to test the node.

The node's software isn't something special too, though I tried to keep it clean and readable. I don't like how the typical Arduino programs are written (everything in one file), so I've separated things a bit. It supports different debug flags that are described in the readme.

PCBs

Yesterday I received the PCBs, unfortunately, cannot say the same about the components, still on their way.

This PCBs aren't the finale ones, I'll use them to test over and under voltage protection circuits.

Voltage drop

I've already mentioned it in the previous log, during the transmission voltage on the supercapacitor drops by 0.4 - 0.5V. It is logical, cupercaps ESR equals 10 ohms, the node peak power consumption ~47mA, which gives us 0.047A × 10 ohm = 0.47V.

From the chart above you may see the result of that voltage drop, we lose transmission power when the supply voltage < 2.25V. Not good at all.

Possible solutions:

  1. Use supercapacitor with lower ESR.
  2. Lower a transmission power =D.
  3. Go back to a previous concept with LDO (but use a better one). It'll allow to use a range from 5.5V to 2.3V.
  4. Add a low ESR capacitor to eliminate the voltage drop.
  5. Just ignore it, and live with it (the real world isn't perfect).

I'll try to use #4 for now. After decreasing a payload size from 17 to 6 bytes (which shortened the transmission time to 3.9ms) and adding a 4700uF low ESR capacitor, I don't see any significant voltage drop during the transmission.

The downside, it increased the node's power consumption in a weird way. After connecting a 4700uF 16V capacitor and it's initial charging, the node consumes 28uA, after two minutes (at the same supply voltage) 20uA. I'll test it in the long run with a physically smaller capacitor e.g. 4700uF 6.3V (because the current one is really huge and cannot be used in the node).

Sleeping time duration

It isn't a problem, just a fun fact. ATmega328P uses quite imprecise timer for watchdog and deep sleep with the longest period of 8 seconds. But for this particular MCU imprecise mean ~9.135 seconds instead of 8. Didn't expect to see difference in a whole second.

Alternative circuit against over and under-voltage

I really like Martin Held's idea of using a simple voltage monitor IC instead of my schematics, it reduces component count significantly and promises quite low power consumption. I'm definitely going to test it later.

Discussions