DEV Community

Cover image for Explain the differences and use cases for a Raspberry Pi vs Arduino like I'm five (but smart)
Rick
Rick

Posted on

Explain the differences and use cases for a Raspberry Pi vs Arduino like I'm five (but smart)

I just got Sparkfun's Raspberry Pi 3 starter kit and some extra fundamental components and one fun component (a speaker). I used to do some DIY electronics stuff, but I didn't understand capacitance at the time (to be fair, neither did my high school teacher) or diodes.

Now I'm obsessed with smart home IoT / home (and everything else) automation and I finally decided to dip my toes in hardware so I can make my own devices. I'm sure there are a bunch of fun sensors and components on the 3 big merchants' websites, so I plan to try a lot more DIY electronics. So, I realized what is an important question if I plan to keep getting into this hobby:

Main Question!

What is the difference between Raspberry Pi and Arduino? Both in terms of technical details as well as use cases or what the community focuses on.

Bonus Questions

Bonus 1

What about the "AVR" and "ATMega" stuff I vaguely remember from DIY forums? I kind of get the sense that there is a hierarchy going from high level to low level, pi > arduino > AVR/Atmega.

Bonus 2

What is the difference between Particle/Blynk/ControlEverything and what are their competitors? (i.e. Particle vs Hologram is one of the few "competitors" I could find, as I don't know what Particle is - a protocol, a framework, ...?

Bonus 3

What's the direction to head in if I'm interested in building smart home / automation projects that I would like to connect with Alexa, Siri / iOS / iPhone, macOS, Google Cast Smart TV, Philips Hue, IFTTT/Stringify/Workflow etc, Wemo outlet switch, HomeKit/HomePod (soon), Android tablets, the Smartthings Hub I'm looking at buying, NFC/RFID technology, APIs and messaging queues, other DIY projects I'll make and other IoT consumer devices or "Hub" devices?

Bonus 4

Is there some Arduino-like board that will let me code in raw MIPS assembly? It would be a fun throwback to school.

Background info: I'm a software engineer, primary full-stack but also love FP and Haskell and compilers. I can write Python/Node.js/Lua/Processing/scripts whatever that these projects would require, and know HTTP and RabbitMQ and learning gRPC. So although I'm asking about higher level abstractions, much of the automation I do on my heavily customized mac and smart home setup are node scripts running on a vps (for now).

Top comments (7)

Collapse
 
conectionist profile image
conectionist • Edited

A Raspberry Pi is a computer. It's just like your PC/laptop/Mac at home, but smaller and not as powerful (less RAM, weaker processor etc.).
You can install an Operating System on it (just like on your PC/laptop/Mac) but you have fewer options. These are few (modified) flavours of Linux and something that looks like Windows.
You can also install software on it (just like you would on a regular PC with Linux) but you don't have as many options.
You can use it to:

  • browse the web (check your Facebook account, watch YouTube videos etc.),
  • listen to music
  • watch movies
  • play games
  • code (if you're a programmer)
  • and many other things that you can do on a regular computer



Arduino is a microcontroller. It's a programmable board.
It doesn't have an Operating System on it. It has something similar to an OS but it's not the Windows/Linux/MacOs kind. It's something much more basic.
You can't install software on it. You can only write code on you computer and then transfer it to the Arduino board (i.e. hence the name programmable board).
You can attach leds, sensors, buttons and all sorts of stuff to the Arduino board via wires.

Bonus 3

It depends on the project, really. There's nothing stopping you from using both.
Let me give you an example.
At home, I have a a video projector that I use to watch movies.
I've connected it to a Raspberry Pi that has OpenElec on it (A media center OS, based on Linux. you can look it up).
I couldn't use an Arduino for that.
What I can use an Arduino for is the following:
I want to create a sort of theater effect at home when I watch movies.
That is, with the press of a button on my phone, I want to:

  1. start the raspberry pi with OpenElec
  2. dim the lights (after I get programmable light bulbs)
  3. turn on the video projector

Number 3 is where the Arduino comes in. By attaching a IR (Infra Red) capturing sensor, I was able to decode the signal sent by the video projector's remote control and then reproduce it from the Arduino by using in IR sensor.

In theory, I could do this with the Raspberry Pi, but it's easier with the Arduino, because that's basically what it's for.
Raspberry Pi's are usually used when in situations where you could use a normal computer, but you don't need so much processing power (and you want it to occupy less space)

Bonus 4

I'm not 100% sure, but AFAIK you can only use the Arduino language to program Arduino boards.
There might be code converters, but the odds are you'd be asking for trouble by going down that road.
I'd recommend learning Arduino, though. If you know C/C++, it's about 90% similar.
Ultimately, it's your decision.
Hope this helps. :)

Collapse
 
nrobinson2000 profile image
Nathan Robinson • Edited

Nobody has answered Bonus 2 yet, so I'll give it a go.

Particle

Particle is an IoT ecosystem that includes several development boards and Particle's cloud servers.

Their most popular board is the Photon, which includes a Broadcom chip to connect Particle's cloud using Wi-Fi. Another board is the Electron, which is available in 2G or 3G models and allows projects to connect to Particle's servers using cellular.

I have done extensive research with the Photon, created an offline utility for it, and currently do paid work with it.

Particle has also created industrial versions of their Wi-Fi and cellular boards to be used in manufacturing and finished products.

Particle provides many services for using their products, most notably a browser-based IDE for uploading firmware over-the-air, and their product management console.

Because of Particle's servers, it is very easy to integrate it with other services and technologies. (Devices can be interfaced with using Particle's REST API, which is really useful.)

