There’s no doubt the Raspberry Pi is extremely popular, and has been in the media far more than the lowly Arduino. But many users, forums and reddit seem to think that the Raspberry Pi is going to make the Arduino obsolete – after all, why would you spend £30 on an Arduino when you could spend £30 on a Raspberry Pi?
The Raspberry Pi is amazing – it’s a powerful ARM board for not very much. It has design flaws – the power by USB being the main one – but it has found a place, mainly as a media server for geeks.
However, for those looking for an Arduino replacement, it has many downsides:
1. The GPIO pins are only 3.3V tolerant. This locks out vast numbers of 5V add-on boards and peripherals that can be used by the Arduino.
2. The GPIO pins can only sink/source very low levels of current. So you need to add drivers to get decent levels of current. The ATmega328P has much stronger drive levels.
3. The whole board is less tolerant of overload of mistreatment. The ATmega328P is actually a very hardy chip.
4. The hardware peripherals built-in are lacking – timers, ADCs, PWM, pin change interrupts and so on. It may have some of these, but if it does, they aren’t widely documented.
5. If I want to use the ATmega328P in my own project, I can build a clone board for £5. I can’t built a Raspberry Pi, at all, and my tools, soldering and assembly skills are very good.
6. I can run an Arduino-like board for months, even years, on a single AA battery with aggressive power saving. This is just not possible with a Raspberry Pi.
7. Linux is not a real-time OS (RTOS). This may not mean much to a lot of people, but interfacing to the real world can be a real pain when IO and interrupts are not serviced predictably.
mrtimuk
February 7, 2013 at 8:50pmIt’s true, the Arduino makes IO programming for PWM, UART, etc really easy, and having on board ADCs is awesome.
The Pi can do some things: it has a single PWM on GPIO 18, you can get logic interrupts with the latest Raspbian but it’s a pain. BUT it has a programmable clock which you can use to frequency-modulate a signal!
http://www.icrobotics.co.uk/wiki/index.php/Turning_the_Raspberry_Pi_Into_an_FM_Transmitter
I can’t think of ANY uses for a programmable FM transmitter.
Perhaps the most telling sign of the Arduino’s superior GPIO is that the GertBoard for the Pi actually uses an ATMega chip.
cybergibbons
February 7, 2013 at 9:11pmThe FM transmitter is a pretty interesting hack – I’d like to try it and see how many awful harmonics it has. I’m really not sure what the R-Pi is meant to be used for yet!
Clive Robinson
February 21, 2013 at 5:00pmIt’s also a game of “horses for courses”. The Broadcom CPU chip in the Raspberry Pi is designed as a lightweight Multimedia device (much of which you can’t play with) not as a control system. The Arduino is primarily designed to be used as a microcontroler.
If you are designing an industrial control system or a robot or many other systems you generaly have a central PC or Minicomputer system that does the overall functionality and then lay off specific tasks to microcontrolers that talk to the real world.
Think of one simple task such as controling the temprature of the water bath in a Sous Vide cooker, it requires minimal input but has to have a fast running series of loops. A microcontroler is ideal for the job a PC or minicomputer is not.
Likewise consider a disabled persons or robots hand with a force feedback system in the hand. Each individual finger needs to be seperatly controllable. Here you might use a PIC microcontroler for the individual servo control, a higher level microcontroler such as the Atmel to control the co-ordination of the fingers and a minicomputer to be able to give visual feedback for target aquisition and error feed back should the object being reached for move for some reason.
Then the one most obvious to many the electronics in a car, do you realy want the multimedia display and audio system to control the breaks instead of the ABS?
Probably not, the ABS is a very specific system that tends to be Hard RT and needs to be very responsive to the break pedal and signals coming back from the wheels and other sensors. The at best Soft RT response of a multimedia controler or even a normalish 0.01-0.1 second response of a multithredded premptive OS is fine for the behind the dashboard indicator display controler.
But for a real world non computer related example you tend to use helicopters and motorbikes for moving body parts for transplant around the country. They will fairly quickly get a small lightweight package from A to B. However you don’t use them for moving a house full of furniture, the number of round trips would in total far exceed the time required to load up drive and unload a large but slow lorry.
Normaly you would select the best tool for the job, however the very very low cost of SoC chips is such that inventory savings by reduced part count and bulk discount have moved the goal posts on what is “considered normal” these days. Likewise other resources like programers time/knowledge/cost and tool chain cost and code re-use can have considerable cost benifits even on quater million runs in FMCE.
So the whole subject of Arduino -v- Raspberry is a bit like the old joke about the couple on their honeymoon who are driving around and get lost in the country lanes and ask a local leaning on a gate how to get to their next destination. After some considered thought the local replies “You’ld be best off not starting from here”.
cybergibbons
February 21, 2013 at 5:08pmIndeed! Oddly the more appropriate choices are often discounted. There are many ARM boards not much more expensive than the Pi that are far more Arduino like.
not a linux lover
October 23, 2014 at 12:29amThe raspberry pi developers have a good BSP, but it works with Linux:
not deterministic at all, stopping suddenly if a network file system is down…
The Arduino developers have made a nice thing:
a reliable, open source BSP running with no operating system.
It is very good for real time control.