Easy access: How the hobbyist end of the electronics world is influencing product development
8 mins read
When the Pi first appeared, its clear target market was education. It did not take long for companies to realise its potential as a mass produced, low cost off the shelf computer.
PA Consulting, for example, used it to build a basestation in a proof of concept – to show how this type of hardware can be used to build complex products that previously needed custom boards.
The Pi does not have a radio interface, so PA's engineers combined the Pi with a software radio processor made by Ettus Research. The Ettus device converted the baseband output of the Pi to RF. The remainder of the basestation functions ran on the Pi itself.
To speed development, the PA team turned also to off the shelf software, using two pieces of open source software. One of these was OpenBTS, which provides most of the functions needed to run a GSM basestation. The second piece of software that PA used on the Pi was Freeswitch, used to route calls.
Other companies are using the Pi in low volume production. As well as using the promise of high volume to drive costs down, the Pi provides access to the smartphone class processors that low volume users cannot buy easily for their own custom boards.
Nottingham based Ciseco decided to use the ARM based board as the computing brains of a home automation network gateway, providing secure internet access for low cost sensors that do not have enough memory and processing power to run those services themselves. Ciseco developed a board that plugs into the Pi and provides wireless communications. Although the company had looked at developing its own compute engine, the Pi's volume driven price became a powerful reason to use it. There are few other options on the market that provide that many MIPS for the price of two chart CDs.
Ciseco was no stranger to the use of 'hobbyist' platforms for development, having worked with the Arduino series of microcontroller based boards.
Arduino is arguably now the most widespread of the hobbyist platforms. The idea of using hardware developed for home users no longer carries the stigma among professional developers than it used to. The image of Arduino has shifted so far that some microcontroller and software vendors now see it as a target for their own development hardware. Last year, Freescale Semiconductor and The Mathworks introduced support for Arduino.
Practically every company that has launched a microcontroller in the past decade has seen development support as vital, continuing a trend to support low volume users that began with Microchip Technology's success in overturning Freescale's dominance of the 8bit market. Microchip enticed designers to change camps using relatively low cost development tools and prototyping systems. By the early 2000s, development boards became mandatory for any vendor with serious ambitions to sell microcontrollers.
Access to a microcontroller development board is one thing, but getting a prototype off the ground is another; the device may not provide enough standard I/O ports, for example. Some vendors have stepped directly in to make it easier to get started with their products.
As part of its expansion into industrial applications, Xmos has developed a range of off the shelf prototyping boards that includes peripheral modules, called SliceKits, that plug into a host card. The company claims a number of partners have designed their own specialist modules for sale to other developers, making it easier for customers in vertical markets, such as audio, to get up and running with a proof of concept.
Other companies have decided that an easier way to provide access to off the shelf I/O for their products is to embrace the hobbyist platforms. By supporting the standard pinout, there is no need to develop custom I/O for a core development board – it's probably already there on the Arduino marketplace.
The platforms split into three main platforms: the USB dongle-size 'PC on a stick'; microcontroller boards, such as the Arduino that range from chewing gum pack to CD sized; and more capable boards, typically based on ARM SoCs, that are intended to host Linux based systems.
Like the Pi, Arduino started life as an educational board, intended for use by secondary schools to teach the basics of programming and computational thinking. The Arduino quickly found support in colleges and universities because it made it easy to develop control systems for experiments, as well as acting as a teaching aid for hardware development in its own right. As graduates moved into employment, Arduino then became an increasingly popular choice for development, particularly for systems that interface with the 'real world'.
Unlike many previous development boards, the Arduino's designers decided to provide the board's layout and schematics as open source. It has also done much to popularise the Atmel AVR architecture; most of the boards provided by Arduino itself are based on various versions of the ATmega.
However, the Arduino platform is not limited to those microcontrollers as the I/O specification for the board is reasonably generic. Simple header connectors on up to three sides of the board, similar to those used on the older PC/104 format, are used to attach Shield modules. And, just like PC/104, the modules can be stacked.
But unlike PC/104, which was based on the PC's ATbus, Shields cannot be stacked arbitrarily. It is only possible to stack modules if they do not attempt to use the same pins – they are designed so that signals from unused pins are passed straight through to the upper connector – or if they use bus capable ports such as the I2C or SPI serial pins. As I2C uses device addresses, it is possible to stack a number of modules and access them using just two pins. But each SPI module needs its own slave-select pin to be defined, and these will need to be configured individually using DIP switches or a similar mechanism, but only as long as enough spare pins are available. Sometimes, configuring the slave select pin on an off the shelf module involves cutting a track to a pin and replacing it with a jumper wire.
Early Arduino programming
The first Arduinos were programmed using an RS232 port, but most have moved to support USB, which can provide both power and host communications support. Since its introduction, the Arduino has mutated into a number of form factors, including the round LilyPad. The shape of the LilyPad was chosen as an alternative to the conventional rectangular board for wearable systems. Large I/O pads are spread around the edge of the LilyPad to make it easy to connect to sensors and LEDs.
An important factor in the success of the hobbyist platforms lies in software. Arduino, for example, is not just a hardware platform, but also a software framework designed to make it possible to get a target do something within just minutes of plugging it in and powering it up.
The Arduino language is broadly C-like, but is designed to allow much more interactive development than traditional cross development environments, similar to the C interpreter supported by Wind River's VxWorks operating system, which is often used as a debugging aid for embedded software. In place of the main() function used by C, the Arduino environment provides two core functions: setup() and loop(). As their names suggest, the former is used to initialise the system and the latter holds code that the running system will execute until the program completes or the user stops it.
Reflecting their interactive nature, Arduino software is uploaded in the form of 'sketches'. Much of the 'sketch' will take in data from hardware peripherals using read functions, process the information and then write data values to pins or registers. Written in Java, the Arduino environment takes care of compiling and loading sketches into the microcontroller's memory.
Although Arduino is moving into the 32bit environment, the Beagleboard, Pi, Panda Board and similar platforms began with various versions of ARM SoC. The aim of the BeagleBoard initiative was to create a relatively low cost open source embedded computing development platform, primarily for Linux based systems. The BeagleBoards, and clones such as the IGEP, use various versions of Texas Instruments' ARM based OMAP SoCs. The slightly larger Panda Board employs a similar approach.
At the smaller end of the scale is the 'PC on a stick'. This is a small development board that resembles a chewing gum pack or a USB drive, although not all have the port itself. Gumstix was one the first entrants to this market, selling 32bit computer modules for projects that demanded a tiny controller board. Not surprisingly, Gumstix proved popular amongst the hobbyists and researchers putting together unmanned aerial vehicle (UAV) designs.
Gumstix started with Intel's Xscale line of ARM based embedded processors, which were later sold to Marvell Technology. More recently, with the Overa series, Gumstix has moved to adopt the TI OMAP processors, offering both single core Cortex-A8 and dual core Cortex-A9 products. These later boards are slightly smaller than the Xscale based Verdex modules: 17 x 58mm versus 20 x 80nm.
Expansion for the Gumstix modules is through two high density 70pin connectors, or 80pin connectors on the older Verdex modules. Although the company's designs for the computer modules themselves are maintained as proprietary, Gumstix has published the schematics for a generic expansion board that can be customised by users. As a result, a number of third party expansion boards are available to provide support for displays, analogue I/O and other functions. The connectors carry USB, extended memory bus and serial port connections as well as analogue lines that connect to a 10bit A/D converter on the host board.
Arduino has also built miniature boards that use a USB stick form factor, choosing to focus on 8bit microcontrollers such as the Atmel ATmega328. The Nano uses a mini USB port for power and has single row pin headers along the long edges of the stick for analogue and digital I/O expansion.
Whereas Gumstix provides a way to squeeze a lot of compute power into a small space for embedded systems, the other strand of the 'PC on a stick' market is for a computer that you can attach to a keyring. For these designs, a USB port at one end is used to provide both power and communication. Recent examples of the genre, such as FXI Technologies' much delayed Cotton Candy, are 'Pendroid' modules that run Android on an ARM SoC inside the tiny unit. Even PC maker Dell has recently decided to jump into the market with its Project Ophelia device.
Google's recently launched Chromecast uses a similar concept – an SoC inside the stick provides a degree of intelligence for a TV. Although it is not meant to be used to develop new systems, some people have gained access to the innards of the Chromecast, which appears to be based on a stripped down version of Android, in attempts to reprogram it.
Although more expensive than a Pi, the Pendroid is designed to be easier to set up and run. Plugging it into a display that has an integrated USB hub creates a computer. An HDMI port at the other end of some designs allows them to use a standard TV as a display. Typically, Pendroids will have WiFi, Bluetooth or both for network access. Companies such as FXI see markets in digital signage because it provides networking and display control for a variety of standard display modules through HDMI.
For embedded systems work that need custom hardware, the USB focused PC on a stick is more restricted than something like a Gumstix module because the only realistic I/O is through a USB hub.
A focus on software prototyping
Today, most of the focus is on software focused prototyping on embedded processor based boards. To answer the need for hardware focused engineering, FPGA based boards aimed at the hobbyist and small developer have begun to appear. Launched earlier this year on Kickstarter, the Mojo from California based Embedded Micro puts a Xilinx Spartan-6 onto a credit card sized board. The board provides 84 general purpose I/O pins on two header connectors and uses USB for downloading designs to the FPGA from host PC with the help of an onboard microcontroller.
Another example is the Papilio from Gadget Factory, which hooks into the Arduino development environment, although it uses a different hardware expansion format to that used by the Arduino Shields. The onboard FPGA, based on a Spartan 3A, can be configured with either a soft processor clone of the AVR or with the ZPuino, a 100MHz processor designed by software engineer Álvaro Lopes. Interest in heterogeneous computing techniques is likely to drive more interest in other programmable hardware platforms alongside more traditional computing modules.
Fashion plays a part in the rise of some of these platforms. The flurry of interest around Kickstarter and the educational benefits of the Pi have played a part in making embedded systems programming more popular. While a good many Pis and Pendroids could clutter up the backs of drawers for years to come, the platforms have done so much to speed proof of concept and early prototyping that they are likely to stay important parts of the embedded systems development process.