TL;DR
* 10W 12V solar panel
* 2x18650 LiPo
*
LT3652 based Solar LiPo charge contoller
* Teensy 3.1 microcontroller for power management.
I want about 5 days of solar redundancy to allow for Highlands weather.
Instead of having a transparent serial link whereby all AIS sentences are just packetised and transmitted over the LoRa, we waste a lot of energy on partially-full LoRa packets, redundant AIS sentences and possible brownout at night. We want to be able to control the LoRa radio state too by using sleep mode to minimise current draw (we don't need it to receive any messages over LoRa just yet)
If we control the LoRa transmissions and AIS reception with a microcontroller, we can optimise power usage by pre-filtering sentences and packaging up several AIS sentences in on LoRa data frame (max 258bytes - could get perhaps 3 AIS sentences in one LoRa packet ). We can also monitor the power and switch off the AIS receiver when the battery is low or rate limit packets as the input current allows. There is a tradeoff between the extra draw of a microcontroller and that saved by optimising packets. We don't have to receive any information back through the LoRa link (unless we want to at a later date), so we can put it to sleep outside transmissions.
I have a few Teensy 3.1 controllers knocking around which are more than overkill for the job,but they seem suitable because
* 3.3v power possible for low current
* underclock easy for low current
* Snooze library good for low power mode
* good HW serial support for buffering AIS sentences
* good number crunching abilities should we wish to add AIS decoding/prefiltering
Some fag packet calculations. I have made up some assumptions on AIS packet data rates. The LoRa parameters are critical for power consumption - different coding rates, spreading factors etc all vary the packet transmission duration significantly, so I have just made a guess here based on some mid-range figures from the Semtech LoRa calculator
|
|
Device |
On
state |
Sleep
State |
|
|
|
LoRa |
130 |
2 |
mA |
|
|
Teensy |
20 |
1 |
mA |
|
|
Ais |
20 |
|
mA |
|
|
|
|
|
|
|
|
Teensy duty cycle |
0.75 |
|
|
|
|
|
|
|
|
|
time per sentence |
0.15 |
s |
|
|
sentences per min |
120 |
|
|
|
sentences per hour |
7200 |
|
|
|
tx time per
hour |
1080 |
s |
|
|
|
|
|
|
|
calculated lora |
duty cycle |
0.3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LoRa mean
current over 1 hour |
|
40.4 |
mA |
|
|
|
|
|
|
Average
total current draw over 1 hour |
75.4 |
mA |
energy used
in 1 day |
|
|
1809.6 |
mAh |
battery
capacity |
|
|
5500 |
mAh |
battery
duration (no solar input) |
136.1 |
hours |
|
|
|
|
5.67 | days |
solar panel Current @Pmax |
|
|
550 |
mA |
sunshine per
day |
|
|
4 |
hours |
solar input per day |
|
|
|
2200 |
mAh |
|
|
|
|
|
|
time to full
charge @ max flux |
|
10 |
hours |
I happened to have a 12V 10W solar panel going spare, so used this. I have a stash of 18650 cells too. Two in parallel give me 5500mAh.
The solar charge controller - I would have liked this from Adafruit https://www.adafruit.com/products/390 but it is not available locally and only handles a 6V panel
but it didn't handle the 12V (20V open circuit) from my existing solar panel, so I chose one based on the
LT3652 charge controller chip
https://www.sparkfun.com/products/12885
out of the box it required a bit of tinkering to get going. The board is set for a 4 hour timer using a 1uf cap on pin 6 of the
LT3652 . I bypassed this to allow full current to the board (connected in parallel with the battery) when the sun is shining. Battery charge is then current - rather than time - limited.
There are options on the board for current sense resistors, which I could use to rate-limit the AIS backhaul based on available current should I so desire at a later date