In this chapter, you are introduced to the BeagleBone platform hardware. The chapter focuses on the BeagleBone Black and the various subsystems and physical inputs/outputs of the board. In addition, the chapter lists accessories that can be very helpful in developing your own BeagleBone‐based projects. By the end of this chapter, you should have an appreciation of the power and complexity of this computing platform. You should also be aware of the first steps to take to protect your board from physical damage.
The BeagleBone is a compact, low‐cost, open‐source Linux computing platform that can be used to build complex applications that interface high‐level software and low‐level electronic circuits. It is an ideal platform for prototyping project and product designs that take advantage of the power and freedom of Linux, combined with direct access to input/output pins and buses, allowing you to interface with electronics components, modules, and USB devices. The characteristics of the BeagleBone platform are that it
The BeagleBone runs the Linux operating system, which means that you can use many open‐source software libraries and applications directly with it. Open‐source software driver availability also enables you to interface devices such as USB cameras, keyboards and Wi‐Fi adapters with your project, without having to source proprietary alternatives. Therefore, you have access to comprehensive libraries of code that have been built by a talented open‐source community; however, it is important to remember that the code typically comes without any type of warranty or guarantee. If there are problems, then you have to rely on the good nature of the community to resolve them. Of course, you could also fix the problems yourself and make the solutions publicly available.
The BeagleBone platform is formed by the integration of a high‐performance microprocessor on a printed circuit board (PCB) and an extensive software ecosystem. The physical PCB is not a complete product; rather it is a prototype reference design that you can use to build a complete product. It is an open‐hardware platform, meaning that you can download and use the BeagleBone hardware schematics and layout directly within your own product design. In fact, despite the impressive capability of the BeagleBone platform, it does not fully expose all of the features and interfaces of the Texas Instruments Sitara AM335x microprocessor.
One impressive feature of the BeagleBone is that its functionality can be extended with daughterboards, called capes, that connect to the P8 and P9 headers (the two black 2×23 connector rows in Figure 1-1). You can design your own capes and attach them securely to your BeagleBone using these headers. In addition, many capes are available for purchase that can be used to expand the functionality of your BeagleBone platform. Some examples of these are described toward the end of this chapter.
The BeagleBone PCBs were designed by Gerald Coley, a co‐founder of the BeagleBoard.org Foundation. However, the boards, and several of its capes, are manufactured by CircuitCo (www.circuitco.com
). The PCB layout for the BeagleBone Black was also created by CircuitCo. Recently, Element14 (www.element14.com
) has begun manufacturing a BeagleBoard.org-compliant version of the BeagleBone Black. Therefore, when you purchase a BeagleBone board, you are not purchasing it from BeagleBoard.org; rather, BeagleBoard.org is the focal point for a community of developers and users.
Anybody who wishes to transform an engineering concept into a real interactive electronics product, project, prototype, or work of art should consider using the BeagleBone. That said, integrating high‐level software and low‐level electronics is not an easy task. However, the difficulty involved in an implementation depends on the level of sophistication that the project demands.
The BeagleBone community is working hard to ensure that the BeagleBone platform is accessible by everyone who is interested in integrating it into their projects, whether they are students, makers, artists, or hobbyists. Tools and software development environments, such as Jason Kridner’s BoneScript library (Kridner is a co‐founder of BeagleBoard.org and a technical editor of this book) and the Cloud9 integrated development environment (IDE), enable users to write and build code directly in a web browser that is capable of controlling electronics hardware. BoneScript is introduced in Chapter 2. Developments like Blockly (code.google.com/p/blockly
) and Snap (snap.berkeley.edu
) have the potential to be integrated with BoneScript to further improve accessibility for new users.
For more advanced users, with electronics or computing knowledge, the BeagleBone platform enables additional development and customization to meet specific project needs. Again, such customization is not trivial: You may be an electronics expert, but high‐level software programming and/or the Linux operating system might cause you difficulty. Or, you may be a programming guru but you have never wired an LED! This book aims to cater to all types of users, providing each type of reader with enough Linux, electronics, and software exposure to ensure that you can be productive, regardless of your previous experience level.
The BeagleBone is perfectly placed for the integration of high‐level software and low‐level electronics in any type of project. Whether you are planning to build an automated home management system, robot, smart display, sensor network, vending machine, or Internet‐connected work of interactive art, the BeagleBone has the processing power to do whatever you can imagine of an embedded device.
The major advantage of the BeagleBone over more traditional embedded systems, such as the Arduino, PIC, and AVR microcontrollers, is apparent when you leverage the Linux OS for your projects. For example, if you built a home automation system using the BeagleBone and you then decided that you wanted to make certain information available on the Internet, you could simply install the Apache web server. You could then use server‐side scripting or your favorite programming language to interface with your home automation system in order to capture and share the information. Alternatively, your project might require secure remote shell access. In that case, you could install a secure shell (SSH) server, simply by using the Linux command sudo apt‐get install sshd
(these commands are covered in Chapter 2). This could potentially save you weeks of development work. In addition, you have the comfort of knowing that the same software is running securely on millions of machines around the world.
Linux also provides you with device driver support for many USB peripherals and adapters, making it possible for you to connect cameras, Wi‐Fi adapters, and other low‐cost consumer peripherals directly to your platform, without the need for complex and/or expensive software driver development.
The Linux OS was not designed for real‐time or predictable processing. Its kernel is not preemptive, which means that once the processor begins executing kernel code it cannot be interrupted. This would be problematic if, for example, you wished to sample a sensor precisely every one millionth of a second. If the precise time arises to take a sample and the kernel is busy with a different task, then it cannot be interrupted. Therefore, in its default state, the BeagleBone is not an ideal platform for real‐time systems applications. Real‐time versions of Linux are available, but they are currently targeted at very experienced Linux developers. However, the BeagleBone does have an on‐board solution that goes some way toward resolving this problem. Within the BeagleBone’s AM335x, there are two on‐board microcontrollers, called Programmable Real‐time Units (PRUs), which can be programmed for real‐time interfacing applications. This is an advanced topic that is described in Chapter 13.
There are low‐cost dedicated solutions available for real‐time sampling and control tasks (such as the TI Stellaris ARM platform) that may be more appropriate. It is also important to remember that you can interconnect such real‐time microcontrollers to the BeagleBone via electrical buses (e.g., I2C, UART, CAN bus, and Ethernet) and have the BeagleBone act as the central processor for a distributed control system. This concept is described in Chapter 9 and Chapter 10.
The second application type that the BeagleBone platform will find difficult is that of playing high‐definition video. The processing overhead of software decoding and playing encoded video streams is immense, and is beyond the capability of the BeagleBone at high‐definition video resolutions. The Raspberry Pi (www.raspberrypi.org
) board has this capability because its Broadcom BCM28351 processor was designed for multimedia applications, and it has a hardware implementation of H.264/MPG‐4 and MPG‐2/VC‐1 (via additional license) decoders and encoders. For applications such as running XMBC home media center (www.xbmc.org
), you are better off purchasing a Raspberry Pi (Model B+), but for building advanced applications that interface to electronics, the BeagleBone is a clear choice.
This book integrates my experiences in developing with the BeagleBone platform along with supporting background materials on embedded Linux, software development, and general electronics, to create an in‐depth guide to building with this platform. However, it is simply not possible to cover everything in just one book, so I have avoided restating information that is listed in the key documents and websites described in this section. The first starting point for supporting documentation is always the following:
The BeagleBoard.org website: This provides the main support for this platform, with software guides, community links, and downloads to support your development. An excellent “Getting Started” guide and blog is available at the website www.beagleboard.org.
A huge amount of documentation is available on the BeagleBone platform, but the most important documents are as follows:
www.ti.com/product/am3358.
Key websites are also available to support your learning on this platform, with combinations of tutorials, discussion forums, sample code libraries, Linux distributions, and project ideas to stimulate your creative side. Here is a selection of important websites:
www.exploringbeaglebone.com
www.derekmolloy.ie
www.elinux.org
www.eewiki.net
www.hipstercircuits.com
www.oz9aec.net
Getting started with the BeagleBone platform software is described in Chapter 2. The remainder of this chapter discusses the BeagleBone PCB itself, explaining the functionality that is available, summarizing the SRM, and providing some examples of the types of peripherals and capes that you might like to connect to the BeagleBone.
At its heart, the BeagleBone Black uses the Texas Instruments Sitara AM335x Cortex A8 ARM microprocessor. While the BeagleBone Black is the focus of this book, multiple boards have been developed by BeagleBoard.org, including BeagleBoard, BeagleBoard XM, BeagleBone, BeagleBone Black, and the Arduino Tre (BeagleBoard and Arduino combined on a single board). The BeagleBone is discussed in detail in the next section, but here are some summary details on the different boards (in historical order):
The BeagleBone Black platform is the focus of this book, mainly due to its feature set and price point in comparison to the other offerings; however, most of the discussion in this book applies generally to all platforms.
As just mentioned, two versions of the BeagleBone are available: the older BeagleBone White (BBW), or just BeagleBone; and the newer BeagleBone Black (BBB). Both boards have a very small form factor, fitting neatly inside an Altoids mint tin, as shown in Figure 1-2(a). Traditionally, Altoids tins have been upcycled by engineers as a low‐cost housing for electronics projects. Given the complexity of the BeagleBone boards, it is impressive that they fit inside the tin—it also helps to explain the rounded corners on the BeagleBone boards! Holes can be formed in the case to provide access to the board connectors, but of course it is necessary to electrically insulate the aluminum tin before using it to house your board.
To achieve such a small form factor, the components are densely placed on the BeagleBone, and a six‐layer PCB is used to achieve interconnects. As an example, the AM335x (ZCZ) processors used on the BeagleBone platforms have a ball grid array of 324 pins, with a 0.80 mm ball pitch.
Table 1-1 lists the main differences between the BBB boards and the BBW boards. The first obvious difference is the price. Despite the improvement in specification, the BBB is just over half the price of the BBW, and is very competitively priced with other embedded Linux boards, such as the Raspberry Pi (Model B+).
Table 1-1 The BeagleBone Black (BBB) vs. the BeagleBone White (BBW)
FEATURE | BEAGLEBONE BLACK (BBB) | BEAGLEBONE WHITE (BBW) |
Price | About $45–$55 | About $89 |
Processor | 1 GHz AM335x | 720 Mhz AM3359 |
Memory | 512 MB DDR3 (faster 1.6 GB/s and lower power) | 256 MB DDR2 |
Storage | On‐board 2 GB eMMC (4 GB eMMC on the Revision C board) and micro‐SD card slot | Micro‐SD card slot only |
Video | On‐board HDMI | No on‐board HDMI. Optional cape available. |
Debugging | JTAG header present but not populated | JTAG over USB available |
Serial Connection | TTL header present but separate cable needed | Serial over USB |
Input/Output Headers | Almost the same, but fewer GPIO pins might be available due to eMMC and HDMI functionality on the BBB |
The manufacture cost of the BBB was reduced by removing certain functionality from the BBW, such as the USB serial connection, USB JTAG debug emulation, and a power expansion header. However, the step‐up in functionality to include on‐board eMMC storage, HDMI video output, twice the memory, and a faster processor for just over half the price means that the BBB represents particularly impressive value for the money. It is clear that the BBB has reached a price/performance sweet spot that has made it an exceptionally popular platform. The eLinux.org website maintains a record of board shipment numbers that currently indicates 13,000 boards are shipping per month from CircuitCo. Despite this fact, demand continues to outstrip supply, and recently new manufacturers have come on‐stream to help with meeting this demand.
Figure 1-3 and Figure 1-4 detail the core systems of the BBB. The first set of callouts, 1 to 8, identify and describe the key systems on the BBB. The microprocessor on the BBB is a Texas Instruments Sitara AM335x Cortex A8 ARM Microprocessor.2 It is a RISC (reduced instruction set computing) processor, so at 1,000 MHz the processor executes 2,000 million instructions per second (MIPS). The processor runs at about 1 W idle and 2.3 W for heavy processing loads.
The next set of callouts, 9 to 19, identifies the various connectors on the BBB, their physical characteristics, and their function. For connector 18, the JTAG connector, there are 20 pre‐tinned pads. You need to purchase a connector (such as Samtec FTR‐110‐03‐G‐D‐06) for this and carefully solder it to the board. In addition, you need a JTAG interface and associated debug software. The BBW has on‐board USB JTAG support.
If you would like these images for your own reference, Figures 1-3, 1-4, and 1-5 are available as a high‐resolution PDF poster prints at the chapter web page: www.exploringbeaglebone.com/chapter1/
.
Figure 1-5 details the various inputs and outputs that are available on the P8 and P9 headers. There are 92 pins in total on these headers (2×46); however, not all are available for general‐purpose input/outputs (GPIOs). Several of the connections have a fixed configuration:
The remaining 65 connectors are available to be multiplexed to many different functions, several of which are listed in Figure 1-5. The function of each of these input/output types is discussed in Chapter 6 and Chapter 8.
The BBB board is packaged with a USB 2.0 cable (micro‐USB plug to USB A plug), which is used to connect the BBB (via the USB Client Connector) to a desktop computer. It does not come with a micro‐SD card, as the Linux installation is already present on the board’s eMMC. It will boot to Linux directly out of the box. The BBW is packaged with a micro‐SD card, as it has no on‐board eMMC.
The following accessories are recommended for purchase along with your BBB board. If you are planning to carry out development work with the BBB, then you should probably have all of them.
A micro‐SD card enables you to write new Linux images to your BBB. If you accidently damage the Linux file system during your experimentation with the BBB, the micro‐SD card will enable you to restore your system. Ideally, you should have two dedicated SD cards, one for a boot image and one for a flasher image.
Purchase a micro‐SD card of at least 4 GB capacity. You may also require a micro‐SD‐to‐SD adapter so that it can be used in your computer’s card reader. Many micro‐SD cards are bundled with the adapter, which is a cheaper option than purchasing them separately. The micro‐SD card should be of Class 10 or greater, as the faster read/write speed will save you time in writing images in particular. A blank micro‐SD card can also be used for additional file system storage (discussed in Chapter 3), so the greater the card capacity the better.
You can power the BBB directly using the USB connection from your desktop/laptop computer to the USB client connector on the BBB. For getting started with the BBB, that is perfectly fine; however, once you begin to connect accessories such as Wi‐Fi adapters, USB cameras, or on‐board displays, it is possible that the power available over USB will not be sufficient for your configuration. Some early BBB boards would not flash a new system image correctly without being connected to an external 5 V power supply.
You can purchase a 5 V DC regulated switching power supply that plugs directly into a mains supply. It should have a minimum DC output current of 1 A; however, you should aim for a 2 A current supply (2 A × 5 V = 10 W) if possible. The 5 V barrel connector (5.5 mm diameter) from the supply should be center positive. If you plan on running multiple BBBs simultaneously, then you will need to power them using external power supplies (barrel or USB), as connecting two BBBs to your PC simultaneously requires careful software configuration and can cause Internet connectivity instabilities under Windows.
The BBB can use a special networking mode, called Internet‐over‐USB, to create a virtual network between the BBB and your desktop; however, if you are connecting the BBB to your home network, then don’t forget to purchase a Cat5 network patch cable to connect your BBB to the network using its RJ-45 10/100 Ethernet connector. If you are planning to use more than one BBB simultaneously, you could invest in a low‐cost four‐port switch, which can be placed close to your desktop computer (see Chapter 2).
The BBB has a HDMI framer and can be easily connected to a monitor or television that has a HDMI or DVI connector. The BBB has a micro‐HDMI socket (HDMI‐D), so be careful to match that to your monitor/television type (usually HDMI‐A or DVI‐D). The cable you are likely to need is a “HDMI‐Micro‐D Plug to HDMI‐A Male Plug.” A 1.8 m (6 ft.) cable should cost no more than $10. Be very careful with your purchase—a HDMI‐C (mini‐HDMI) connector will not fit the BBB.
Alternatively, you can purchase a low‐cost ($3) micro‐HDMI (HDMI‐D) plug to regular HDMI (HDMI‐A) socket adapters or micro‐HDMI (HDMI‐D) plug to DVI‐D socket adapter cables. These enable you to use regular‐size HDMI‐A or to connect to DVI‐D devices, respectively (see Figure 1-6(a)).
The USB‐to‐serial UART TTL serial cable is one accessory that is really useful when there are problems with the Linux distribution on your board. I find it invaluable when finding and fixing problems with my students’ boards. It connects to the 6 pin J1 header, which is beside the P9 header on the BBB. The black side of the cable is connected to pin 1 (the white dot) and the green side is closest to the USB host connector (see Figure 1-7). Only three pins are used on the BBB: pin 1 ground (black), pin 4 receive (orange), and pin 5 transmit (yellow).
Please ensure that you purchase the 3.3 V level version and ideally purchase a version with a six‐way 0.1” female header pre‐attached (it does sell with only bare wires, which I purchased by accident!). This cable contains a chipset and requires that you install drivers on your desktop computer, creating a new COM port. The FTDI TTL‐232R‐3V3 cable works very well and provides a very stable connection (about $20). See tiny.cc/ebb102
for the datasheet and the “VCP” link to the software drivers for this adapter cable.
If you are planning to flash your own images to the BBB or if you have a board that is not booting, I recommend that you purchase one of these cables. The use of this cable is discussed in Chapter 2 and Chapter 3.
The following sections describe optional accessories that you may need, depending on the applications that you are developing (see Figure 1-8).
If you are planning to connect more than one USB device to the BBB at the same time, then you will need a USB hub. USB hubs are either bus powered or externally powered. Externally powered hubs are more expensive; however, if you are powering several power‐hungry adapters (Wi‐Fi in particular), then you may need a powered hub. Ensure that you plug the USB hub into the BBB host connector before powering on the BBB. I have tried different brands of USB hub and they have all worked without difficulty.
Several low‐cost micro‐HDMI‐to‐VGA adapters are for sale (e.g., on Amazon or eBay) for converting the HDMI output to a VGA output. As well as providing for VGA video output, many of these connectors provide a separate 3.5 mm audio line out, which can be used if you wish to play audio using your BBB, without requiring a television, high‐end amplifier, or monitor (see Figure 1-6(b)). There are also USB audio adapters available that can provide high‐quality playback and recording functionality. These adapters and their usage are described in Chapter 12.
Many different Wi‐Fi adapters are available, such as those in Figure 1-8(a); however, not all adapters will work on the BBB. The Linux distribution and the chipset inside the adapter will determine the likelihood of success. You can find a list of adapters that are confirmed as working at tiny.cc/ebb103
. However, please be aware that manufacturers can change chipsets within the same product and that buying an adapter from the list does not guarantee that it will work. You are more likely to succeed if you can confirm the chipset in the adapter you are planning to purchase, and evaluate that against the list. Wi‐Fi configuration and applications are discussed in detail in Chapter 10, which tests a range of different low‐cost adapters that are widely available.
Attaching a USB webcam can be a low‐cost method of integrating image and video capture into your BBB projects. In addition, utilizing Linux libraries such as Video 4 Linux and Open Source Computer Vision (OpenCV) enables you to build “seeing” applications.
In Chapter 12, different webcams are examined, but the text focuses on the use of the Logitech C920 webcam in particular for video streaming applications (see Figure 1-8(b)). It is a relatively pricey webcam (at about $70) but it is capable of streaming full HD video directly using the BBB, as it has H.264/MPG‐4 hardware encoding built into the camera. This greatly reduces the workload for the BBB, allowing the processor to be available for other tasks. As with Wi‐Fi adapters, it would be useful to confirm that a webcam works with the BBB before you purchase it for that specific purpose. I test several camera types in Chapter 12.
It is possible to connect a USB keyboard and mouse separately to a USB hub or to use a 2.4 GHz wireless keyboard and mouse combination. Very small wireless handheld combinations are available, such as the Rii 174 Mini, Rii i10, and eSynic mini, all of which include a handheld keyboard with integrated touchpad. A USB Bluetooth adapter is also useful for connecting peripherals to the BBB. A similar Bluetooth keyboard/touchpad is used in Chapter 11.
Capes are daughterboards that can be attached to the P8/P9 expansion headers on the BeagleBone. They are called capes (as in Superman’s cape!) due to the shape of the boards as they wrap around the RJ-45 Ethernet connector. You can connect up to four capes at any one time, when they are compatible with each other.
Some capes use a significant number of pins. For example, you will look at the LCD4 cape in Chapter 11. It uses the P8 header pins 27 through 46 and some of the analog inputs for its buttons and resistive touch interface. If you are using the eMMC for booting the BBB, then very few pins remain for GPIO use. In addition, the LCD cape does not carry forward the pin headers. Figure 1-9 shows two views of this cape when connected to the BBB, running the standard BBB Debian Linux distribution.
More than 50 capes are currently available for the BeagleBone; a full list can be found at www.beagleboard.org/cape
. Here is a selection of some example capes that you might find useful in your projects (see Figure 1-10):
www.thing‐printer.com
for more information.www.beagleboardtoys.com
that provides an alternative to USB webcams; however, it cannot be used at the same time as the eMMC, so the BBB must be booted from the micro‐SD card.You have to be very careful about compatibility when interconnecting capes. There is a compatibility table covering the more common capes at tiny.cc/ebb104
. The preceding list is just a small selection. Many more capes are available and it is likely that additional capes will be developed over time.
The BBB and BBW are complex and delicate devices that are very easily damaged if you do not show due care. If you are moving up from boards like the Arduino to the BeagleBone platform, then you have to be especially careful when connecting circuits that you built for that platform to the BBB. Unlike the Arduino Uno, the microprocessor on the BBB cannot be replaced. If you damage the microprocessor, you will have to buy a new board!
Here are some things that you should never do:
Here are two steps that you should always follow:
tiny.cc/ebb105
that you can print at 100% scale and attach to your BBB, as illustrated in Figure 1-1.If your BBB is dead and it is your fault, then I’m afraid that after you perform all of the checks at www.beagleboard.org/support
, you will have to purchase a new board. If it is not your fault, then see the BBB SRM manual and www.beagleboard.org/support
website to return a defective board for repair by requesting a return merchandise authorization (RMA) number.
After completing this chapter, you should be able to:
The key sources of additional support documentation are listed earlier in this chapter. If you are having difficulty with the BeagleBone platform and the issues are not described in the documentation, then you should use these two resources:
groups.google.com/d/forum/beagleboard
. Please read the frequently asked questions (FAQs) and search the current questions before posting a new question.www.beagleboard.org/chat
or directly on the Beagle IRC channel (by joining #beagle
on irc.freenode.net
) using a free IRC client such as X‐Chat for Linux, HexChat for Windows, or Colloquy for Mac OS X.Please remember that the people in this group and IRC channel are community members who volunteer their time to respond to questions.
18.191.208.181