A first look at the upcoming modular expansion system for Raspberry Pi.
It should be pointed out that the hardware and software covered here are beta versions and it's likely that updates will be made to the design and code before PiGo goes on sale.
Hardware
The base will accept an input of between 6 and 24VDC and from this generates a 5v rail capable of supplying up to 2A. In addition to which each module has its own dedicated 3.3v regulator. With LEDs placed around the board to indicate the status of the 5v and 3.3v rails.
PiGo provides 8 pins of protected GPIO which are connected to LEDs and push buttons and also brought out to two headers.
The base is able to accommodate up to 4 modules, each of which is connected to:
Board power supply, 5v and 3.3v
Raspberry Pi UART
Raspberry Pi SPI
Raspberry Pi I2C
4x dedicated GPIO pins via an I2C port expander
An additional 8 lines of expander I/O are also brought out to a header, giving a total of 16 GPIO pins for off-board use (assuming modules make use of the remaining expanded I/O).
PiGo modules have a single row of 14 pins down each side and the base board uses dual row sockets, which means that pins are easily accessed via the spare row. 4 of these pins are designated as user I/O and are also brought out to screw terminals along the bottom of the base board.
The modules that came supplied as part of the beta kit were:
Motor control
A/D and D/A
Arduino clone with shield compatible headers
Prototyping PCBs were also included and these provide a grid of holes and space for a SMT IC up to SOT-16 in size. Since the base is designed on a standard 0.1” pitch grid, stripboard can also be used for prototyping and more complex modules could span 2 or even all 4 slots.
The Raspberry Pi is connected to the base via a ribbon cable for I/O and USB for power.
Software
The PiGo software is written in Python and a shell script is provided that installs this along with Broadcom SoC and I2C kernel modules, the Python serial library and I2C tools.
The PiGo library provides simple functions for things such as configuring the direction of GPIO pins, reading and setting their state, and using the UART, SPI and I2C.
A demo application is also included with the library.
The Buffered I/O example allows the direction of pins to be configured and their state set and sampled.
If we set I/O to output and 7 and 8 to logic 1.
We can then confirm the I/O state via the base board LEDs.
Going back to the home screen, selecting A/D & D/A this time, and setting channel B to 1 volt.
We can then confirm the D/A is outputting 1 volt, or very close to, using an attached multimeter (which may be the source of the few millivolts error since it hasn't been calibrated in some time!)
To use the Arduino clone module, or do anything else involving the UART, it's necessary to perform a few additional steps to disable boot messages going to the serial console and a login process attaching to it. This is simple enough to do and instructions are included in the documentation.
Conclusion
PiGo provides a robust base for experimentation that should be well suited to use in schools, with plenty of I/O and a simple to use and intuitive library for accessing this.
Being able to prototype modules with stripboard is a particularly handy feature, as is provision of 3.3v and 5v along with the input voltage so you that can integrate your own power supply if required. Since the final PiGo hardware designs will be open source and these are done in DesignSpark PCB, it should also be possible to use these as the basis for developing new modules.
The AD/DA and motor control modules are obvious choices and the Arduino clone a more interesting one. However, this module could lead to some interesting possibilities as it's used with Arduino shields and software that further expand the capabilities of the Raspberry Pi!