07/20/2017 at 03:12 •
Just a note about a fun project with the Pi Platter that might be of interest to others. A simple script uses the features of the Pi Platter to make a stand-alone time-lapse camera. The script runs from /etc/rc.local, gets the time from the Pi Platter's RTC, takes a picture and then sets a wakeup alarm for five minutes in the future and then shuts down the Pi and powers-down to conserve power. A switch connected to one of the Pi Platter's analog inputs can be used to disable the time-lapse photography system and allow the Pi to boot to a command prompt for off-loading pictures.
A complete write-up including OS configuration and the script can be found at my website.
The script also collects battery and charging data and during the week I ran this in the Colorado summer, a 4400 mAh battery was kept completely charged, even on overcast and rainy days using a 9W 6v panel.
01/03/2017 at 21:13 •
Despite a shipping mishap with the production test fixture PCB (sent to Brazil during a strike there), we were able to fulfill the kickstarter campaign on schedule with boards shipped to backers in December. Next up is to find a distribution channel to sell, at least, the remainder of our production run of boards. If there is ongoing interest then we can make another production run.
I also added a set of software utilities (the talkpp utility to communicate with the board and the ppd daemon), example code and documentation to a github repository (in the project description).
09/20/2016 at 02:00 •
The second revision of the PCB is back and one unit built. Although there is still a bunch of testing to do it's alive. So far I have found a swapped set of transistor silkscreen part number labels.
Here's the board with a Pi Zero 1.3 booted from the HDD.
The new revision.
08/01/2016 at 19:17 •
The second revision of the Pi Platter PCB is almost done. Hopefully the only additions will be various test points, if necessary, for the manufacturing test fixture. The main changes were the addition of the USB UPS bypass functionality and changing to use a stacked USB connector so the area around the PI Zero's HDMI connector was free of interference. I also slightly improved heat sinking for various parts and tightened up the high-speed signal layout as well as making sure the ground plane was improved in a few areas.
I am currently thinking the manufacturing test will be essentially a functional one, connecting to all IO ports (and any necessary other test points) and then under control of a computer we'll test the power subsystems and enumerate the USB bus and make sure we can communicate with all downstream devices. I don't think we will end up building huge volumes of this board so perhaps it's ok if the test is a little labor intensive (e.g. manually plugging in USB cables, etc.).
07/08/2016 at 17:57 •
One of the configurations I tested during debugging of the original prototype of the board was a Western Digital hard drive connected to the board along with a WiFi dongle and keyboard/mouse powered by a USB charger. The average current consumption (even when the battery was fully charged and at its highest output voltage) was above the maximum 750 mA that the charging circuit could provide which meant that the battery was slowly discharged. So there was no way to use the Pi Platter as a battery backed file server (or other HDD-based application). I thought briefly about trying to find a different charger (750 mA is near the bq24210's upper limit). The problem is that to support our maximum load of 2 A it'd have to be at least a 2 A charger which would increase cost as well as possibly limit the battery selection since 2 A could be too much for smaller batteries. So I decided to add a bypass circuit that would power the system directly from the USB charger and from the battery through the boost converter for solar applications or when the USB power failed. This meant a couple of new control signals to the PMIC that was currently out of spare signals. One thing I had been contemplating already was making one of the USB ports "always powered" instead of switched to prevent a case where the user could make it not possible to access their Pi to make change. This freed up one signal. I decided to remove the Power Good status signal from the bq24210 for the other since it didn't seem all that helpful.
The critical timing for the UPS functionality is switching from a failing USB Charger voltage to power from the Boost Converter without the +5V rail falling below 4.5 volts. There are 3 parts to the timing, a falling USB voltage to some threshold that indicates it's no longer good, the time for the micro-controller to detect and act on that signal and the time for the boost converter to start up. Switching from battery power to USB power isn't as critical because we can leave the boost converter running for a tiny bit while validating the USB voltage and switching the bypass back on. The USB Charger voltage is fed through a resistor divider into a comparator on the micro. The output of that is routed as the highest priority interrupt so the boost converter can be switched on by an ISR and then power-fail validation, state management, etc can be done in the main code. Voltage falling below around 4.7 volts to boost converter enable is less than a micro-second. It then takes a few milliseconds for the boost converter to start up which can be covered by bulk capacitance on the board.
The bypass is comprised of two back-to-back P-channel MOSFETs to prevent current from flowing in the wrong direction depending on the various use cases (USB power but no system power, USB power and system power, no USB power but system power). I ended up having to add a N-channel MOSFET switch for gate control since the micro may be running at a lower voltage and can't keep the P-channel transistors entirely off (Gate = high-side voltage for off).
I think I will add a green/red LED to the next revision of the board because one thing that became obvious when testing the original prototypes is that we didn't always know when power was on or off (the green LED on the Pi is extinguished when the system shuts down).
Here's a video where I not only forgot which was the P-channel FET but that I was using 2 of them (in my defense it was at the end of a long, long day shooting video for the kickstarter campaign and I wanted to go home).
I've done quite a bit of testing using both a dynamic load (Arachnid Labs ReLoad Pro) and real systems including with both the WD314 HDD and a 1 TB HDD. Interestingly the small voltage drop when the USB power is disconnected caused the 1 TB HDD to retract it's heads. We heard a click whenever we disconnected USB power but the system kept working. I guess it saw the slight voltage dip as an impending power fail as well.
07/07/2016 at 14:37 •
Along with another member of my makerspace, I have launched a kickstarter for this board. Check it out if you are interested.
07/02/2016 at 18:07 •
I built this remote control car as a demo of the Pi Platter after I found an old Sparkfun two-wheel base at my makerspace, Solid State Depot. I hacked the base so it would accept 4 control signals (Direction and PWM speed for each motor) and added a simple boost converter (battery -> 8.5VDC) to give the motors enough oomph. The Pi Platter PWM outputs are configured for 48 kHz output to control motor speed and two GPIO pins from the Pi Zero control motor direction. A Sharp IR distance sensor that I also found at SSD and Adafruit analog current monitor to measure battery current are connected to the Pi Platter analog inputs. A USB web cam, WiFi dongle and LED lamp connect to the USB ports. The ability to turn on and off individual ports is used to switch on and off the LED "headlamp".
I'm using mjpg-streamer to get relatively low latency video for display on my laptop. A custom c program provides a socket for the computer to connect for control. It's super simple with small packets (command packets to the Pi and telemetry packets back to the computer when requested). I wrote a xojo program for the Mac to display the video, telemetry and provide control. I also hacked an ancient analog joystick, adding a arduino leonardo to read the pots and create a serial stream for control. It was interesting to pick the a reasonable algorithm to convert X-Y joystick control into 2-wheel control.
Not shown on the picture above is the Adafruit inductive charger strapped onto the bottom of the car for charging (it's output connects to the Pi Platter USB input).
Here it is in action.
Eventually I'd like add an IMU so the car can understand where it is (and to make motor control much easier) and integrate opencv so it can read some signs telling it where to go. Probably will be better, also, to put this on a new base.
I'm happy to share the code or whatever to anyone who is interested. Eventually I'll document this here or on my website.
06/30/2016 at 17:51 •
Here are my measurements for the new V1.3 Pi Zero power and USB test pads. I'd love it if anyone else could verify or correct. I also think I made a small error with the vertical dimension for PP22 and PP23 (although we never saw a problem with the original 5 prototype boards).
04/07/2016 at 19:12 •
Board is up and running with a significant amount of testing done. Still need to do full load testing and some signal quality analysis as well as fully test the firmware but it has run in a variety of configurations. So far the only additional change is to add a 22 uF cap.
03/28/2016 at 15:32 •
This is the firmware development board for the PIC. Right now most everything is running except power-down and persistent storage of configuration values to Flash.