As far as I know, there are no standard guidelines for drawing schematics. Most of us learn by trial-and-error, pick up the habits of our teachers, or just never learn. I think it’s time that these guidelines found a home.
The purpose of an electronics schematic is simple, to describe how components are electrically connected. A schematic does not necessarily indicate the physical relationship between components, though a good schematic will make this obvious when necessary.
The difference between a good schematic and a bad schematic is a matter of how easy it is to understand. If another person is able to look at the schematic and simply understand it, you have made a good schematic, if another person has to look at your schematic and decipher it, you have made a bad schematic. Here are my suggestions for making a good schematic.
Labels and Comments
Labels and comments on your schematic come at no cost to you so you might as well use them. You should always label your components. Most schematic editors will do this automatically for you, but if yours doesn’t then you must do this. There are some generally standard designators in use today, the most common are:
R, C, L, and D - These are the default designators for your most common passive components. R is for resistor, C is for capacitor, L is for inductor, and D is for diode (including LED). These are standard designators and you should not use any other designator for these components. The only exception to diode marking is if you are using a Zener diode, in that case refer to it as Z.
M and Q - Standard designators for transistors. MOSFETs are referred by M while BJTs are referred by Q. M can also stand for Motor, if you are using a motor in your design then refer to all transistors as Q.
T or XFMR - Transformer
S or SW - Switch, this includes pretty much any type of switch, even push-buttons. You can use either designator, but you should only use one. Consistency is key, I recommend SW.
X or XTAL - Generally refers to crystal oscillators, X can also be used to designate subcircuits. I recommend XTAL.
U or IC - Designates an integrated circuit, U is the most common designator but IC is just as clear and well understood.
TP - Test point, these are handy and you should make generous use of test points in your circuit while it is in the prototype stage.
JP - Jumpers
J or P - These designate jacks or plugs, respectively. Jacks are generally female while plugs are generally male.
F - Fuse
FD - Fiducial, these are used in the manufacturing phase and help the automated placing machine know exactly where to place parts on your board.
BT or BAT - Designates a battery or battery connector.
X - Parts not covered by the above rules. You should leave a label near these parts to note their function.
These rules are extremely helpful when sharing your designs with others, or when you need to come back to your design in the future. However, having correctly referenced parts is not necessarily enough to make a good schematic. It is also good practice to comment on non-standard parts or on important performance details.
For example, if you have a component that requires a very large power trace or special shielding then you should note this on the schematic. For more advanced circuits, such as RF designs, you would also want to note required trace lengths or impedances.
There are too many examples to list all of the situations in which you should make use of comments, but a good guideline is to ask yourself “If I were to look at this circuit in one year, would I still know what it is doing and how to take it to layout?” If it passes this test then you are on your way to creating a successful design.
Another recommendation for making your schematics clear is to be mindful of where your labels and comments are placed. If a label is placed over another label or over a component outline then you might as well not have it there at all because it won’t be readable. Take the few extra seconds to move your labels into a logical position near the component while not overlapping other components or labels.
The final guideline for proper labeling is to remember to label your most important nets. Don’t go overboard with this, but a few net names to remind you of functionality is an incredibly simple way to ensure that you are making an understandable schematic. Additionally, keep the names as short as is reasonable, use all caps, and separate words with underscores.
This means that instead of “Pin going to output” as a label you would want to do something like “TO_OUT” or even better, just “OUT.” This will ensure that you have readable schematics with signal names that are obvious and intuitive.
An example of good labeling against poor use of labels.
The Logical Schematic
I’m not certain where the convention came from, but it is always customary that inputs come from the left, outputs go to the right, power comes from the top, and ground or negative voltages go to the bottom. I recommend following this convention whenever it is possible and reasonable to do so.
Of course you can’t always do it, but at the very least try to separate your power pins from your I/O pins. If you have multiple voltage rails, the more positive voltages are generally higher on the schematic, though this is not a do-or-die rule.
The standard common emitter vs. a completely illogical implementation of the same circuit. It was actually difficult to draw the circuit on the right.
Dot your i’s and cross your t’s. Well, something like that, this is a convention that comes from the days when low resolution photocopying was common. It is universally accepted that you should make a very clear dot where two wires form an intersection, your CAD package will usually handle this for you but it is good to keep in mind.
Related to crossing connections, you should also try to avoid 4-way connection points. This is another recommendation from the days of photocopying circuits, but it never hurts to design for longevity.
The proper way to connect three wires.
Using Hierarchy the Right Way
The final pointer in ensuring that your schematic makes sense is to utilize hierarchy effectively. This means that you separate logically different parts into a new sheet. By all means, if you can fit your entire design into a single sheet without cramping it together and still following the other rules, you should do that. Otherwise you might as well separate functionally different parts of the design into separate sheets.
There are different ways to do this in each CAD package, but the basic idea is the same. By keeping related components near each other and avoiding the clutter of other components you will be able to more easily verify and debug your design.
If your schematic doesn’t necessarily require multiple sheets then you should still do your best to attempt to introduce a bit of order into the chaos that is an electrical schematic. My preferred method is to draw a box around a functional unit and then place a label inside the box to indicate what that design does.
While this schematic may not follow all of the rules in this guide, it does a good job of demonstrating functional separation. (Click to see full image)
In addition to the general guidelines above, I have managed to compile some other tips that will lead to a successful design. If you have some of your own, feel free to submit them in the comments below (along with an explanation) and I will add them to the list.
Show decoupling capacitors near the device they are protecting. This is one of the few devices where it is important to indicate physical presence of a component. Decoupling capacitors are used to smooth out the ripples at the power supply of a component, in order to effectively do this, they need to be placed physically close to the component. This proximity should be made clear in the schematic.
Design for easily printable schematics. While most schematics today are handled electronically, it is not at all uncommon to want to print the design out, either to share it in a meeting, or to review it with a pen in hand. For these reasons, you should always make sure your schematics are designed to be easily read and analyzed at whatever paper size is common in your area. For the U.S. this is 8.5" x 11" for Europe, the most common size is A4 which comes out to about 8.3"x11.7" or 210mm x 297mm.
Make your schematics understandable even if they are printed in black and white. Many office printers are not capable of printing in color. I also often find that I prefer the look of monochrome schematics when they are printed. If you design your schematic to be readable and understandable without color then it will make it easier to analyze your design later.
Air wires. Use them when you have to, avoid them when it's practical. The point is to make your schematic as easy to understand as possible, so if it makes sense to put a label on a wire and connect it to others by using that label then feel free to do so. Just keep in mind that air wires can make it difficult to debug your circuit later since you must manually search for all of the connections.
Consider revision control. Undoubtedly, you will end up making several versions of your original design. It is best to plan ahead for this and to manage your different versions intelligently. I like to use a combination of git with bitbucket to track my designs, but there are other methods such as manually saving version numbers or date codes into the project name.
Like I said, these are just a few tips I have picked up from my experience, if you have your own then submit them in the comments and I will add them to the article. Now that you know the best practices for getting your design into the computer, get to work! The next step is to start with the physical layout, this is where it starts to get interesting and you will want to have a solid schematic under your belt before you move on.
This is perhaps the most tedious step in the design process, but is
crucial to a successful design. Choosing the right part for your
design could be the difference between finishing your project and giving
up in frustration.
All integrated circuit manufacturers work hard to make their designs
robust and perform their function at the lowest price they can, but not
all companies are equal. This is especially true when it comes to making
their parts easy to use.
Since there are hundreds of thousands (millions?) of different
components on the market, it isn’t possible for me to give a complete
rundown, but what I can do is provide some general guidance on how to
select the best component for your purpose.
Check availability. The last thing you want to do is put weeks or
months into a design only to find out when you go to buy your parts that
a crucial component is out of stock and will not be available for a few
more months. Choose a part that shows a large inventory and optimally is
available from multiple distributors.
Consider where the component is in the product life-cycle. You
generally don’t want to get a component that is no longer in active
production, but if your project is just a one-off build then this may
not be a big deal.
Make good use of the parts filters. Most distributors or part
finding tools offer some way to narrow your search criteria. Make use of
this not only to reduce the amount of parts you have to look at but also
as suggestions for alternative components. As a simple example let’s
assume you have decided you want an LED with a millicandela rating of at
least 80 mcd. Instead of filtering for components that have a rating of
exactly 80 mcd, filter for any component with at least 80 mcd then sort
by price, forward voltage drop, or current draw. This method may save
you money while also getting you a better performing component.
Be aware of minimum quantities. Some components are only sold in
large lots, be aware of this when choosing your components so that you
aren’t forced to do a redesign.
Know what package you are getting. All components are delivered
in some type of package that allows you to attach them to your board.
Some components are offered in multiple package styles that are usually
incompatible. If you are planning on making your PCB at home you should
try to avoid the very small packages such as no-lead packages or
chip-scale packages. These can be difficult to solder without proper
Understand the part! This is the final and most important
guideline that I have. You should always fully understand the part
before deciding to use it in your project. Some components can require a
microcontroller or microprocessor, an external clock, or a special PCB
design. Being aware of these requirements beforehand will help you avoid
headaches in the future.
When it comes to actually finding parts, I like to use the search
capabilities provided by my favorite vendors, this way I know the
product will be available and I can choose components based on the
actual cost to me and available inventory.
Another way to search for parts would be to go to a particular company’s
website and browse their parts catalog for a solution. For example, if
I know I need an ADC for a project, I may start with a company that is
well-known for their ADC products such as TI. This has the advantage of
often leading to a highly usable solution.
My four personal favorite avenues for finding parts are:
Mouser.com - Mouser is a popular worldwide
component distributor that has a wide range of products. Their selection
is (in my experience) not quite as large as Digi-Key’s, but I prefer
their website design, the better filtering system, and the more logical
DigiKey.com - Digi-Key is another popular
worldwide component distributor. They probably have the largest
component selection of any distributor, have great customer service, and
are fast to ship. Overall I would put Mouser and Digi-Key about even,
and certainly at the top of the list.
Octopart.com - This is a relatively new
service that is like Google for electronics. Octopart searches through
many different distributor channels for the part you want. There are
many things I like about this service. They always put the datasheet
in an easy to find spot, they provide a useful product summary, and
show you price comparisons from different distributors. But there are
drawbacks, Octopart still seems a bit unrefined and I don’t think it is
worthwhile to compare prices from different distributors unless you are
only buying a single part or are buying a massive quantity of components
and shipping costs are negligible. In a few years Octopart may become
the standard for finding your parts, but for now it still has some room
datasheets360.com - They have a
database of over 70 million electronic components, each with a PDF
datasheet and is working on scaling the site up to 350 million parts (up
to about 180 million in November 2013). In addition to datasheets they
also provide inventory and pricing information from some of the major
suppliers. This is a great resource.
The first step is to choose what CAD package you will be using in order
to design your PCB. There are a dizzying amount of options on the market
and I don’t know that I can even attempt to list them all, but here are
some of your options:
EAGLE (Free with limitations, upgrades from $70 - $1640)- A
powerhouse in the hobbyist world, EAGLE probably has the most community
support, but has some quirks that led me to choose a different suite.
KiCad (Free and open source, no limitations) - This is my current
personal favorite. As a FOSS option that is quite capable, you have
nothing to lose by trying it out. I think it is better than EAGLE, and
you can’t argue with that price.
gEDA (Free and open source, no limitations) - Another excellent
FOSS option, gEDA and KiCad are often compared. I tried them both and
felt that KiCad was a bit more polished, but you may want to try gEDA
ExpressPCB (Free, no limitations) - It seems like good software,
I have never used it personally but enough people seem to recommend it.
ExpressPCB is backed by, you guessed it, ExpressPCB so this makes it
very easy to send your design for manufacture.
DesignSpark PCB (Free, no limitations) - I had never head of
DesignSpark until I started writing this post. I have to say I am very
impressed by what they show on the landing page so I may check it out.
DipTrace (Non-free, prices from $70 - $900) - DipTrace comes
highly recommended, I prefer free and open-source software (FOSS) so I
have never used it, but it may be worth your time.
PCB123 (Free, more powerful packages non-free) - This software
from Sunstone looks very promising, I’m sure there are some hidden
limitations that I couldn’t find, but I will be checking out this
package when I start my next design.
EasyPC (Non-free, $500-$2700) - I haven’t used this software
personally but it looks well designed (kind of reminds me of Altium
Designer), the price is high for hobbyist use but wouldn’t be too bad
for a professional.
Mentor Graphics PADS (Non-free, cost unknown, likely >$5000) -
This software seems to have fairly poor user feedback, I don’t know why
you would choose to voluntarily use it. From what I can tell, most of
its current user base is from engineers in a corporate setting that are
required to use it for backward compatibility.
Altium Designer (Non-free, >$5000) - Altium Designer has
excellent user feedback, if you are looking for a professional suite to
work with and can handle the price tag, Altium may be your best option.
OrCad PCB Designer (Non-free, >$5000, upgrade path can push
you north of $25000) - Cadence OrCad is a behemoth in the EDA industry,
unfortunately they also throw that weight around by charging insane
prices. If you absolutely need the features offered by OrCad then it may
be worth your investment, but for the average user this is overkill.
So I wasn’t lying, it’s a big list! When we narrow it down and look at
what’s practical though, I think the first three options are the most
interesting for hobbyists.
As I said in the summary, EAGLE is a very popular package and has a huge
community of hobbyists that use it for their projects. Unfortunately
there are some nagging issues with EAGLE that have caused me to abandon
it in search of greener pastures
For various reasons, I ultimately decided on KiCad, but since this isn’t a comparison article I won’t go into details. If you are curious about my reasoning, this article does a good job of highlighting what I didn’t like about EAGLE, though I don’t fully agree with his assessment of KiCad.
First we should understand what materials go into a PCB. At the most
basic level, the base of the PCB is formed out of some sort of solid,
non-conductive, material. This material is then laminated with a copper
(or other metal) sheet, this creates the conductive surface.
The base material is usually a type of glass-reinforced epoxy known as
FR-4. This is the most common material because it is flame resistant,
cheap, and of course has a low conductivity.
For higher performance circuits (RF), there are other types
of materials to consider such as ceramic or PTFE bases with
various fillers. Since this article is more focused on general
PCB design I will not go into details about designing for RF.
Fortunately the EDN Network has posted a useful article on
choosing PCB materials for high-frequency circuits
Really these two materials are about all that goes into a bare PCB. When
you send your design for manufacture (or do it yourself) the electrical
connections are usually created by removing select copper portions of
the bare PCB.
The cheapest PCBs are single sided boards. This means
that they are just made of the base material, with a single sheet of
metal over the top.
Single sided boards are incredibly easy to work with, if you are making
your own PCB at home you will most likely be designing for a single
While the single sided boards are simple to manufacture and understand,
they can also be a pain when laying out your PCB. Since you only have
one layer of metal to work with, you cannot cross electrical connections
without the help of some external jumper.
As a result of this complication the majority of simple commercial and
hobbyist boards are created on double sided PCBs. On a double sided PCB
it is a simple matter to cross electrical connections and this fact
allows for more complex yet elegant designs.
For all but the simplest of designs I recommend designing for
a double sided PCB. This is generally the most cost effective
method that will leave you with the least headache possible.
As designs become even more complex, it may even become necessary to
add additional layers to your design. This can be useful if your board
has incredibly complex signal paths or if you are aiming for a compact
For the majority of users I do not recommend using more than two
layers, if you do this and do not need to you will end up with
an unnecessarily complex design that will cost more to produce.
The copper traces on your PCB are easily the most important part of the
design so it is important to understand what they’re doing and what
limitations you should consider.
As I mentioned earlier, copper traces are created by removing copper
from the solid sheet that sits on top of the base material.
This means that the traces on your board are in fact just thin layers of
copper. I don’t know about you, but when I discovered that it came as a
bit of a surprise (relax I didn’t just find this out). For the longest
time I assumed that PCBs were manufactured by pouring copper into a
mold, letting it cool, and then somehow melting an insulator around the
The thin sheet nature of these traces mean that there are some
constraints to consider when routing your traces, most importantly, size
The final “main component” of a PCB would be the ever useful via. Vias
are used in multi-layer boards to electrically connect one layer to
There are essentially three types of vias, only one of which is common
in the hobbyist world. These via types are:
Through hole - Most common type of via, a hole is drilled through
the whole board and then electroplated so that it is conductive.
Blind - A blind via is used in designs with more than two layers
to connect a surface layer to an internal layer without going all the
Buried - Buried vias are similar to blind vias but are only used
to connect internal layers.
After discussing PCB materials, possible layering options, copper
traces, and vias we have pretty much covered the basics for what makes
a PCB what it is. Understanding these things certainly gives you enough
information to make your own working design, but there are still some
other concepts to consider.
Some other PCB concepts to explore:
Soldermask - If I had to guess what you think of when I say “PCB”
I would bet that it is probably something green. Did you know that PCB’s
are not this color as a result of what material is used? This is in fact
another layer that is applied to the board after manufacturing. The
purpose is to keep solder paste from spreading where it shouldn’t be,
but it also has the effect of giving the board a definite style.
Fiducials - These are special markings on your board that allow a
pick-and-place automated assembly machine to calibrate itself. Fiducials
are usually just a circle where the soldermask has not been applied
with copper circle in the middle. This makes the point appear fairly
Silkscreen - This is also another layer of the PCB added
after fabrication. Silkscreen is used to provide visual cues to
the user, document board information, identify proper component
placement, or for branding. There are conflicting suggestions on proper
usage of silkscreen which I address in Design the Perfect
Copper fill - Deciding whether to use a ground/power plane in your
design will be an important decision to make during the design stage.
The most common reasons for using a copper fill are to suppress noise on
the ground circuitry, dissipate heat from a particularly active device,
or because someone told you that was the way to do it.
I believe it is clear that Arduino is in a different league than the
Raspberry Pi or BeagleBone Black, and serves an entirely different
purpose. What I was looking for and couldn’t find was a comprehensive
article that would summarize all of the pros and cons of the Raspberry
Pi and the BeagleBone Black, and what each platform is best suited for.
I begin by giving a short introduction to each platform and then we will
take an in-depth look at the two platforms side-by-side to determine
which one is best for each category. The categories covered will be:
Ease of Setup
Let’s get started!
About the Raspberry Pi
Arduino is the true trailblazer in the microcontroller area and the device that started the whole “maker” revolution; the Raspberry Pi on the other hand is an amazing device that really started the microprocessor revolution.
The Raspberry Pi was the first cheap (read: $35) single-board computer available to the general public. The project to develop the Pi was born out of a realization that young students were not proficient in the technical details of computing that their older peers had learned out of necessity. Due to their less technical backgrounds these students we not able to perform at the level expected of them.
To attack this issue the Raspberry Pi creators developed the low-cost and relatively high performance miniature computer that would allow a new generation of students to interface with their computers in a way that they had never thought was possible.
If you would like to learn more about the Raspberry Pi, I recommend you to the official “About” page or the “FAQ” page. The story of the Raspberry Pi’s creation is inspiring and is worth a read.
About the BeagleBone Black
The BeagleBone Black is a relative newcomer to the world of easy to use microprocessor breakouts, however, what it missed out on in time-to-market, the BeagleBone Black has more than made up for in capability. The BeagleBone Black has evolved out of the long lineage of BeagleBoard products into the current version; a small form-factor, very powerful, and extremely expandable product that allows builders, makers, artists, and engineers the ability to create truly innovative projects.
The BeagleBoard family was originally designed to provide a relatively low-cost development platform for hobbyists to try out the powerful new system-on-a-chip (SOC) devices that were essentially capable of performing all the duties of a computer on a single chip. The original BeagleBoard is currently priced at $125 while its successor, the BeagleBoard-xM, is priced at $145. So even though these systems were very powerful, they were just not at the right price point to compel people to buy them in mass.
After the BeagleBoard-xM, the BeagleBoard team created the original BeagleBone. It is essentially a smaller, stripped down version of the BeagleBoard. While the BeagleBone was a good start, it still wasn’t as capable as it could have been, and at a price point of $89 it was still a bit too pricey for the hobbyist market.
In late 2012 the BeagleBoard team finally released the newest version of the BeagleBone, called the BeagleBone Black. I think one look at the picture will tell you why they chose this name.
This version has maintained the same form-factor as the BeagleBone but added quite a bit of useful functions and is generally an all around better device; to top it all off, the BeagleBone Black is priced at a very affordable $45.
If you would like to learn a little bit more about the BeagleBone or BeagleBoard devices, you can visit the official community page or the manufacturer community page. This is the best way to learn the intricate details of these platforms, and will let you more fully evaluate if the BeagleBone Black is right for you.
So Raspberry Pi or BeagleBone Black?
Now that we know a little bit about each device, let’s compare them side-by-side and see which one is best for what you want to do. I will do my best to cover all of the topics that are important and to be unbiased in my conclusions.
To start this comparison I have made a summary table where we can take a look at the raw specifications from each device. This is a good way to get a quick overview of each platform’s capabilities but does not always tell the whole story. For full disclosure, I am comparing the BeagleBone Black Rev. A5B to the Raspberry Pi Rev. B. The summary table below compares the two boards as they are shipped, but the in depth comparisons below consider the entire ecosystem supporting each board.
Comparing Raspberry Pi and BeagleBone Black
1GHz TI Sitara AM3359 ARM Cortex A8
700 MHz ARM1176JZFS
512 MB DDR3L @ 400 MHz
512 MB SDRAM @ 400 MHz
2 GB on-board eMMC, MicroSD
1 HDMI, 1 Composite
1280x1024 (5:4), 1024x768 (4:3), 1280x720 (16:9), 1440x900 (16:10) all at 16 bit
Extensive from 640x350 up to 1920x1200, this includes 1080p
1 USB Host, 1 Mini-USB Client, 1 10/100 Mbps Ethernet
2 USB Hosts, 1 Micro-USB Power, 1 10/100 Mbps Ethernet, RPi camera connector
These are hobbyist boards and aren’t exactly expected to adhere to the same high standards as a fully commercialized product. With that in mind, I still believe that the packaging and first opening of the boards constitutes an important part of the first impression a buyer will get.
When I bought my Raspberry Pi, it was packaged in a plain white cardboard box with no markings or included accessories. I noticed that they have since begun shipping in nicely packaged boxes with professional looking markings, so I won’t hold my experience against the Raspberry Pi.
The BeagleBone Black was given to me for free as a participant in the 2013 TI Intern Design Competition. It was packaged in an equally professional box and included a mini-USB cable and a tiny introduction card.
Ease of Setup
Setting up the Raspberry Pi is quite frankly a bit laborious. Since the board does not come with an included micro-USB cable to supply power, you must obtain one on your own. Additionally, the Raspberry Pi does not come with a pre-installed operating system or on-board storage. You will need to obtain an SD card to boot the Raspberry Pi. Once you have an SD card you will need to download and install the operating system on the card. After you have taken care of these prerequisites, the Raspberry Pi should be ready for use.
Setting up the BeagleBone Black on the other hand is quite possibly as simple as it gets. Using the included Mini-USB cable, you can attach the BeagleBone Black to your computer to supply power. The BeagleBone Black will boot from the on-board storage without requiring any more work on your end. If you would like to be able to interact with the BeagleBone Black from your computer you may need to install some included drivers, but this is relatively painless.
Winner: BeagleBone Black by a long-shot
This is really kind of a subjective category since the requirements are different for everybody. If you already have an SD card, micro-USB cable, HDMI cable, and a keyboard to use with the Raspberry Pi, then there won’t be any extra cost.
For the BeagleBone Black, it is quite possible that you won’t need any extra parts to end up with a usable board. If you want to extend functionality beyond just the basics, it is likely you will need to buy a MicroSD card and a mini-HDMI cable.
In addition, the two USB ports on the Raspberry Pi mean that you may be able to get by without a USB hub. Since the BeagleBone Black only has one USB port, unless you have something like a Logitech Unifying Receiver, you will need a USB hub to use a mouse and keyboard.
In my case, the BeagleBone Black was slightly cheaper overall but since there are so many factors to consider here, I will leave this one up to you.
If there is one thing that Business types and Engineers can agree on it’s that everything comes down to the connections you make, and oh boy the BeagleBone Black can make some connections.
With two 46 pin headers, the BeagleBone Black has a total of 92 possible connection points. Some of these connections are reserved, but almost all of them can be reconfigured to be used if needed. Taking a look at the reference manual shows the following (non-exhaustive) list of possibilities:
3 I2C buses
5 serial ports
65 GPIO pins
8 PWM outputs
7 analog inputs (1.8V max 12 bit A/D converters)
With such an impressive list of interfaces, the BeagleBone Black is a real powerhouse in this category. I’m not aware of any other platforms at this size and price point that provide so many interface options, a characteristic that is a real blessing for many applications.
Looking at the Raspberry Pi, we have a 26 pin header for making connections with the following possible interfaces:
8 GPIO pins
1 UART interface
1 SPI bus
1 I2C bus
This is a much smaller list but would be perfectly adequate for an I2C, SPI, or UART based project, as well as any project which doesn’t require external interfacing. The Raspberry Pi’s true power is in a different category which we will take a look at soon.
Winner: BeagleBone Black, no contest
The processor is perhaps the single most important factor in determining how fast your system will perform. The stock configurations give us a 1 GHz processor on the BeagleBone Black and a 700 MHz processor on the Raspberry Pi. In an effort to put the two on a more level playing field, let’s assume that you have overclocked the Raspberry Pi to perform at the same clock speed as the AM3359.
The next defining feature we want to look at is the processor architecture. The Raspberry Pi uses the slightly older ARMv6 instruction set while the BeagleBone Black uses the ARMv7 instruction set, which is currently the most common architecture among embedded systems.
The newer architecture of the BeagleBone Black lends itself to more than just bragging rights though. One advantage of using the more modern instruction set is that the processor on the BeagleBone Black is more widely supported by software developers. Notably, some operating systems are no longer designed to be run on the ARMv6 instruction set, including Ubuntu which dropped support in late April.
Another advantage the ARMv7 instruction set enjoys over the ARMv6 goes beyond support, and includes actual performance enhancements. While the list of improvements between v6 and v7 is a long one, some of the more impressive improvements like implementing a superscalar architecture, including instructions for SIMD operations, and an improved branch prediction algorithm lead to some pretty amazing performance increases.
Specifically, even when running at the same clock speed, the processor on the BeagleBone Black is nearly TWICE AS FAST as the processor on the Raspberry Pi. (Source 1: ARM A8 runs 2000 MIPS/MHz, Source 2: ARM11 runs 1250 MIPS/MHz)
In addition to the impressive graphics processing, the Raspberry Pi also offers a full sized HDMI connector and a composite video output for lower quality connections.
All of this combines to put the BeagleBone Black on the defensive. The BeagleBone Black does have built in graphics support, but is just not quite as powerful and does not support 1080p. To compound the lower graphics processing power, the BeagleBone Black only offers a mini-HDMI video connection for interfacing with your monitor or TV. While there are add-on capes which increase your connectivity options, there is no substitution for the graphics computation power of the Videocore system on the Raspberry Pi.
Winner: Raspberry Pi by a solid margin
This one really isn’t much of a showdown. With the BeagleBone Black allowing you to output audio over mini-HDMI only and the Raspberry Pi supporting audio over HDMI or through a 3.5 mm audio jack, the Raspberry Pi has more capability out of the box.
Looking at the broader perspective, there is an add-on board for the BeagleBone Black which gives adds a 3.5 mm audio out as well as a 3.5 mm audio in and some extra audio processing capability. Since this is an add-on and not the default configuration, I will still give this category to the Raspberry Pi. If you already have a BeagleBone or are looking for some more capable audio processing then the audio add-on cape may be a good choice.
Winner: Raspberry Pi
It is quite frankly pretty difficult to find any reliable data on this category. The BeagleBone Black reference manual provides a range of current draws so there isn’t any guesswork there. The Raspberry Pi, on the other hand, has many different user reported measurements that vary so widely I’m not even sure what is reasonable anymore. The reports which seem most reputable show a slightly lower current draw from the Raspberry Pi.
Winner: Raspberry Pi by a small margin based on unreliable data
I have to admit, when I first set out writing this article I expected the BeagleBone Black to handedly dominate this category. Since I have been working on an add-on cape of my own for the BeagleBone Black (the SensorCape), I was already fully aware of the robust add-on ecosystem that existed for the BeagleBone.
What I was not aware of though, was the add-ons for the Raspberry Pi. Just to clarify, “add-ons” do not refer to cases, cables, or other non-functional accessories; what I am interested in are the additional boards that make your BeagleBone or Raspberry Pi more capable.
We’ll take a look at the BeagleBone first. Browsing through the official CircuitCo capes page, the following add-on boards really stand out to me.
Breadboard, prototype, and breakout capes - These three capes allow you to easily test new additions to your BeagleBone
DVI cape - Allows you to connect to a DVI monitor
VGA cape - Allows you to connect to a VGA monitor
HDMI cape - Allows you to connect to an HDMI connection, this was originally developed for the BeagleBone but could be used for the Black if you just really hate mini-HDMI
LCD capes - There are a few versions of LCD capes in the store that can be used to easily add an LCD screen on top of your BeagleBone
Camera cape - Adds a 3.1 MP camera on top of the BBB, also nicely configured to work with the LCD capes so you could make your own handheld camera
Audio cape - Includes two 3.5 mm audio jacks and allows you to configure audio in and out
Motor cape - Adds a TI motor drive that can drive up to 8 DC motors at 500 mA per motor
Battery cape - For when you want to take your project on the go
Of course this list is not exhaustive, so I don’t want to lead anyone to believe that this is all that is available. These are just the capes that stood out to me as being widely useful.
There are many other more specialized capes in production that I chose not to include. These include the BeagleBone ROV cape, featured in the OpenROV project and is used to control an underwater robot that streams live video; or the Ninja cape that was commercialized into Ninja Blocks, an amazing platform allowing you to automate almost anything.
With such capable extensions for the BeagleBone, you may be wondering how the Raspberry Pi could even compete. I know I was. Truth be told, the Raspberry Pi add-ons are pretty scarce, and since there is no central repository for them, it is difficult to find a good list. The majority of add-ons I have been able to find are simply “breakout” boards or prototyping boards which allow you to easily interface with a breadboard or to solder directly on the board. These types of boards, while useful, are not a killer feature and are not unique to the Raspberry Pi.
Something that is unique would be this add-on from cooking hacks. This board allows you to easily connect Arduino compatible shields and components directly to the the Raspberry Pi. That may not seem like a big deal at first, but if you recall the beginning of this article I mentioned that Arduino is really in a league of its own. This is in no small part thanks to the incredible amount of add-on “shields” that are available for Arduino. According to the Arduino Shield List, there are just short of 300 shields available for the Arduino and nearly all of these are now compatible with the Raspberry Pi.
Outside of this Arduino compatibility though, the support for add-on boards is still fairly low in the Raspberry Pi environment . Unless the functionality you want to implement is covered by an Arduino shield, you may be out of luck.
Winner: Raspberry Pi by a hair thanks to Arduino add-on compatibility, I am still very optimistic on the future of the BeagleBone in this category though. And really, if you are planning on buying a Raspberry Pi and then using Arduino capes, you should probably just buy an Arduino.
This category may not be important to the majority of readers, but I think it is critical to technical users or anyone who may want to produce a minimal version of a project they made with their chosen platform. Both the Raspberry Pi and the BeagleBone Black rely heavily on the open-source community, so let’s see how open they are in return.
The Raspberry Pi is unfortunately based off of a proprietary processor platform which means you cannot view a full datasheet for the processor without going through some significant hoops such as:
Signing a non-disclosure agreement with Broadcom
Providing Broadcom with a business plan
Committing to buy these processors in mass
It is possible to get more information on the internal structure of the BCM2835 for register access, but as far as I know there is no documentation for the processor pinouts. In contrast, the full datasheet and user guide for the processor on the BeagleBone Black can be accessed at the Texas Instruments product page, and does not have a minimum purchase requirement.
In addition to the proprietary processor, the Raspberry Pi Foundation also entered into an exclusive manufacturing agreement with RS and Farnell, meaning that the board layout must be kept secret for now. If you are trying to make your own derivative of the Raspberry Pi or need to know how the components are connected together, Eben has provided the schematics for the Rev. B Raspberry Pi. You will still have to commit to buying the Broadcom chip in mass if you want to make your own, but at least you have a starting point.
The entire documentation, including layout files, schematics, and reference documents, for the BeagleBone Black are hosted at their wiki page, and includes everything you could want to make your own BeagleBone.
Winner: BeagleBone Black
Despite my best efforts, I can’t seem to find any reliable data on the size of each platform’s respective community. Seeing as how (as of April 2013) the Raspberry Pi has shipped more than one-million units,I think it is safe to assume that the Raspberry Pi has developed a larger following. On top of this the Raspberry Pi gets much better media coverage and overall exposure.
These considerations are all important if you are unfamiliar with Linux systems or electronics in general, as well as if you are planning on undertaking a large project which you may decide you need help with.
Winner: Raspberry Pi by a long-shot
Now that we have looked at each category in detail, it is a simple matter to draw some conclusions about which circumstances should lead you to choose one board over the other.
When the BeagleBone Black is the Right Choice
Projects that need to interface with many external sensors - The incredible number of pins on the BeagleBone Black and the many bus options allow you to easily interface with pretty much any device out there.
Anything requiring small form factor but high speed processing - For example this super cool 33 node Raspberry Pi computing cluster would have been much better off using the BeagleBone Black, both from a price and performance standpoint.
Projects that you may wish to commercialize - Since the Raspberry Pi is such a closed-source environment, it is impossible to make your own minimal versions. The open nature of the BeagleBone would allow you to just take the most important features and directly port that into your own design.
As an embedded system learning platform - The Raspberry pi has its roots in education, but the fact that the BeagleBone Black works out of the box leads me to believe it is a better solution for learning about embedded systems.
For when you want it to “just work” - The fact that the BeagleBone Black works right out of the box is a huge bonus and allows you to get up and going in a few minutes rather than an hour or more.
When the Raspberry Pi is the Right Choice
Multimedia based projects - With the significantly more powerful graphics processing and larger number of connection options, the Raspberry Pi is a no-brainer for multimedia interfaces.
Community driven ideas - If you have a project that will in some way rely on the community for proper operation, you should choose the very active community of the Raspberry Pi. If you just think you will need support though, the BeagleBone community is very helpful and many Raspberry Pi projects will easily port to the BeagleBone Black.
As a graphical learning platform - Since the BeagleBone Black does not have quite the video capability of the Raspberry Pi, I would recommend the Raspberry Pi for learning about Linux in a graphical environment. Though to be fair you could do the same thing in a Virtual Machine, it just isn’t quite as much fun.
When Either One Works
Internet connected projects - If you want your project to send updates to a server, or maybe even act as a server, then either board should work just fine for you.
You just want to nerd out - Maybe you just want to get your nerd on. That’s okay, in fact it’s even becoming the cool thing to do. If that is your goal then either platform will serve you well.
I hope you found this guide helpful and that you will use it in making your next purchase. If you still can’t decide which one is right for you and you have some money to burn I really recommend just buying both of these systems. Each board has different strengths and they both offer something different. Happy hacking!