The main idea is to create a relatively small device that measures temperature and humidity (or anything else using a low-power i2c sensor), sends data to a gateway, and never requires a battery change. In the current iteration, I going to use an ATmega328P microcontroller, RFM69W transceiver, 1-1.5F supercapacitor, and some additional components to provide over/under voltage protection.
The main info here that the new schematic works as expected and the node's deep sleep power consumption is around 5 uA. Also, I successfully tested cold start (charging supercapacitor from 0V), it looks like this
Yesterday I received components and soldered test PCBs, then bad news comes out.
I haven't noticed that the chosen voltage comparator has open-drain outputs, so my schematic is incorrect, though I managed to fix it with some wires. In general, under-voltage protection works but consumes from 20uA to 75uA, that's not acceptable. The next try is to use a voltage monitor IC, e.g. NCP300LSN185T1G or something similar.
The overvoltage protection circuit is crap. It kinda works, but the overall approach is completely wrong. The circuit monitors a solar panel's voltage and if it < 3.84V (240 mV voltage drop on a schottky diode) it charges a supercap, so we could easily have a case when the voltage on the supercapacitor is 2V, 5V on the solar panel, and charging is disabled :) It can be improved to monitor voltage on supercap, but in this case, it'll drain it (due to voltage divider). The good news here, that the alternative circuit works well (I'll test it more during the next days). It uses an adjustable precision shunt regulator that is capable to output up to 100mA, so basically one IC, a few resistors, and that's all.
(resistor values aren't final)
With this approach, I was able to charge a supercapacitor to 3.46V on a dark and cloudy day using a 53x30mm, 5.5V solar panel.
So my next steps are:
Select and order an appropriate voltage monitor for undervoltage protection.
Design and order new PCBs.
Test everything again.
Supercapacitor Discharge Calculator
Recently, I created one more online supercapacitor discharge calculator. All that I've seen don't support different power consumption modes (run, idle, sleep) and some other functionality. It doesn't validate all fields properly, so valid values are required.
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.
Since I'm still waiting for PCBs and components decided to play a bit with software for the node to optimize power consumption.
Initial values:
deep sleep: 4 uA
idle: 2.65 mA
transmission: up to 45 mA (according to RFM69W datasheet)
First of all, seems I mixed up the power consumption of RFM69W and nRF24L01+ (some time ago I tried to use this transceiver, but then switched to the current one), so now the peak current is around 45 mA, a bit bigger than I initially thought. It's not a big deal, but it should be taken into account.
Measured 4 uA during deep sleep is okay as for me, I use a regular multimeter with 1 uA precision and (0.8% + 1) accuracy so it isn't really precise value. I won't tune power consumption during the transmission part, though it can be easily decreased with decreasing transmission power. And now only one candidate is left - idle mode.
Let's start from the beginning. I live in an apartment that faces south and west so I can get reliable temperature measurements from a standard thermometer (you know, such thing on your window with a little bit of colored ethanol inside) only till 1-2 PM. That's why I decided to start this project.
The initial idea was to keep it simple and cheap. Components:
ATmega328P microcontroller
RFM69 transceiver
HTU21 temperature and humidity sensor
1F 5.5V supercapacitor
Some solar panel
The ATmega328P microcontroller in a deep sleep consumes tiny amount of energy ~4uA, but to operate at the lowest voltage (1.8V) 4MHz oscillator should be used.
It's very interesting. I'm searching for solution for low energy Zigbee devices which can operate without. battery - and I found this project. I don't know solr panels very well, any experience about indoor usage? And there are some Zigbee chips (as End device) which have less energy consuption like ESP32.
Unfortunately, I don't have any experience with indoor usage of solar panels, but I assume, that in this case, some proper harvester IC is required.
As for me, ESP32 isn't really low power. Yes, it can sleep well but connecting to wifi and transmitting data is a long process (<60ms in this project and, AFAIK, seconds for ESP32). Probably, Zigbee performs better, but haven't tried.
Have you considered the supercap¨s internal resistance? Some of these RTC backup types have maximum current output in the range of single mA figures. The voltage can sag formidably when transmitting. Also the lifetime of the s-cap could suffer badly from excessive currents.
According to the supercapacitor datasheet, ESR Max is 16Ω, at my voltage range, I should get from 112mA to 225mA (if I calculate correctly). Both these numbers are much above the maximum power consumption during the transmission, so I don't expect any issues.
About your question, it's really hard to say something. Probably I would use an esp32 board for this task (maybe TinyPICO, due to its low power consumption in a deep sleep mode and build-in battery power management) + LiPo/Li-ion battery. Unfortunately, I have no idea about the size of a solar panel for this, but you can find such projects (esp + solar panels) here, on hackaday.io.
Okay, now I see your use case, though I don't clearly understand the technical side. I we talk about a real e-mail, it requires an internet connection. The same gateway approach as in my project can be used, but this particular transceiver has a rather low range (500 meters, or up to 2 kilometers in some cases) so some LoRaWAN module should be used instead. Additionally we should think about a screen, keyboard, etc.
In general, I think it's possible. Also connection through LoRaWAN satellite would be a nice option, Fossa Systems tried such a thing.
Is a really nice project, but do you have any schematics you could share to see if we can replicate it?