- 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).
- 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).
- 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 counter (from some point set by the user) incremented by the 32 kHz oscillator. Alarm value that can be used
- Battery voltage monitoring. Ability to report battery voltage to software, low-battery detection message generation, low-battery shutdown (after fault message).
- Configurable Analog inputs. Select voltage reference (VDD, 1.024, 2.048 or 4.096 volts). I want to investigate if the comparators can be used to also wake the system on some condition (for example the voltage off a photo-detector indicates that it's light outside).
- Configurable PWM outputs. Select Servo-type, traditional "Arduino-ish" 490 Hz or some higher Hz for simple RC filter DAC capability.
- Power switch sense. Press and hold for a couple of seconds to power-on. Press and hold for a longer period (perhaps 4 seconds) to power down (software should normally power down).
- EEPROM configurability. Default USB port power states, Default IO port configurations (ADC reference selection, PWM type), time between low-battery message and power-down, perhaps low-battery detection/power-off levels.
- Remote sensor controller. Uses a solar-panel and a satellite modem (like the RockBLOCK stuff) to communicate sensor data from almost anywhere.
- Remote wildlife/security camera. Uses a solar-panel, USB-camera, two servos for pan/tilt and either a cellular modem or WiFi adapter. Probably can't run 24/7 unless there is a lot of sun but could definitely be useful for taking snapshots or running during the day.
- Simple robot. Uses a pair of continuous drive servos or PWM-controlled motors for tank-like drive, a WiFi adapter and an optional camera. Would be cool to see if the camera could be used with something like OpenCV to make the robot follow or track an object.
- Simple file server with battery backup. WiFi or Ethernet. Normally powered by a USB charger, the battery could keep it alive for a small time and it probably has enough power to power several USB memory sticks or perhaps a small external drive.
- Body-worn projects like LED controllers.
- Final schematic and layout review
- Order boards (Iteadstudio), stencil (OSH Park) and parts (Mouser/Digi-Key).
- Design firmware
- Write and debug using DIP PIC part on proto board
- Build and debug
- Make fun things!