sat modem "disabled" + esp32-s2 tft asleep -- 3.68 mA sat modem "enabled" + esp32-s2 tft asleep -- 3.66 mA
essentially no difference.
Seems like the esp32-s2 with no display sleeps at about .7 mA
Apparent issue with the watchdog timer: https://github.com/adafruit/circuitpython/issues/5890
Testing out LoRa - based depth:
http://bayou.pvos.org/data/pb87ap97vgrr
Running every 2 seconds as a test ... latest version is sweet-p/firmware/board_ver_0.2/v4.0
Experiment overnight, May 30th:
http://bayou.pvos.org/data/pb87ap97vgrr?plot_param=battery_volts

Power consumption guidance for the sat modem:
https://docs.rockblock.rock7.com/docs/power-consumption-guidance
Very strange behavior when pull down the satellite 'on/off pin'. I've added an external resistor pull-down to make sure it stays down. Seems like the voltage is still around 1.5V, nevertheless. Stronger pulldown required?
Extended test -- note, test begins with largest spike:
We also have a TPL5110 breakout, which rather than setting an enable pin high/low, connects and disconnects power. The TPL5111 breakout is best when you have an enable pin you can control, the TPL5110 is best when you are able to 'break' the power input line to place the TPL5110 between the power supply and Vin.
TPL5110 connects and disconnects power -- best for when you can cut the power supply

Note: Sparkfun makes a nice breakout board for the TPL5110 that includes switches for the resistance value! On digikey here
and on Sparkfun here
TPL5111 ideally sets an enable pin high/low -- best for when there's an enable pin on an LDO

Actually, seems as though we might want TPL5111 -- controlling an enable (or reset) pin -- since we need to keep the satellite modem powered. And in general we can expect that an enable / reset approach is quite flexible -- we can design our own LDO / mosfet setups in general.
So, how would an a TPL5111 setup work?
Reading the Adafruit guide to the TPL5111, here ...
Note that the TPL5111 pulls an enable pin high -- if we wanted to invert the signal, we could use a single chip for that, or resistors and a transistor, as per https://electronics.stackexchange.com/questions/30238/how-to-invert-a-digital-signal
Usage is easy. First, set your desired delay but adjusting the on-board trim pot: all the way to the left is once-per-100ms an all the way to the right is once-every-2-hours. Then, connect VDD up to your 3-5V project power supply, and then your project's enable pin to the Enable pin. Finally, select a signal pin from your project to the Done pin. In your project's code or design, just make sure that it sets the Done pin high once it is completed with it's task. That's it!
Now that I'm looking at it -- these chips are intended to create a low-power state. For a simple remote sensor application, this might be ideal. For the satellite modem use-case, it's unclear. Perhaps I could use the pin state to pull EN low on the micro and the satellite modem?
Digikey very good guide to watchdog timers
Note in that writeup that the ADM6316 seems suited to 'pushing a reset button' -- has a "push-pull" driver -- digikey listing here and datasheet here
Looks like 100K is too 'weak' a pulldown to force the sat modem pin down. 10K seems to work.
Also: it seems as though there is an initial 'charge up' period before the satellite modem will turn on at all; so pulling up the EN pin on it appears to have no effect initially.
At 3.3V, a 10K resistor yields a 'leakage' current of .3 mA ... which is significant, but our current sleep current for the micro seems to be approx 4 mA anyway ...
Can find a more sophisticated way to pull up / down with additional circuitry.
Using a TL5110 would allow the system to sleep at very low current. It could power the micro; the satellite modem would be powered independently; the EN pin on the sat modem would be pulled own by default. The micro could wake every X minutes.
However, the micro retains no memory when it's asleep (powered off, or deep sleep). So it could only ever wake up and try to send a satellite message.
It would need some way of storing some counter to see whether it should send a message or not when it wakes up.
Unless 2 hours is okay as a start.
Checking the time via GPS doesn't work -- wouldn't know how much time had elapsed without some storage mechanism.
Does DS3231 have some general memory we could use?
Trouble: if something goes wrong in the 'counting' code, or the storage mechanism, then we might never conclude that we ought to send a message.
Best is if the system can be turned on every X hours, do its thing, then turned off.
Maybe there's some hardware counter than can help.
Turn on every 2 hours. Every time it turns on, it makes the counter progress. Read the counter on wakeup; if the counter has reached Y counts, then try satellite.
Waking up an arduino with the DS3231: https://www.youtube.com/watch?v=-dW4XsBo3Mk
Failsafe design for space: https://www.mouser.com/applications/electronic-systems-space-require-fail-safe/
pros / cons of various memory approaches: https://www.digikey.com/en/articles/the-fundamentals-of-embedded-memory
