Home Products Services Articles Training ZS1GL Contact


The article below is a very unbiased and informative collection of comments and was gathered from various sites on the Internet.

Arduino vs Raspberry Pi

I asked Limor Fried, the founder of Adafruit, a DIY electronics store that offers parts and kits for both Arduino and Pi projects, about her expert opinion on their differences. An MIT educated engineer whose mission in life is to teach electronics to people of all skill levels, Fried knows both platforms better than most.

"Arduino does have a 'real-time' and 'analog' capability that the Pi does not: This flexibility allows it to work with just about any kind of sensor or chips," Fried said. "The Pi is not as flexible; for example, reading analog sensors requires extra hardware assistance. There are also thousands of tutorials on hooking an Arduino into just about every kind of part. On the other hand, the Pi benefits from decades of Linux software, so they're both great choices."

The Arduino IDE is significantly easier to use than Linux. For example, if you wanted to write a program to blink an LED with Raspberry Pi, you'd need to install an operating system and some code libraries-and that's just to start. On Arduino, you can get an LED light to blink in just eight lines of code. Since Arduino isn't designed to run an OS or a lot of software, you can just plug it in and get started.

Raspberry Pi can multitask processes-it can run multiple programs in the background while activated. For example, I have a Raspberry Pi that is serving as both a print server and a VPN server at the same time.

On the other hand, you can leave an Arduino plugged in as it conducts a single process for a long time, and just unplug it when you're not using it. This is why Fried would recommend the Arduino for beginners before she would the Pi:

"The Arduino is simpler, harder to 'break' or 'damage' and has much more learning resources at this time for beginners," Fried said. "With the Pi you have to learn some Linux as well as programming-such as Python. The Arduino works with any computer and can run off of a battery. You can also turn it on and off safely at any time. The Pi setup can be damaged by unplugging it without a proper shutdown."

While the Raspberry Pi shines in software application, the Arduino makes hardware projects very simple. It's simply a matter of figuring out what you want to do.

Many people ask me if they should get an Arduino or a Raspberry Pi and the answer is quite simple: if you are a beginner, you should get an Arduino first and THEN get a Raspberry Pi. If not, it'll be an expensive and probably frustrating learning experience for most.

An Arduino is built as a learning platform. It has a very well thought out layout. It is very solid, so connecting incorrectly will very seldom destroy the hardware. Even with a full short circuit, the Arduino will just turn off and take the USB connection with it. Once you remove the short and replug the USB, the Arduino will happily keep running it's program.

With a Raspberry Pi it's quite different. The layout of the Raspberry Pi is crowded and the connector for hardware (the GPIO port) has a "male" connector. This means that the pins are not protected in any way, so if you accidentally short the wrong two pins you will kill the Pi. In most cases, you will not kill the processor itself, but you will most likely destroy the GPIO ports. There is no protection and no safety net.

A Raspberry Pi is also not made to be running 24 hrs a day, all year and it's not very suited for permanent installations. Arduino's on the other hand are pretty much made for this. They will do their job day and night for years without requiring any updates. A RasPi can't really be modified or shrunk in any way. An Arduino on the other hand is very easy to shrink down to a tiny board - perfect for permanent installations.

When you set out to learn to control hardware such as LED strips, sensors and robots, your life will be much easier with an Arduino. The Raspberry Pi can only supply a very limited amount of power, so even a simple task such as lighting a LED can be difficult if you don't have the right hardware.

The Arduino can use both 3.3V and 5V devices, but the Pi is a pure 3.3V device. This means that if you connect a 5V device to your Pi, you will probably damage it. I have however heard of many that are successfully using 5V devices with a Raspberry. YMMV but be aware that many things that you may want to connect to your Pi will require 5V. You can solve this by using a Level Shifter that changes the 5V signals to 3.3V, but this introduces complexity and cost.

Power is another issue. A Raspberry Pi requires a nice and steady power source. It is possible to power it with a battery, but it's nothing a beginner should attempt. The Arduino on the other hand has a battery connector that happily accept anything from 4.5V up to 12V. Since the Arduino regulates the power to what it needs, you can even use high power LIPO batteries.

The Arduino comes supplied with an IDE and libraries which have been designed for ease of use and to support "non-programmers", and within minutes of installing these you can be blinking LEDs and reading temperature sensors. The Raspberry Pi doesn't come with an official IDE but the "educational language of choice" is Python and libraries exist to enable much of what is possible from within the Arduino IDE. Alternatively C/C++ or just about any other language could be used and there are even libraries which attempt to recreate the Arduino system.

Arduino software is written in a language similar to C++, this is compiled on a PC running the IDE and then downloaded over USB, with debugging made possible via print statements that direct their output to the IDE. Whereas the Raspberry Pi runs Linux and can host its own compilers etc. and development can be carried out using a directly attached monitor, keyboard and mouse, or via a remote SSH or VNC session. In addition to which more advanced debugging tools are available and with interpreted languages such as Python commands can be entered interactively.

Thanks to Linux the Raspberry Pi benefits from a far more flexible and powerful development environment. However, the Linux kernel alone comprises millions of lines of code and for applications where simplicity is key the operating system-less Arduino holds certain appeal.

Arduino is a prototyping platform, hardware designs are open source, and the ATmega micro-controllers used can be secured in low volumes and are available in packages that are easy to work with. In contrast the Raspberry Pi is, at the time of writing, not an open source hardware design, its system-on-chip is only available in high volumes and it employs package-on-package technology which requires specialist tooling.

The Raspberry Pi was designed from the outset as an aid to teaching computer science and this is where it really shines, and it can be used with a great many languages and frameworks and to learn everything from simple scripting up to network and graphics programming. The Arduino is just as approachable a platform and while much more constrained in terms of supported languages and applications, it provides a gentle introduction to embedded systems and "bare metal" development.