Also, Particle has the best documentation I've ever seen, and it has one of the most active, helpful developer communities I've ever seen.

Particle even works on Raspberry Pi! (There are also rumors that they will create an ESP32 based board.)

I use the Photon a lot in my High School Coding Club, and what always wows people is when I show them how little boilerplate there is and how quickly one can get it up and running with IFTTT.

Blynk

Blynk is a library for many development boards like Particle, ESP8266, Arduino, etc, that allows the board to be controlled using the Blynk app available for iOS and Android.

Control Everything

Control Everything is a company that sells many add-ons (shields) for many development boards. many of their shields are designed with relays in order to, you guessed it, control everything.

Hologram

Hologram is a cellular platform for IoT that is broader than Particle. I presume it is cheaper at scale than Particle, but other than that, I struggle to find a use case.

Collapse
 
nektro profile image
Meghan (she/her) • Edited

I don't know the answers to all your questions, but I'll try my best.

Main

  • The Raspberry Pi (3) is a full scale 64 bit micro computer with the 1.2 GHz processor, custom Linux distro based on Debian, on board Wifi, Bluetooth, HDMI out, as well as the ability to use GPIO and extension boards
  • The Arduino is simply a microcontroller motherboard with a max 48 MHz processor and can be programmed but can only run that one program at once.

Bonus 1

Bonus 3

  • While most of my experience has come from playing around with the Pi, from what I was able to gather it seems that the Arduino is a better choice for IoT or DIY, depending on how advanced you want the actions to be

Bonus 4

Collapse
 
mexchip profile image
JosΓ© Jorge • Edited

An Arduino is kind of a microcontroller motherboard. A microcontroller is a simple computer that can (generally) run one program at a time and very simple to use. A microcontroller is a single chip that contains a CPU, memory and programmable input/output peripherals. Arduino Uno is based on an 8-bit AVR microcontroller. Other Arduino boards use different microcontrollers, some of them a lot more powerful than the one used in the Arduino Uno.

A Raspberry Pi is a low power and small size full computer. It is a general purpose computer. A Raspberry Pi is based on a 32-bit microprocessor (Raspberry Pi 1 and original Raspberry Pi 2) or 64-bit microprocessor (Raspberry Pi 3 and more recent Raspberry Pi 2), it can run a full size operative system (such as Linux), and by doing so it can run multiple programs at a time. By the way, the microprocessors used on the Raspberry Pi boards are based on the ARM architecture.

Bonus 1
AVR is a family of 8-bit microcontrollers developed by Atmel (now owned by Microchip). ATmega is one family of AVR microcontrollers. For example, the Arduino Uno uses an ATmega328P microcontroller.

Bonus 3
I don't get your "direction" question. Are you trying to choose between a using an Arduino or a Raspberry Pi for your projects? If so, you should try several projects with both, eventually you'll be able to see the best one for every project. Sometimes an Arduino, sometimes a Raspberry Pi, sometimes both.

Bonus 4
You could try the chipKIT boards: chipkit.net/wiki/index.php?title=B.... These are Arduino-like boards based on PIC32 microcontrollers from Microchip, these microcontrollers use a MIPS32 processor (en.wikipedia.org/wiki/PIC_microcon...). So, even if they're mostly programmed in C (or C++), you can also program them in assembly (e. g. johnloomis.org/microchip/pic32/res...)

Collapse
 
rickssss profile image
Rick • Edited

If I'm better off splitting this up into like 5 posts let me know hahahaha.
If anyone has any recommendations about kits/software/stacks or components / consumer-ready devices and hubs with SDKs/APis that I should check out I'm totally open! I'm also planning to learn Pure Data and about ADSR envelopes and sound synthesis / programming. I want to get or make some MIDI devices and have them interact in cool ways, maybe maybe some type of declarative or functional musical programming language / DSL and compiler too.

Collapse
 
nrobinson2000 profile image
Nathan Robinson • Edited

As I've mentioned in my other reply, you should definitely give Particle a try. Adafruit has faster shipping and the same prices.

Collapse
 
subbramanil profile image
Subbu Lakshmanan

There's enough and elaborative answers for most of your questions. So I would put my 2 cent on answering your main question in terms of their usage.

If the purpose is to do one thing, which is simple and repetitive, use Arduino. Write the code, push it to it, and it will execute the code, do the designed function.

As the previous comments explained, RaspberryPI is more like a PC and you can do a lot more with it. And it supports several platforms.

The way I have been using them (RaspberryPI, Arduino and other platforms) is,

  1. Use RaspberryPI to design solution to a problem. Understand the problem, identify tools required(programming language, IoT services, sensors and other hardwares required)

  2. Find a cheaper IoT device to perform the same functionality within constraints and use it to solve the problem.