Choosing an Arduino for Your Project
Are you just looking for specs between Arduino boards?Check out our Arduino Comparison Guide which provides a list of popular Arduino development boards and their specifications.
Let’s face it, there are a a lot of different Arduino boards out there. How do you decide which one you need for your project? In this tutorial, we’ll take a look at the diverse world of Arduino boards. We’ll delve deeper into each board, examining the pros, cons, and example use-cases.
Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It’s intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments. Or more simply, you load on some code and it can read sensors, perform actions based on inputs from buttons, control motors, and accept shields to further expand it’s capabilities. Really, you can do almost anything.
All Arduino boards have one thing in common: they are programmed through the Arduino IDE. This is the software that allows you to write and upload code. Beyond that, there can be a lot of differences. The number of inputs and outputs (how many sensors, LEDs, and buttons you can use on a single board), speed, operating voltage, and form factor are just a few of the variables. Some boards are designed to be embedded and have no programming interface (hardware) which you would need to buy separately. Some can run directly from a 3.7V battery, others need at least 5V.
If you don’t know what Arduino is but found yourself here, you may want to start with our What is an Arduino tutorial?.
You should also have a good understanding of the Arduino IDE. If you need help installing it, visit this tutorial.
Glossary of Terms
Microcontroller (MCU): The microcontroller is the heart (or, more appropriately, the brain) of the Arduino board. The Arduino development board is based on AVR microcontrollers of different types, each of which have different functions and features.
Input Voltage: This is the suggested input voltage range for the board. The board may be rated for a slightly higher maximum voltage, but this is the safe operating range. A handy thing to keep in mind is that many of the Li-Po batteries that we carry are 3.7V, meaning that any board with an input voltage including 3.7V can be powered directly from one of our Li-Po battery packs.
System Voltage: This is the system voltage of the board, i.e. the voltage at which the microcontroller is actually running. This is an important factor for shield-compatibility since the logic level is now 3.3V instead of 5V. You always want to be sure that whatever outside system with which you’re trying to communicate is able to match the logic level of your controller.
Clock Speed: This is the operating frequency of the microcontroller and is related to the speed at which it can execute commands. Although there are rare exceptions, most ATmega microcontrollers running at 3V will be clocked at 8MHz, whereas most running at 5V will be clocked at 16MHz. The clock speed of the Arduino can be divided down for power savings with a few tricks if you know what you’re doing.
Digital I/O: This is the number of digital input/output (I/O) pins that are broken out on the Arduino board. Each of these can be configured as either an input or an output. Some are capable of PWM, and some double as serial communication pins.
Analog Inputs: This is the number of analog input pins that are available on the Arduino board. Analog pins are labeled "A" followed by their number, they allow you to read analog values using the analog-to-digital converter (ADC) in the ATMega chip. Analog inputs can also be configured as more digital I/O if you need it!
PWM: This is the number of digital I/O pins that are capable of producing a Pulse-width modulation. (PWM) signal. A PWM signal is like an analog output; it allows your Arduino to “fake” an analog voltage between zero and the system voltage.
UART: This is the number of separate serial communication lines your Arduino board can support. On most Arduino boards, digital I/O pins 0&1 double as your serial send and receive pins and are shared with the serial programming port. Some Arduino boards have multiple UARTs and can support multiple serial ports at once. All Arduino boards have at least one UART for programming, but some aren't broken out to pins that are accessible.
Flash Space: This is the amount of program memory that the chip has available for your to store your sketch. Not all of this memory is available as a very small portion is taken up by the bootloader (usually between 0.5 and 2KB).
Programming Interface: This is how you hook up the Arduino board to your computer for programming. Some boards have a USB jack on-board so that all you need to do is plug them into a USB cable. Others have a header available so that you can plug in an FTDI Basic breakout or FTDI Cable. Other boards, like the Mini, break out the serial pins for programming but aren’t pin-compatible with the FTDI header. Any Arduino board that has a USB jack on-board also has some other hardware that enables the serial to USB conversion. Some boards, however, don’t need additional hardware because their microcontrollers have built-in support for USB.
The ATmega328 (and the ATmega168 before that, and ATmega8 before that,…) is a staple of the Arduino platform. 32kB of flash (program space), up to 23 I/Os – eight of which can be analog inputs – operating frequencies of up to 20 MHz. None of it’s specifications are flashy, but this is still a solid 8-bit microcontroller. For many electronics projects, what the 328 provides is still more than enough.
The Arduino boards on this page all feature the ATmega328 as their main MCU brain. The microcontroller alone makes every board on this page nearly identical in terms of I/O count and memory. Their differences stem from things like programming interfaces, form factors, and operating voltages.
The Main Event: Arduino Uno
The Arduino Uno is the “stock” Arduino. It’s what we compare every, other, Arduino-compatible board to. If you’re just getting into Arduino, this is the board to start with.
The Uno comes in two flavors, through-hole and SMD, which use either a through-hole or surface-mount ATmega328. The through-hole version (pictured above) is nice because you can take the chip out and swap in a new one (in case the magic, blue smoke is released), but the SMD version has the potential to be more readily available (PTH chips are increasingly being phased out of existence).
The Arduino Uno can be powered through either the USB interface, or an external barrel jack. To connect it to a computer you’ll need a type-B-to-A USB cable (like the USB connector on most printers).
A Modification: RedBoard
One of the greatest things about Arduino is the fact that the entire project is open-source. The schematics, hardware design files, and source code are all freely available for viewing and modification. Released under a Creative Commons Share Alike license, anyone is free to riff on the hardware design and produce their own version. That’s how a product like the RedBoard comes to be. It still looks and acts just like an Arduino Uno, but is slightly modified to make the board better-suited to certain purposes.
The RedBoard is nearly identical to the Uno, but there are a few key differences:
- USB connector: The Redboard uses the smaller mini-B connector, so you’ll need a mini-B-to-A USB cable to connect it to your computer.
- USB-to-Serial Transciever: The Arduino Uno uses an ATmega16U4 loaded with custom firmware to convert between USB and serial. The RedBoard uses the FTDI FT232RL. This difference is only really prevalent when installing drivers because each requires a different driver file.
- SMD vs PTH: The RedBoard is only offered in a SMD version, and it takes SMD a step further by making every component surface-mount. No sharp edges on the bottom of the board!
- Color: True to it’s name, the RedBoard comes in
FerrariSparkFun red. It won’t have any real influence on the operation of the Arduino, but it certainly affects the board’s swag-factor.
- Price: Because we manufacture the board in-house, here in Boulder, CO, we can afford to keep the price-tag a tad lower.
Like the Uno, the RedBoard is great for beginners. On the whole, it should offer the same Arduino experience as an Uno might. For a deeper comparison between the RedBoard and Uno, check out our RedBoard vs. Uno tutorial.
For the Pros
Arduino Pros are a scaled-down version of the Uno. There’s still an ATmega328 on there, but removed are the connectors and USB-to-serial-converting circuitry. Basically, this is the bare-minimum an Arduino needs to still be an Arduino. As the name would imply, these boards are intended for use by more experienced Arduino-ers.
You’ll need more than just a USB cable to program an Arduino Pro; an external board is required to convert USB from your computer to serial that the Arduino understands. There are various boards and cables that can accomplish this task, we recommend the FTDI Basic Breakout.
This board mates up to the 6-pin, right-angle connector on the edge of the board. When you’re done programming and ready to stick the board into a project, just unplug the FTDI Basic.
The smaller form factor and absence of connectors means this board can be more custom-tailored to fit into a project. You can solder wires or connectors directly onto the pins you need. Then again, it has the same pin footprint as the Uno, so it’s still shield compatible.
The Pros come in two varieties: 5V/16MHz and 3.3V/8MHz. The 5V/16MHz board runs at the same voltage and speed as the Arduino Uno. The 3.3V/8MHz board is unique, though, because it can operate at a lower voltage. A lower operating voltage makes the board easier to power with batteries (LiPos specifically), but it also means the clock speed has to be turned down. The 3.3V/8MHz board runs at half the speed a regular Arduino Uno…but 8MHz is still pretty darn fast for many applications. You can still turn an LED on and off more than a million times per second!
Of course, if this board is still to big, you can shrink it down even further…
The Mini boards pack all of the remaining punch of the Arduino Pro into a much smaller footprint. Every pin is still broken out (actually, more pins are broken out), they’re just in a very different footprint.
An Arduino Pro Mini attached to an FTDI Basic, which provides power and uploads code.
Obviously, these boards aren’t shield-compatible, but they are breadboard-compatible. You can solder male headers into the Pros, and straddle it across the breadboard’s middle strip. The small form-factor also makes them very conducive to embedding into projects (like in the H2O pH Probe).
And, the Arduino Fio too. This board wires up the ATmega328 to an XBee (or XBee-compatible) wireless transceiver, so your Arduino can communicate wirelessly with other devices.
ATmega328P with Arduino Optiboot
What do you get when you take the SparkFun RedBoard or the Arduino Uno and strip away everything but the microcontoller? The ATmega328P with Optiboot is what you get, offering the functionality of the RedBoard and Uno in a much smaller package. For reference when placing the Arduino on a breadboard or a project, we labeled the pins with a sticker!
The Optiboot (Arduino Bootloader) allows for Arduino code to be uploaded to the microcontroller without the RedBoard or the Uno. This comes in handy when you want the functionality of a basic board but need to save some space. To upload code from the Arduino IDE to the ATmega328P you will need a 5V power supply, a serial UART circuitry, and a 16MHz crystal. Once that is taken care of, you’ll be all set to tackle your next project!
Have you ever wanted a RedBoard that could fit in your pocket protector? Well fret no more! The RedStick has many of the same features you’re used to with ATmega328 boards, now in fun size!
Despite it’s small size, the board still has 14 digital I/O pins with 6 PMW pins, 8 analog inputs, UART, SPI, I2C, and external interrupts. Running at 5V/16MHz, the board can be powered either through the USB plug, single celled LiPo battery, or even 2x AA batteries. The onboard boost converter allows the board to be powered with an input range between 2 to 6 volts. With a built-in FTDI and USB end, simply connect the board directly to a computer’s USB port to reprogram! (No external FTDI board or USB cable required!)
The RedBot Mainboard is meant for simple, fast development for robotic controls. It is an all in one board that includes an XBee header, pre-programmed Optiboot (Uno) bootloader, numerous pins for sensor integration, TB6612FNG dual DC motor driver, power switch, and a motor disable switch so that pesky robot doesn’t keep trying to run off while you’re tinkering. While designed specifically for the Magician and Shadow chassis, the servo and sensor capabilities can be applied to many robotic projects.
Like many standard ATmega328P boards, the RedBot operates at 5V, has an operating frequency of 16Hz, and has a flash memory of 32kB. Pin-wise it comes with two 1x3 female header for motors, four 2x3 male headers for servos, and two 2x3 male headers sensor ports. Because the board is a motor driver-Arduino combo with all these headers and connectors, the need to stack multiple shields is eliminated while customization is increased.
If you’re working on a project and want to record the temperature or measure the weight of a static load, then the OpenScale is the perfect board for you. Designed for data collection, the OpenScale utilizes screw terminals to connect to temperature sensors and load cells. The board comes with a built-in HX711 load cell amplifier and FTDI.
When it comes to recording the data, you will have plenty of options. You can simply connect the OpenScale to your computer using your USB port. You can also connect a datalogger (like the OpenLog) or communicate with a Bluetooth transmitter using the serial UART port. The board operates at 5V/16MHz.
Another great benefit of the OpenScale is that it’s open source. To upload code to the OpenScale, simply use the Arudino IDE. The board comes with a bootloader compatible with the Arduino Uno, so get coding!
The SparkFun OpenLog is an open source datalogger that works over a simple serial UART connction. While it’s smaller than the Arduino Pro Mini, there are not as many pins broken out for easy access on the PCB. The board includes a microSD card socket that handles up to 32GB to store all the serial data that your project generates for scientific or debugging purposes.
The board operates at 3.3V and requires a 3.3V FTDI to program
The MicroView combines the ATmega328P with a 64x48 pixel OLED to display sensor data, email, pin status, and more. The MicroView also has a full-featured Arduino library to make programming the module easy. The board includes 12 digital I/O pins (3 of which provide PWM output and 6 analog input pins).
The MicroView operates at 5V/16MHz and requires a 5V FTDI or the MicroView USB Programmer to upload code.
The list could go on and on. If you see a board with that recurring, six-pin, serial header, and an ATmega328 doing all of the processing, its specifications probably aren’t all that different from an Arduino Pro.
The next step in the Arduino evolutionary chain was merging the USB-to-Serial programming part of the board onto the main MCU. That meant we had to leave the ATmega328 behind – because it doesn’t natively support USB – in favor of the ATmega32U4. Aside from the additional USB support, the 32U4 is largely similar to the 328. Both are 8-bit AVRs with 32kB of flash memory, 22-ish I/O lines, ADCs, UARTs, timers, etc.
These ATmega32U4 boards often have the benefit of being cheaper than the ATmega328-based boards – there’s one less costly IC to put on there. They can also do things regular Arduino boards can’t, like emulate a USB keyboard/mouse. On the downside, they can be less reliable, and more difficult to use.
The Leonardo is the patriarch of all ATmega32U4 Arduino boards. It shares the same form factor and I/O placement (analog, PWM, I2C pins in the same place) as the Arduino Uno, so it remains shield compatible.
Differences between the Leonardo and the Uno? Aside from the new microcontroller, and lack of a second USB-to-Serial-converting IC, there’s not many. The USB connector is different, the Leonardo connects to a computer via a micro-B USB cable. The driver installation process is also a bit more involved – sometimes it can take a little extra fidgeting to get the board installed on your computer.
Just as the Pro Mini took the guts of the Arduino Uno and shrunk them down, the Pro Micro works as a miniature version of the Leonardo. Unlike the Pro Mini, the Pro Micro doesn’t require an external board to upload a sketch – the 32U4 takes care of everything!
Pro Micros are among the more complicated Arduino boards to get up and running. There are extra steps required to enable them in your Arduino environment, and a misstep can (at least temporarily) “brick” the Pro Micro. These boards are a good choice if you’re an advanced Arduino-er and have a small USB-oriented project in mind (a mini USB keyboard/mouse?).
There are plenty of other riffs on the Leonardo design as well. There’s the Fio v3, for any Arduino Leonardo project you might want to add an XBee to.
Or the Qduino Mini which adds a LiPo charger and battery fuel gauge, and two RGB LEDs (one for status and another that is user programmable!). The board was designed by Quin at the age of 14 and manufactured at SparkFun.
Bare Conductive Touch Board
Then there is the Bare Conductive touch board. Basically it is a Arduino Leonardo designed to turn almost any material or surface into a sensor. The board comes with a built-in capacitive touch sensor, a MP3 decoder IC, microSD card socket, and LiPo charge IC to create light switches, musical instruments, custom interactive surfaces.
The e-textiles segment of the Arduino market is ruled by LilyPads. These are identifiable as unique purple, flowery-looking, circular boards. The pins on LilyPads are called “petals”, they have bigger holes and copper filled to the edge of the board. These are designed so conductive thread can be sewn through the holes, and make electrical contact with the exposed copper on the petal.
LilyPads are great for e-textiles – projects which combine electronics and fabric wizardy. For a detailed explanation of these boards, check out this tutorial.
Choosing a LilyPad Arduino for Your Project
October 27, 2015
Need some extra “beef” in your Arduino? Need more I/O pins, or a faster processor? That’s where Arduino’s like the Mega or the Due come into the picture.
Arduino Mega: The Souped Up Uno
The Arduino Mega is what you might get if you packed four Arduino Uno’s into one board. There are 54 I/O pins, instead of the 14 an Uno gives you. That’s a whole lot of extra LEDs! Instead of one hardware serial port, there are four. And the Mega sports a whopping 256 kB of flash program space. Not to mention 16 analog inputs, and 14 PWM outputs. The Mega just has more of everything.
The brain of the Mega is an ATmega2560, a fully souped up ATmega328. Aside from the massive processor overhaul, the Mega still shares a lot in common with the Arduino Uno. There’s a secondary IC on-board (an ATmega16U2) to convert USB-to-serial to allow USB programming. It runs at the same speed – 16 MHz. All of the pins are broken out in a way that keeps the board shield-compatible. Because of these similarities, the Mega is a good option for Arduino beginners and experts alike.
If your Arduino project is hitting a wall because you don’t have enough I/O, or if you’re running out of program space, consider stepping up to the Mega.
Arduino Due: Arduino Harder
You thought the Mega was powerful? The Arduino Due is a revolutionary take on the Arduino platform. It sports an entirely different processor architecture – ARM instead of AVR. It’s a 32-bit processor, clocks in at 84 MHz, and has native USB support.
This thing sports many unique features that other boards don’t have. Stuff like:
- Two digital-to-analog converters (DACs), which allow the board to output true analog values (instead of PWM). This means you can play audio out it!
- USB on-the-go (OTG) capability allows the Due to act as both a USB device and a host. So you can hook up other USB devices – like flash drives, WiFi modules, or phones – to the Due.
- Direct Memory Access (DMA) allows the microcontroller to offload memory-access tasks, so it can perform other operations at the same time.
There are also some new things to watch out for. The Due’s processor – an ATSAM3X8E – can’t work at 5V, so the board only runs at 3.3V This means it may not be compatible with all shields.
The Due has some amazing functionality, but it’s also a more advanced board. It’s not recommended for beginners, but if you have a project that might take advantage of the Due’s unique characteristics, check it out!
The Teensy line is a collection of microcontrollers from PJRC, based around several different powerful ICs. There is an option to use a Teensy with Arduino IDE if you install the Teensyduino add-on.
The 8-bit Teensy++ 2.0 runs at 5V/16MHz and breaks out all of the I/O available on the AT90USB1286 to breadboard friendly 0.1" spaced headers. The development board has 127kB of flash memory available for programming. There 46 digital I/O pins available with 8 analog inputs and 9 PWM outputs.
To program, you would simply install the Teensyduino add-on for the Arduino IDE and upload via USB.
The 32-bit Teensy LC runs at 3.3V/48MHz (with the exception of pin 17 which can output 5V for addressable LED strips). This board also makes the I/O available to breadboard friendly 0.1' spaced headers. The development board has 62kB of flash memory available for programming. There are 27 I/O pins available with 13 analog inputs, and 10 PWM pins.
To program, you would simply install the Teensyduino add-on for the Arduino IDE and upload via USB.
The 32-bit Teensy LC runs at 3.3V/72MHz but the I/O pins are 5V tolerant. This board also makes the I/O available to breadboard friendly 0.1' spaced headers. The development board has 256kB of flash memory available for programming. There are 34 I/O pins available with 21 analog inputs, and 12 PWM pins.
To program, you would simply install the Teensyduino add-on for the Arduino IDE and upload via USB.
Arduino MKR Vidor 4000
The MKR Vidor 4000 is the first ever Arduino based on an FPGA chip with a SAMD21 microcontroller. It includes a WiFi, BLE, MIPI camera connector, micro HDMI, mini PCI express connector, I2C connector, LiPo Connector, and USB port. The board can perform high-speed digital audio and video processing.
The board operates at 3.3V and can be programmed with a USB cable.
Internet of Things!
SparkFun ESP8266 Thing
The ESP8266 Thing is a low cost microcontroller with built-in WiFi. By default, the board comes with a trace antenna but you could also connect an external antenna to the u.FL connector. The board breaks out the ESP8266 pins for development and includes a LiPo charge IC. Perfect for connecting your thing to the cloud. Best of all, there is an ESP8266 board add-on so that it can be used with the popular Arduino IDE.
While there are not as many I/O pins as the Arduino Uno (it has 11 I/O pins), it has a clock speed of 80MHz, 512kB of flash memory, and all pins can output a PWM at about 1kHz. You will need a 3.3V FTDI and cable to upload code to the board. Since the chip is 3.3V, a logic level converter is required to connect any device higher than the system voltage. The board does not come populated with headers.
SparkFun ESP8266 Thing Development Board
The ESP8266 Thing development board is basically the same as the original ESP8266 Thing. One difference is that there is no JST connector and LiPo charge circuit. Also, the development board comes populated with an FTDI to upload code and there is an option to include headers.
SparkFun Blynk Board (ESP8266)
Looking for an app with your ESP8266? The Blynk board was designed for mobile phones and includes the popular ESP8266. With the Blynk app, you can start building projects with the graphical interface by dragging and dropping widgets to control or monitor your thing!
While the board was built for the Blynk app, the default firmware can be modified in the Arduino IDE. The board includes built-in trace antenna, FTDI, an addressable WS2812 RGB LED, Si7021 temperature and humidity sensor, and an analog-to-digital converter. The board does not come populated with headers. However, there is an option to use connect using alligator clips or the polarized connectors.
There are innumerable Arduino-compatible boards out there which make use of the ATmega328. Many, like the Arduino Pros, require an FTDI Basic to receive code, but they add on extra hardware to make them unique. The Arduino Ethernet, where the Arduino Uno and an Ethernet Shield are smashed onto a single board, is a good example of this.
Pins 10, 11, 12 and 13 are reserved for interfacing with the Ethernet module and should not be used otherwise. This reduces the number of available pins to 9, with 4 available as PWM outputs. Operating voltage is 5V; recommended input voltage range is 7-12V. There’s also an on-board microSD card reader for extra storage space!
Arduino Industrial 101
The Arduino Industrial 101 is essentially a stripped down version of the Arduino Yún with an even smaller footprint than both the Yún and the Uno R3. It has an ATmega32u4 microcontroller integrated into the baseboard and the Atheros AR9331 microprocessor supports the LininoOS embedded Linux operating system. With almost half the board taken up by a module sporting a U.FL connector, not only does this board run Linux but it also operates over Wi-Fi!
There are 3 GPIOs (2 of which can be used as PWM Outputs), 4 Analog Inputs, 1 Ethernet signal on pin headers (no standard ethernet port!) and a built-in DC/DC converter. While the ATmega32u4 operates at 5V, the AR9331 and associated pins that are broken out operate at 3.3V. An on-board regulator provides the 3.3VDC supply for the AR9331 but be mindful of your connections. It is recommended to power the board via the micro-USB connection with 5VDC.
It has 16MB of flash memory which comes preloaded with the Linino OS; which allows you real-world connectivity to Linux hosted applications. By making a local connection and pointing your browser at the Industrial 101’s configuration panel (default 192.168.240.1), you can choose your Wi-Fi network and then use PuTTY or terminal to access the Linino OS command line.
You can upload your code either online or offline. With a built in CDC, no FTDI breakout is required for uploading code. This board does not come pre-populated with its headers so you’ll need to do some soldering but it is absolutely worth it for your IoT projects!
Resources and Going Further
Have you picked the perfect Arduino for your project? Looking for more Arduino tutorials? Check these out:
Installing Arduino IDE
Data Types in Arduino
Or try looking at some of these resources.