I remember when building a computer used a batch of S100 boards. These were 8-bit machines that took up a rack and might even include a bunch of toggle switches and lights for programming. These days one can get started with boards that fit in your hand.
Three platforms have generated a significant following which means support, lots of software and hardware support. These include the Arduino, Raspberry Pi, and BeagleBone (Fig. 1). The tiny board in the upper right is a wireless expansion board for the Arduino. It is similar in size to the basic Arduino platform versus the larger Digilent board. They are open-source hardware platforms that are supported by open source software.
Hardware for each platform is available from a wide range of sources. Software is available from even more sources supporting everything from simple serial ports to 3D sensors like the Microsoft Kinect. These platforms can be used for those new to embedded development or those looking to develop applications or check out the latest hardware.
Table of Contents
The Arduino platform has been around for quite awhile. It started with an 8-bit Atmel AVR processor but the platform has since expanded to include processors from Microchip’s 32-bit MIPS-based solution in Digilent’s chipKIT (Fig. 2) to the Arduino DUE (Fig. 3) is based on Atmel’s SAM3X8E Cortex-M3 microcontroller.
The two things Arduino platforms tend to have in common are Arduino shields and the software development tools. Of the three platforms, the Arduino is closest to an embedded platform since a display is not necessarily part of the solution. Likewise, the software is low level often doing without any kind of operating system. Initially the performance of the microcontroller limited what could be supported but the latest crop of 32-bit microcontrollers that now dominate the Arduino platform are more than capable of handling an operating system.
The standard Arduino software development environment is targeted at teaching embedded programming. It has its own terminology with software being called sketches. It is essentially C with a simple IDE but it has progressed significantly from the base 8-bit AVR and basic C support.
Most platforms support multiple development tools including professional tools from the microcontroller vendors and their third party support. Some tools are free. Part of the challenge is managing hardware support as most software for Arduino shields targets the Arduino development environment.
Most I/O is handled via Arduino shields. The connectors ring most of the board and allow most boards to be used by plugging them in. Most can be stacked since one rarely utilizes all the I/O. Part of the challenge for all the platforms is how the I/O is mapped when multiple boards are used. For example, I2C can support many devices but they each need their own I/O. Likewise, SPI chip selects need to be unique.
There are actually a number of Arduino shield form factors, some proprietary. The initial Arduino platform defines the most basic version. The expanded versions utilized more connectors that expose more I/O available on higher performance microcontrollers used on newer Arduino compatible platforms.
I/O software support can be an issue. Usually basic C support is provided for the Arduino development environments. More advanced support for devices like wireless modules tend to be more host specific. Not all combinations will work together but if you can think of a hardware/software combination then an Adrduino combination can probably be found.
The $35 Model B (Fig. 4) doubles the amount of memory to 512 Mbytes. It is based on a Broadcom BCM2835 System-On Chip (SoC) like the $25 Model A. The 700 MHz BCM2835 has an ARM1176JZF-S core.
The BeagleBone Black is based on a Texas Instrument’s AM335x 1GHz ARM Cortex-A8. It has a 3D graphics accelerator, NEON floating-point accelerator and also includes a pair of Programmable Realtime Units (PRU) that are really 32-bit microcontrollers in their own right. The Cortex-A8 is a dual issue, superscalar platform that has the edge in performance compared to the ARM11 of the Raspberry Pi. The boards have Ethernet, HDMI and USB connectors.
I was really impressed with the overall BeagleBone package because it is the one platform that works out of the box. All that is needed is a PC with USB and a relatively new OS. The latter is required to provide the RNDIS network support via the USB connection.
Essentially you plug the USB cable into the PC and the BeagleBone Black. The BeagleBone Black shows up as USB flash drive but it also makes the network connection. This provides a web interface running on the BeagleBone Black. The web browser on the PC starts with an HTML file on the flash drive but that redirects to the web interface.
The web interface actually provides a web-based IDE and toolset in addition to a web-based SSH interface. I won’t get into all the details of what the BeagleBone black provides but it is impressive. This is the advantage of using the eMMC flash.
The BeagleBone Black is compatible with the expansion boards, also called capes, available for the original BeagleBone. These use the pair of 46-pin headers on either side of the BeagleBone. These provide access to the microcontroller’s I/O including CAN , SPI and I2C plus to USB-to-serial and USB-to-JTAG interfaces. The systems also have four mounting holes.
Ok. I’m going to waffle and say that the choice is really dependent upon your background and requirements. If you are looking to learn C and embedded programming then Arduino is a good choice because it puts you close to the hardware. It also provides a good way to evaluate a microcontroller since many vendors are delivering boards that can take advantage of Arduino expansion boards.
If software that runs on Linux or an operating system is more of what you want then Raspberry Pi, BeagleBone or one of those variants is probably a better choice. Likewise, heavy duty display or audio chores are more easily handled by these two platforms.
As a base platform, I lean towards BeagleBone Black. The on-board eMMC is fast and efficient. It is memory limited but more than enough for most projects. I am also very impressed with the built-in development software. For some ROS (robot operating system) work I have found the support for Raspberry Pi to be good.
What is really interesting these days is how these platforms are impacting other designs. For example, the UDOO (Fig. 6) is a Kickstarter project that combines the Arduino expansion form factor with the functionality of Raspberry Pi, and essentially the BeagleBone. It is a dual processor solution that starts with the Atmel Cortex-M3 found in the Arduino Due. It also has a dual or quad core Freescale i.MX6. Definitely a heavy duty platform.
The type of work you intend to use the system for definitely affects what platform you will choose. Don’t overlook other alternatives like the $99 Ouya (see Ouya Brings $99 Game Console Via Kickstarter) based on an NVidia Tegra 3 if software and graphics are where you want to be. It runs Android and has WiFi and Ethernet support.