RoadTest: PiFace Control and Display
Evaluation Type: Independent Products
Did you receive all parts the manufacturer stated would be included in the package?: True
What other parts do you consider comparable to this product?:
What were the biggest problems encountered?: Using the PiFace Control and Display required removing the Pi from the aftermarket acrylic case I had purchased.
The Raspberry Pi is a wonderful product. From an embedded application standpoint, it does have one disadvantage - either the user must attach a monitor, keyboard and mouse, or connect "headless" to the Pi over a network to use it. The PiFace Control and Display (PiFaceCAD) solves this problem by providing a back-lit LCD display, interface buttons, and an infrared remote control receiver, all in a nice package that sits atop the Pi and connects to its GPIO pin header.
I used the PiFaceCAD as the user interface for a vintage computer project - a disk drive emulator for the Epson PX-8 notebook computer (mid-80s). I'll have a link at the bottom with more info on that effort. However, the bulk of this review will be my generic observations on the PiFaceCAD device.
Upon receipt of the PiFaceCAD, I noticed the packaging was simple but effective. I applaud Element14 for being environmentally conscious. In terms of paper documentation, none is delivered - there is a link on the box which points to the PiFaceCAD website for more info. That is the place to start.
Attaching the PiFaceCAD to the Raspberry Pi is easy - it sits right on top of the GPIO header, and the circuit board is designed to rest comfortably on the Pi's sturdy components (video jack, Ethernet jack). There is one issue, probably unavoidable when I think about it, but unfortunate - I had to remove my Pi from its aftermarket acrylic case. The PiFaceCAD would not connect to the Pi through the GPIO hole in the case, and even if it could, it would render the top flip door of the case useless.
In order to begin using the PiFaceCAD, you need to jump through some Raspberry Pi configuration hoops. The steps involve some command line activities, plus some setup in the Raspbian configuration utility (raspi-config). Instructions are provided on the website, and I did not find them difficult. In fact, all the steps worked exactly as documented, without any errors or omissions. There are a decent number of steps, however. Warm up that shell prompt.
Once your PiFaceCAD is working, you need to program it to do something exciting. There are a couple of ways to do this, but the most straightforward and popular seems to be using Python. I had to learn Python as part of my experience with the PiFaceCAD, and I'm very glad I did. It was a joy to learn!
This does bring up another important point about the PiFaceCAD - for most purposes, it's not a turn-key solution. You should be comfortable with the Linux command line and ready to roll up your sleeves to do some programming. That's not a disadvantage to me, and I suspect most folks using a Raspberry Pi are techies at heart. There are a couple of prepackaged apps, such as the Internet Radio in the examples, but if you're trying to do your own thing (and most of us will be), be ready to write some glue logic for your purposes.
The examples on the PiFaceCAD Python documentation page are plenty to get you started. They demonstrate using the PiFaceCAD to detect button presses, write things to the screen, turn the backlight on and off, create custom LCD characters, and use the infrared remote control receiver. Once you've got your feet wet, the API documentation on Github provides more detailed information. One thing I thought was nice - you can "poll" for the button presses in Python (typical polling loop), or you can create a "listener" which acts as a Python interrupt, jumping to a particular Python function upon a button press. This is more of an event handler scenario and probably results in cleaner code.
Of all the features of the PiFaceCAD, the infrared receiver probably took me the most time to set up. LIRC (Linux Infrared Remote Control) is the system used to receive and act on signals from a remote control, and it's a bit tricky to configure. This is helped somewhat by the fact that there is a library of existing configuration files for what looked like hundreds of remote controls. The remote I wanted to use, from a (retired) Panasonic DVD player, was in the list. Voila, it was working.
One more thing - if you create an application for the Raspberry Pi that uses the PiFaceCAD as the exclusive interface, then you must make that application run when the Pi starts up. Again, this takes some Linux experience and/or some Googling to accomplish. But hey, learning is fun! I learned a lot during my project, which is documented here: The Retrobits Podcast: Retrochallenge Winter Warmup 2014 Success!
Many thanks to Element14 for allowing me to take part in the Road Test.