|Product Performed to Expectations:||10|
|Specifications were sufficient to design with:||10|
|Demo Software was of good quality:||10|
|Product was easy to use:||9|
|Support materials were available:||9|
|The price to performance ratio was good:||10|
|TotalScore:||58 / 60|
My first time lapse movie. Snap-camera can produce a better quality video than this.
However, I am using an old version of iMovie and it can not.
The PiFace CAD is a great idea. I was immediately interested when I heard about it. The ability to display Rasberry Pi status or program data and to control it in a remote location is invaluable. To do it inexpensively is even better since the price of this board is very reasonable. The ability to control the PiFace CAD with an IR remote is an additional plus. I was happy to find that this board does exactly what the folks at PiFace say it will do. Installation is straight forward and the Python control software is easy to use. That's good because you will need to do some programming to get anything built. At the very least you will need to figure out how to write Python wrappers to call whatever you want to activate based on the button pressed or the output desired. Documentation is in a couple of different places and there are minor differences in the details covered, but that did not cause me any difficulty. To sum things up, I am very happy with the PiFace Control and Display. It has been a lot of fun so far and I plan to do a lot more with it. Thanks to Element14 for giving me the opportunity to play with it.
My initial proposal to Element14 was for a time-lapse controller for a DSLR camera. However, just a week or so after I submitted my proposal, I read the following article:
This article describes snap-camera, an application that the PiFace team created for the PiFace CAD board and the PI camera.
Since snap-camera already accomplishes most of what I proposed, I am basing my initial review of the PiFace CAD on the experience I gained by starting with that project.
Description of the PiFace CAD And Attachment To The Raspberry Pi
The PiFace Control and Display board comes shipped in an anti-static bag inside a small cardboard box. Mine arrived in perfect shape. The PiFace CAD is about 2.25" x 3.25" in size and consists of an LCD display board mounted on top of a bottom board that has most of the circuitry and buttons. On the lower edge of the bottom board, there are five momentary contact push buttons. On the top edge, there is a combined rocker switch and momentary contact push button. There is also an IR detector. The board fits on top of the Pi and has a plastic connector that slides onto the GPIO pins. It fits securely on the pins and the opposite corner of the PiFace CAD board sits solidly on top of the Ethernet port of a Raspberry Pi model B.
The PiFace CAD arrives in an anti-static bag inside a small cardboard box. It also comes with a regulatory & safety sheet.
My Hardware Configuration
When I am using the Pi in the house, I have it attached to an unpowered hub. If you do use a hub without its own power supply, make sure that the Pi's power supply is adequate to drive the Pi and the stuff on the hub. Mine is a cheap 5v 1.2A supply, but has been ok so far. The hub connects to a USB hard drive where I am storing and processing the photos I take. I have Raspian installed on a 32 Gb SD card. A card that size has room for around 11,000 pictures (Pictures seem to range from about 1.5-4Mb each.) Sounds like a lot, but time lapse photography eats up space quickly. The black stick attached to the hub is a Realtek USB dongle on a range extender. The extender is just a cheap antenna. I haven't tested to see if it makes any difference. The Pi Camera attaches by ribbon cable to its own special connecter on the Pi. When working with the Pi, I mostly use a Logitech wireless keyboard/mouse & HDMI output, but I also use ssh and VNC through my home network via the wifi dongle.
PiFace CAD board attached to the Pi. Unpowered USB hub with a hard drive and a wifi dongle on a range extender attached.
Pi Camera (facing downward) is the small board attached to the ribbon cable.
Hardware Setup, Software Installation, and Testing
The first thing I needed to do was enable the SPI pins on the Raspberry Pi. Since I was going to use the Pi Camera, I enabled that too while I was at it. To do that you need to run raspi-config:
Once in raspi-config, move around with the arrow keys and select with the return key. Select option 8 and then A5 to enable SPI. If you want to use the pi camera, enable option 5, too. I don't know if this was required, but I attached the camera before I did this.
Installation of all the software went well. I installed everything logged in as the user pi. First, I did an update and upgrade of the Raspberry Pi software, followed by installation of the PiFace CAD software, followed by a reboot:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python3-pifacecad
To check to see if the PiFace CAD hardware and software were working, I ran the sysinfo example. This example will display the Raspberry Pi's IP address on the top line of the LCD display. On the left of the bottom line, the display will show the Pi's processor temperature. On the right, it will show the remaining free memory. My PiFace CAD worked fine on the first try. To run the example:
If everything went well, it should look something like this:
Testing the PiFace CAD by running the sysinfo program. It should display the Pi's IP address, the processor temperature,
and the current memory usage.
The PiFace CAD has the ability to receive commands from an IR remote control. Since I had everything else working, I went ahead and configured the lirc (Linux Infrared Remote Control) software and paired it to a small Apple model A1156 remote. That installation went fine. I'm not going to detail that here. It has a number of steps and there are a couple choices to be made about how to do it. The instructions I followed are here and they worked well for me:
I had a little trouble using the irrecord program to create a lircd.conf file for my remote. The directions are fine and the program is also, I just didn't spend much time with it after I discovered there's a database of config files for many common remotes. The directions for creating a lircd.conf file can be found here:
And the lircd.conf file database can be found here:
See the snap-camera docs for more detail. There isn't a lot more required to get it running, though. Now that the PiFace CAD was set up., I just needed to add the remaining software for the the Pi Camera. To do that:
sudo apt-get install python3-snap-camera
Here are links to snap-camera info and documentation (the same links are in the Introduction):
I'm going to confine my discussion about operating snap-camera to the time lapse function. For the other modes, see the documentation. Here are the steps to start a series of time lapse exposures:
The snap-camera program creates consecutively numbered files in the directory /home/pi/snap-camera/images. The image file names start at image0001_0001.jpg and continue consecutively to the final exposure. If you start another series, it will start at image0002_0001.jpg. Since you are writing to an SD card, space will become a serious issue pretty quickly. You could easily set this up to write files to some kind of USB media. Since I want to keep things compact and limit power, though, I have stayed with output to the SD card.
My Outside Configuration
When I use all of this equipment outside, I power the Pi with a rechargeable 8400 mAh battery pack. My longest exposure period so far has been three hours and that used about 3/4 of the battery's capacity. I leave the wifi dongle attached. If I am within range of my router, I can manage the Pi remotely and view the photos it's taking. I may try setting it up as an access point so I don't need to be in range of the router. However, removing the wifi dongle entirely and turning off the LCD backlight would probably give me a lot more battery time.
This is my outside hardware configuration.
The Pi, the PiFace CAD, & the Pi Camera need some form of protection from the elements. My solution to the waterproof housing problem is... a food storage container (You were expecting a custom, 3D printed enclosure? Sorry.) The Pi Camera's ribbon connector fits in between the container and its lid. I also wrap a piece of plastic with a small cutout for the lens around the camera's circuit board. You can also see that I have mounted a small level behind the camera to help with aiming. The camera board is attached to a small black, L shaped plastic mount that I got from Adafruit. It doesn't cost much but I don't recommend it. It's wobbly. The whole thing is very low tech, but so far so good.
The housing... it's not pretty but it has worked so far.
Once you have a whole directory full of pictures, what do you do with them? Well, I am using a program called avconv to merge them all into a movie. avconv is part of a library called libsv-tools
You can install it on the Pi or on a PC running Ubuntu with this command:
sudo apt-get install libav-tools
libav-tools documentation is here:
After the time lapse is finished, I move the files from the images directory on the pi to a bigger hard disk and process them on an Ubuntu machine. You can process them on The Raspberry Pi, but a 600-700 frame move will take several hours to create. I processed my files on a fairly low powered Ubuntu box and it took 5-8 minutes. I used this Bash wrapper script to call avconv:
# p2v.sh - B Arduser, 2/5/14
# Calls avconv to convert a directory of time lapse stills, created by the Raspberry
# Pi program snap-camera, to video. Output is an mp4 file
# p2v.sh [directory path] [series #. This is a 4 digit number with leading zeros. ex: 0001]
# The snap-camera program creates a file series that starts will image0001_0001.jpg
# and continues consecutively. The next series will start with image0002_0001.jpg, etc.
# Each series must start with 0001. I deleted some initial files in one of my series
# and avconv would not work until I renumbered the whole directory.
# I found these avconv option settings in a couple of places on the web. avconv has
# many options, and I have not experimented with them yet. See this site for more details:
# avconv options:
# -r : Incoming and outgoing frame rate, depending on the positioning the command.
# -i : Input files.
# -vcodec : What video codec to use.
# -crf : Quality level. Smaller numbers are better quality but create bigger files.
# -g : Group Of Picture size. ?
# -vf : Video filters
if [ -z "$1" ]
echo "Param 1: No directory supplied!"
elif [ -z "$2" ]
echo "Param 2: No File name series number! Enter the first, four digit number in the file name, the one that comes BEFORE the underscore."
avconv -r 10 -i $1/image$2_%04d.jpg -r 10 -vcodec libx264 -crf 15 -g 15 \
-vf crop=2592:1458,scale=1280:720 $1_$2.mp4
That's most of what you need to know to make time lapse videos of your own, If you try this yourself, leave a comment about how it worked out. Put your videos up the web and lets see what you did. I will add some more video links to this, but as my Ubuntu box died two days ago (2/9/14), that may take some time.
Have fun, Bill