Component selection
- TI bq24210 Li-Ion charger supporting both high- and low-impedance power sources. Configured for a max 750 mA charge current to external battery. Support for an optional external thermistor (103AT-4 type) attached to the battery.
- PIC16F1459 PMIC/RTC. Inexpensive micro-controller that supports a USB interface so the board can appear like a CDC-class serial port to the Pi. External 32 kHz crystal to support a very simple RTC (seconds since some point) and alarm-clock functionality to be able to wake the board up at a specific time. External power button to manually turn the board on (and off). Charge status, low-battery detection (and shut-down after warning), USB power fault detection. Two analog input pins and 2 PWM output pins for simple IO functions without requiring further connection to the Pi. The analog inputs can be referenced to an internal voltage reference or the PIC VDD. I hope the PWM outputs will be support both servo-motor control as well as traditional PWM output.
- TI tps61232 boost converter. Supplies up to 2 A @ 5volts for use by the rest of the system (USB/ethernet, Pi, Pi HAT and any attached USB devices). Note that you'll require beefy enough wiring from the battery to support this at full power output since you will be drawing 3+ A from the battery at lower battery voltages.
- LAN9514 USB Hub/Ethernet controller. Not-so inexpensive controller that I picked because I figured it was compatible with the Pi and supported both USB and ethernet. I'm assuming it can run without an external EEPROM but I brought the signals out just in case.
- NCP382 USB power switches. Each USB connector has a separate power control allowing code running on the Pi to turn-on and off USB devices to save power. One connector has both outputs of the NCP382 ganged together for a nominal maximum output current of 2A. The other connectors are each connected to one NCP382 output for a max of 1 A current (this is the rated max of the NCP382 before it current limits - I imagine useful maximum current is somewhat lower).
Connectors
- 4 Mill-Max pogo-pins making contact with the Pi PP1, PP6, PP22 and PP23 test points for power and data to the Pi. The board is connected to the Pi using 0.25" nylon stand-offs.
- 3-pin 0.1" spaced header and 2-pin JST connector with reverse polarity protection for a single cell Li-Ion battery (for example 2000 mA devices sold by Adafruit and Sparkfun or 18650 type). A solder jumper (J1) that is removed when an external thermistor is used.
- 5.5x2.1 mm barrel connector 6-volt Solar Panel input with reverse polarity protection designed for typical 6-9 watt panels that can be found online (7-volt max open circuit voltage)
- Micro-B USB connector for 500-1000mA USB charger
- 3 Type-A USB connectors for USB expansion. The high-current USB connector is spaced 25 mm from the next USB connector to allow "fat" USB devices like cellular modems.
- 13-pin 0.1" spaced header (along the "top" of the board) for an MagJack ethernet connector break-out board (like the Sparkfun BOB-13021). Two solder jumpers (J3, J4) that can be added to allow the LEDs on the MagJack to operate (at the expense of slightly more power consumption).
- 16-pin 0.1" spaced header (located under the Pi's expansion header) for user-signals including the analog inputs, PWM outputs and various voltages used on the board. I imagine using right-angle headers to get access. The PWM outputs are slightly separated to allow easy connection of 3-wire servo-motors (data, +5, ground).
PIC Firmware
- Currently I am hoping to implement the following functionality on the PIC. It may be tricky because I want to see if it's possible using the free compiler.
- Simple ASCII character command set sent/received through a CDC-class serial port. Along the idea of "A0<CR>" to get the analog voltage on analog input 0 or "P1=120<CR>" to set a PWM value. Other commands to control the board power, USB port power, set/read the RTC and alarm, set/read EEPROM values.
- Simple RTC that is essentially a second...
nice project are you sharihng the design files?