Arduino vs PCDuino vs Raspberry Pi
Please note: this article was semi-automatically translated from Dutch, translation errors may occur, links will lead to Dutch websites, you are welcome to comment in English.
Nowadays the electronics enthusiast has a lot of development platforms to choose from. From microcontrollers to complete "Systems-on-a-chip" (SoC) computers. This article describes my own search for the right development platform for the right job. When do you pick an Arduino and when do you use the Raspberry Pi?
Arduino vs Genuino
You may already have noticed it visiting arduino.cc, it currently shows two logo's: Genuino and Arduino. Unfortunately this is the result from on ongoing war in the Arduino-community. Since no-one, including myself, knows what exactly happened, I'm trying to only describe what has come out officially.
The original Arduino-team, guided by Massimo Banzi, owns the Arduino trademark in the US, but not in the rest of the world. Outside of the USA the 'original' Arduino boards are now manufactured and sold under license by the name Genuino (genuine Arduino). The website arduino.cc is the only official Arduino website.
The Italian manufacturing firm that was before solely responsible for the world-wide production of the Arduino boards has registered the trademark Arduino in the whole world except the USA. The Arduino boards that you are currently buying in Europe are manufactured by the 'original' manufacturer but no longer supported by het 'original' Arduino-team. Stickers on these Arduino boards will point you to arduino.ORG, the website of the Italian manufacturer.
F.l.t.r. Arduino Nano, Arduino Duemilanove (upgraded to an Uno chip), Funduino Mego 2560, Raspberry Pi 2 model B and PCDuino 1
The Arduino Uno is the most well-known Arduino. Preceded by the Arduino Diecimila and Arduino Duemilanove the Uno delivered the great success. The Arduino Uno uses an Atmega328 microcontroller and is in almost all my projects used as the main component. With it's 14 IO-pins of which 6 are able to use hardware PWM (Pulse Width Modulation), almost every project can be made intelligent or smart. Next to that you can use 32 KB of flash memory of which 0,5 KB is in use by the boatloader, and 2 KB of RAM (Random Access Memory).
Sometimes the Arduino Uno is just physically to big, for instance when making 'wearables'. Then the Arduino Nano comes to the rescue. It is one of the smallest Arduino Boards with the full spec's of the Uno. It has the same processor, but in a smaller form-factor, and has all the same in- and outputs on a footpint of only 18mm by 45mm and weights about 5 gram.
Arduino Mega 2560
When the Uno hasn't have enough inputs and outputs for your project, or your code is simply to large for the 32 KB of flash memory then you're in the need of an Arduino Mega 2560! With a whopping 54 in- and outputs of which 15 support hardware PWM and 256 KB of flash memory (that's 8 times as much as the Uno has!) you can really make some cool stuff. The 8 KB of RAM also helps a lot when you are working with large variables or strings. My home automation main unit uses an Arduino Mega 2560 because of it's large code and the use of strings for the web-interface and LCD screen.
Raspberry Pi (2B)
The Raspberry Pi is probably even more famous than the Arduino. During the launch of the Raspberry Pi in 2012 both websites of the suppliers went offline due to the massive interest!
The Raspberry Pi is way more powerful than an Arduino because the Arduino is a microcontroller, and the Pi is a SoC, a system-on-a-chip. SoC can be seen as a complete computer on a single board. The Raspberry Pi 2B for instance uses a 900 MHz quad-core ARM Cortex A7 processor with 1 GB RAM, compare that to the figures of the Arduino Uno... The Raspberry Pi runs on a light Linux distribution called Raspbian, but also Debian or other Operating Systems are possible. Through it's HDMI port you can easily connect it to a monitor or TV-screen.
The great thing about the Raspberry is, just as with Arduino, that there is a massive (online) community where you can go with all your questions. In fact, almost every challenge has already been accepted and won by someone, so the changes are high that there is a script or plugin for that.
The Raspberry Pi features 40 IO-pins to connect sensors and actuators. A little warning: these pins can handle only 3,3 Volts, that's a little different than the 5 Volts we are used to from the Arduino. Controlling these GPIO pins is mostly done in C++ or Python. Python is a very popular interpreted language for Raspberry Pi. Interpreted means that your code doesn't have to be compiled before running, you can edit it almost on the fly.
The hard-drive of the Pi consists of a micro-SD kaart (which can have a pre-installed version of Noobs on it), so make sure to buy one, otherwise your Pi is useless. Other connectivity options on the Raspberry Pi 2 are it's Ethernet port and 4 USB-ports to connect keyboard, mouse and other peripherals.
As the name PCDuino already suggests is het PCDuino a combination of a PC and an Arduino. You can also see it as a combination of a Rasberry Pi and an Arduino since it runs On Linux. The PCDuino 1 has a 1 GHz quad-core ARM Cortex A8 processor with 1 GB of RAM and 2 GB onboard flash memory as a hard-drive. So for the PCDUino you don't need an additional micro-SD card to start, but you can use it to create more memory if needed. The HDMI connector can be used to connect a monitor or TV and it has standard 100 Mnps Ethernet on board. It runs on a light Linux distro called Linino, based on Ubuntu.
The PCDuino 1 promises full Arduino-compatability but doesn't deliver. For instance the IO-pins are all on the same side of the PCB, so you can't use shields. Next to that there is no real Atmega microcontroller onboard so all the in- and output actions are software emulated with some nasty consequences.
Maybe you are, just like me, assuming that you can easily transfer your Arduino code to PCDuino? Well, that's not possible because PCDuino doesn't support Arduino libraries. All libraries need to be rewritten, and communication with protocols as I2C and SPI is also not possible because of the emulated pins.
I've used my PCDuino succesfully in projects as a XBMC/Kodi mediacenter, and as a homemade UPNP/DLNA/streaming-speaker, all applications that don't require pin in- and outputs.
Are you looking for a better integration of Arduino and Linux? Take a look at the Arduino Yun. I have used it a work and it was a way more smooth experience than I had with the PCDuino. The Arduino Yun has buit-in WiFi and runs on a custom Open-WRT firmware.
When to choose what platform?
Now lets get back to the main question of this article: when do you use which development platform? I prefer the Arduino platform for most tasks: it's cheap, realtime and easy to use. The Raspberry Pi enters the stage when you have more complex tasks to be handled, the Pi can do almost anything, but for a lot of projects it's just overkill. In the table below I give my recommendations for a lot of popular projects: ✓ = yes, X = no, ~ = must be possible but there are better ways.
|What do you want to do?||Arduino||Raspberry Pi|
|Connect analog sensors like a potentiometer, LDR or NTC||✓||X|
|Connect digital sensors like DHT moisture-sensors, BMP air-pressuresensors, or DS18B20 sensors||✓||~ (probably timing-issues)|
|Controlling (RGB) LED (strips)||✓||~|
|Using a graphic or alphanumeric LCD display||✓||~|
|Control an LED-matrix||✓||~ (probably timing-issues)|
|Play short sounds, beeps and notifications||✓||~|
|Play music like mp3, flac or streaming media like Spotify||X||✓|
|Use a Full-HD (HDMI) monitor||X||✓|
|Build an XBMC/Kodi mediacenter||X||✓|
|Build a streaming speaker like Sonos/Heos||X||✓|
‘Real’ Arduino’s vs Arduino-clones
A final word about real Arduino's and (Chinese) Arduino clones.
F.l.t.r. original Arduino Duemilanove, Funduino Uno and XDRDuino Uno
My original Duemilanove and original Ethernetshield are running problem-free for years now. Next to the original ones a also have a lot of clones, because they are way cheaper of course. I've used Funduino’s and XDRDuino’s from DX and Aliexpress without any serious issues.
Or course the build quality of the fake Arduino's is way less than that of an original EU or USA model, components may be misaligned and soldering quality is very low. But I've had about 6 Arduino clones and only 1 of them died mysteriously so in the end I'm quite happy with them.
Which platform do you use most often? And do you buy original hardware or cheap copies? Let us know in the comments.