Evaluate the monitoring of the PGOOD and CHG pins of the bq24074 to determine the charge state. Currently, the current direction is used to determine the state.
Optimize the solar panel design with the additional solar cells. This will most likely be limited to either the TS4056 or the Adafruit bq24074. Should the panel have two rows in series or three rows in series? Two rows will have a lower voltage but a higher amperage whereas the three rows will be vice versa. Need to remember that the max current of the bq24074 is 1.5A.
Another limitation is that if the panel output voltage is too low, charging won't commence until later in the day or not at all if there is not enough sunlight.
Optimize the battery setup to ensure that the full battery pack can be charged on an average day in the sun. This will most likely be limited to the solar panel power output and the max current of the bq24074 of 1.5A.
Update the schematic with the Feather switch to switch off the voltage divider and not short the EN pin on the feather so that the battery can be preserved by not draining through the voltage divider.
When button A is pressed while charging, the screen turns on. However, the Feather can't go back to sleep without resetting the Feather all together which will also upload a new data point to ThingSpeak. See if the button press when the display is on and charging can put the Feather back to sleep without resetting and sleep for the time remaining in order to keep the upload interval the same.
I've gone through two bq24074 to where it just stops charging the battery. Monitoring the LIPO pin, the voltage oscillates between 0 and 4VDC. I suspect that it is because the panel is outputting more than 1A thus frying the IC. I have since cut the 1A jumper and soldered the 1.5A. This needs to be verified by reading the current of the panel.
The two that died also had the optional capacitor installed. This may also be a culprit. Third one does not have a capacitor.
Have the Feather go into a deep sleep after a charge is complete. Currently, after a charge is complete, the Feather will wake up and go into discharge mode because current is no longer flowing towards the battery. Because the Feather remains awake, the battery is drained again. Perhaps this can be solved by monitoring the PGOOD and CHG LEDs.
Show the OLED screen and don't go to sleep when discharging the battery. This can be done by long press of button on boot or auto detect the discharge.
A permanent board design should be implemented instead of using a breadboard. Look at KiCAD and PCBWay to design and build the board like the Sensor Playground project.
At the middle of charging, the voltage and current start to fluctuate and the battery doesn't charge completely. May be due to the bq charger cutting off the current once the voltage goes above 4.
Need to implement a percentage calculation. Currently, the output is 0. This used to be linear but would like to implement some other type of method such as Coulomb counting.
It is possible for the battery voltage to dip to 1.8 VDC due to the Powerboost and the lack of a battery protection circuit. With this low of a voltage, the charging current becomes very low (~78 mA). Once the battery voltage raises above a threshold (~3 VDC), the charging current increases drastically (~500 mA).
Add touch wakeup where a button is pressed while in deep sleep and the Feather displays a reading for a short period of time and goes back to sleep without uploading to ThingSpeak.
The Feather turns off during discharge when connected to a high current device such as a mobile phone. This may be due to the voltage drops too low during high current output which drops below the required voltage of the Feather. The Adafruit Powerboost 1000 Basic shuts down when the Feather shuts off because the EN pin on the Powerboost is not pulled high. A work around for this is to manually turn on the Powerboost with a switch that floats the EN pin. The downside is that there isn't monitoring during discharge.