The Trouble with PiFace

Do Your Research!

Initially, I had thought that PiFaceDigital would be an ideal way to control Pisaac, my Raspberry Pi robot.piface-digital

It has 8 digital inputs, with switches fitted to four, and 8 digital outputs, with LEDs fitted, of which two also control two hefty looking relays, which I thought would be capable of controlling my two motors.

Unfortunately, these relays will only allow me to turn each motor on and off, and not reverse them, so without additional electronics, they’re not up to the job I want them to do.  What I need, I’ve discovered, is a dual H-bridge, of which more in a future post.

However, I wanted room for future I/O expansion, and also some buttons and LEDs to allow some simple interaction to control some of Pisaac’s functions (of which more in a future post as well!), and I’d already bought the PiFace to see what it could do, so on it goes!

Just Passing Through?

However, the fact that I would obviously need something else connected to the GPIO to allow motor control brings me to another couple of problems I have with the PiFace

  • it only uses a small number of GPIO pins, so why doesn’t it have a pass-thru connector to allow the rest to be used elsewhere
  • schematics aren’t available, so it’s not all that easy to find out what is used and what isn’t!  Is this open hardware or not?  (For this reason, I decided I’ll never use this board again, and will probably “design it out” of Pisaac at some point.)

Anyway, to solve the first problem, I first had to solve the second, I found some outdated schematics here, and did some tracing of tracks on the board, and discovered that the PiFace used the following pins (other than power/ground):

22 GPIO_25
24 SPI_CE0

So as long as I avoid using these pins, I can connect something else to GPIO as well as the PiFace.



Now to how I physically do that – as I said the PiFace doesn’t have a pass-thru connector.  What I mean by this, is that it isn’t possible to fit another board on top, or fit a ribbon cable to another board on top.
If you look at the image on the right, the black block on the bottom corner of the board is where it connects to the GPIO.  If there were pins coming out of the top of this through the board, then I could connect something else on top and use the GPIO pins which the PiFace isn’t using.


PiFace’s “solution” to this is the PiRack – see image on the right.  Seriously?  This looks like the kind of expansion interface which used to hang out of the back of home computers in the 1980s and cause constant crashes everytime someone breathed in the wrong direction.  I know Raspberry Pi is, to some extent, a nostalgia project intended to go back to those halcyon days of bedroom coding, but please!

My solution to this was to butcher the PiFace, and this was probably the most challenging part of the construction so far.

Desoldering an IDC connector isn’t for the faint-hearted.  The easiest way I found, if you’re interested, is to prise the socket off the bottom (the black plastic part) and then to heat each pin individually with the soldering iron and then remove with a pair of pliers.  Then, once I’d sucked out all the remaining solder using my trusty sucker, I replaced the connector with a stacking header – one of these.


Once done, my PiFace looked like this, so now I can fit another connector on top of the PiFace.  Mission accomplished.

As I’ve said, there are a few reasons I don’t like the PiFace, so this was probably a bit of a wasted effort, but it’s done now and I’ve achieved what I wanted to achieve.

So now I have a chassis with motors, and the Raspberry Pi fitted on top with a PiFace to give me some I/O options.  In the next post, we’ll move on to motor control and get this thing moving!

Leave a Reply

Your email address will not be published. Required fields are marked *