How do you feel about this article? Help us to provide better content for you.
Thank you! Your feedback has been received.
There was a problem submitting your feedback, please try again later.
What do you think of this article?
Every electronics project nowadays seems to need a digital computer at its heart. The ‘Single Board Computer’ (SBC) is frequently offered as the solution. But what is an SBC and is it really the best choice to solve your digital problems?
Quad-Core Raspberry Pi 3 B+ Single-Board Computer
A Brief History of the SBC
The first SBC was the Ferranti Atlas built in 1961. In this case, SBC means Single Building Computer as the most powerful version occupied two floors of the purpose-built Atlas Computing Laboratory at Chilton UK. Between the mid-1970s and the early 1990s, the most popular SRC (Single-Room Computer) was the DEC PDP-11 and its variants. The most famous SBC (Single Box Computer) which first appeared in 1981, was the IBM Personal Computer – the start of a long line of Office PCs or ‘Desktops’. Even the PC contained several boards full of chips until Amstrad introduced a true SBC version in 1986 – the PC1512. The Amstrad formed part of a quiet revolution in something that became known as ‘Home Computing’, arguably started by Clive Sinclair in 1980 with his ZX80 SBC costing less than 100 GBP.
So, what is a Single-Board Computer?
Today, it is tempting to say that an SBC is any circuit board that has a microprocessor or microcontroller chip on it. There’s more to it than that – refer to the picture of the Raspberry Pi 3B+ (137-3331) above to see what I mean. The square module in the middle is the quad-core ARM Cortex-A53 processor covered with a metal can. The RAM chip that used to be stacked on top of the processor is now on the other side of the PCB - probably for thermal reasons, see later. The key thing to notice is the array of sockets around the board, USB A, micro USB, HDMI, 3.5mm jack, and so on. To get all the functionality of a desktop computer up and running, all you need to do is plug in an SD card with an operating system, together with a keyboard, mouse, power supply and display into the appropriate sockets and switch on. The point is, all the necessary peripheral interfaces are built-in, and the operating system includes the corresponding software drivers. The Pi can run Linux and even Windows 10 because of its sophisticated microprocessor chip with essential features such as a memory management unit (MMU).
Not a Single-Board Computer
If a Raspberry Pi is an SBC, what is an Arduino Uno (715-4081) ? You can see straight away from the picture that the Uno has far fewer connectors: a barrel-jack socket for power and a single USB-B socket. There are also a number of multi-pin headers for plugging in expansion boards or ‘Shields’.
Arduino Uno Rev 3 Microcontroller Board
The processor is an 8-bit ATmega328 microcontroller from Microchip. It has nothing like the computing power of the Pi chip and can only run a program that’s been downloaded to its Flash memory from a host PC. Unlike the Pi microprocessor, its limited program memory and data RAM are located on the chip itself. It does, however, contain useful hardware such as an 8-channel Analogue to Digital Converter (ADC) and Pulse Width Modulation (PWM) generators. The USB socket is used to connect the board to a PC host enabling program downloads via the on-chip ‘bootloader’. The Arduino, in all its variations, is primarily a Development Board for low-level control applications that don’t require complex algorithms to be run in real-time. The huge number of Shields from both Arduino and third-party suppliers allows you to prototype just about anything from a wireless-controlled robot to a sensor system for home automation.
What if I need high-speed number-crunching and simple control algorithms?
So far, we have established that, as a general rule, SBCs have powerful microprocessor chips with clock speeds up into the GHz range. On the other hand, boards for embedded development usually feature much slower devices – microcontrollers – with perhaps less than 100MHz clocks, but with lots of useful peripheral devices on-chip. What if your project requires both high-speed calculation and simultaneous low-speed control of, for example, DC motors?
An obvious solution is to employ both an SBC (say, a Raspberry Pi) and a microcontroller board such as an Arduino. It means two processor boards of course with separate programming environments, but sharing a communication interface such as an I2C bus. If the project is for an intelligent robot, for example, the Arduino would handle sensor inputs and control the motors in response to commands from the Pi. The Pi provides the ‘intelligence’, perhaps running an AI algorithm which processes inputs from the sensors to create motion commands for the Arduino.
An SBC with number-crunching and control
Inevitably, someone was going to cram both functions on to a single board and a popular example is the LattePanda (124-4684) from DFRobot.
LattePanda Single Board Computer/Controller
The large grey module in the picture conceals two independent processor chips: an Intel Atom running Windows 10 providing complete PC functionality, and a Microchip ATmega32u4 set up to perform like an Arduino Leonardo. You can run the Arduino’s IDE on the Atom, type in a ‘Sketch’ and download the code via a serial link to the ‘Leonardo’ chip just like you would with a separate Arduino board and a host desktop PC. Most of the I/O sockets on the LattePanda board are driven from the Arduino chip.
Intel® Aero Compute Board: an SBC for UAV Development
The Aero Compute (136-8797) is a genuine SBC based on a quad-core Atom microprocessor that can run stand-alone with a version of Linux known as Yocto developed for embedded and IoT applications: in this case UAV (Unmanned Aerial Vehicle) or ‘drone’ control. It’s similar to the Raspberry Pi 3B+ in terms of processor power and size, but a lot more expensive. This may be down to the specialist UAV firmware and the four camera interfaces! I expect it’s also been designed to survive the rather rough environment in which it will have to work.
BeagleBone Blue Single Board Controller for Robotics
The BeagleBone series of Open-Source SBCs have been around for some time. One of the latest iterations is the BeagleBone Blue (136-0693) which has the same Sitara AM335x Cortex-A8 core microprocessor from Texas Instruments as its predecessors. This one is kitted out to be a robot controller, sacrificing display output and keyboard/mouse inputs and replacing them with connectors for sensors and motors. It’s programmed from a host PC like the Arduino, but the powerful processor can still run an operating system such as Linux. However, it’s much more likely that you’ll want to use a Real-Time Operating System, and an Open-Source version is available called FreeRTOS. Despite its name, Robot Operating System or ROS is not a stand-alone product but runs under a Linux release such as Debian or Ubuntu. For the specific area of robotics involving UAVs and mobile robots, there is Ardupilot, an Open-Source autopilot program which will run on the Blue.
Power and Heat
Some years ago BP (Before Pi), SBCs were very expensive and were essentially PC motherboards with Intel processors such as the 80386 and Celeron. Later boards feature the Atom and even the Core processor family. A common feature of these boards is the extensive cooling system attached to the processor chips: a fan and/or a big finned heatsink. These fast, x86-family devices have since been ‘shoe-horned’ into tiny, very low-cost SBCs like the LattePanda above. Unfortunately, in many cases, the thermal considerations have been neglected to keep the price down. If your project tries to run all the cores at anything like full speed, internal temperature sensing will throttle the clock back to prevent damage. The LattePanda can be fitted with an accessory fan and does have an electrical connector for it on the board.
The Raspberry Pi ushered in a new era of ultra-cheap processing power and indeed, all kinds of electronic hardware development kits. It shattered the mass-market dominance of the x86 processors by using a chip based on the already obsolete ARM 11 core architecture (one reason for the Pi’s low-cost). The Pi 1 did not suffer from thermal problems due to its relatively slow clock and less dense chip architecture. The Pi 2 had a quad-core ARM Cortex-A7 processor that pushed the limits, and the Pi 3 was definitely overheating when its quad-core ARM Cortex-A53 processor was operating at full power. The Pi 3B+ appears to have had its cooling problems sorted and the board now has an ambient Operating Temperature Range of 0 to +50°C on the datasheet. All this thermal stuff is important, especially if you’re looking to manufacture and sell a gizmo with an SBC inside.
An SBC using a conventional operating system will load program code from a ‘backing store’ and run it in SDRAM. The backing store will be a hard disk drive on a desktop PC, but Flash memory on an SBC. The Pi uses a plug-in SD memory card, while other boards may have a soldered-on eMMC Flash chip instead. But Flash memory technology has a weakness: a limited number of Erase/Program cycles before failure. Desktop operating systems constantly move pages of data between RAM and backing store, an activity that could wear out a Flash memory in a few months. Use of an RTOS should eliminate this problem in an embedded application where all the ‘desktop’ features are not required.
A non-SBC board like the Arduino is unlikely to suffer Flash write failure because changes to this non-volatile memory only occur during firmware development or subsequent updates and bug-fixes.
Not every board with a microprocessor is a single board computer and not every project needs the processing muscle of a quad-core device with a multi-gigabyte memory. Only a few years ago it would have been a ‘no-brainer’ to select a basic 8-bit microcontroller such as the Microchip PIC16 for an embedded application, develop its software in C or Assembler and Flash the machine code into its tiny program memory. The Raspberry Pi changed all that, giving you a desktop’s GUI interface with 32-bit (now 64-bit) processor power on a board about the same size and price as an Arduino Uno. Nevertheless, massive processing overkill and complication can sometimes bring its own problems….
If you're stuck for something to do, follow my posts on Twitter. I link to interesting articles on new electronics and related technologies, retweeting posts I spot about robots, space exploration and other issues.