Want to make a web connected doodad that flashes an LED? You could probably use a Raspberry Pi! After all, when you only have a hammer in your toolkit, it’s easy to to view everything as a nail. But you shouldn’t, and here’s why.
Don’t Spend $40 to Flash an LED Over the Web
All too often we see relatively simple Internet of Things (IoT) electronics projects being made with a Raspberry Pi: a $35 mini computer that needs an SD card (another $5) and possibly a Wi-Fi dongle. In reality, you don’t need the power of a Raspberry Pi to handle simple embedded applications like an IoT sensor or web-connected LED.
The $5 NodeMCU board, which has built-in Wi-Fi, onboard flash storage, and is equally as easy to program as a Pi, could handle the job elegantly. It includes a web server library if you really need one, or you can use the slimmed down MQTT-based protocol.
My point is, don’t automatically turn to a Raspberry Pi just because your thingamajig project needs web connectivity.
In some cases, you may actually find your electronics project is limited by the sheer overhead of other things that have to run on a Pi. For example, Neopixels — individually controllable LEDs strings — require notoriously precise signal timings. Quadcopter drones are another. Changes in motor speed must be made in fractions of a second, or they’ll just come crashing down.
A Raspberry Pi has to run a full operating system — which includes things like processor threading, user handling, and file services — so it can struggle to push bits out at the speeds required. This means it may occasionally pause top-level user applications while it deals with more pressing low level processes. A development board like an Arduino might be more feature limited (there’s no GUI, for instance), but it gives much lower level, faster access to the hardware, and only runs the exact code you tell it to.
In short, it’s not that a Raspberry Pi can’t do electronics projects, but it might be overkill in some cases and can cause complications.
It’s Not Powerful Enough for Desktop Use
Using the Pi as a full desktop — even the latest model 3 — is an incredibly frustrating experience. To start with, it runs Linux, which has a steep learning curve associated with it and isn’t suited to beginners. Linux enthusiasts perpetually claim that this year is the year that Linux will finally make headway into the desktop for the everyday user — but it never has and never will.
Even with the performance boost that the latest model brought, you’ll still struggle through common tasks. That ever-so-slight delay between hitting a key and having it appear on screen will eventually wear you down. Good luck getting more than one web page to open at a time, or even a single tab to scroll smoothly.
Don’t like the substandard default browser and want to install Google Chrome? That’s a minefield. You can’t just download Chrome — you need to install Chromium, the open source version… but package names have changed, so many instructions are out of date… and the version available on the Raspbian repository is old anyway, so you should probably just compile it yourself. Even then, some popular web services like Netflix still don’t support the platform at all.
Welcome to the wonderful world of desktop Linux, where nothing is ever easy.
If you were thinking the Raspberry Pi looks like a great way to introduce your gran to modern computing, please stop. You really don’t want her first computing experience to be that horrid. Yes, of course it can handle a little Word Processing in Open Office, but you can also do that on literally any web browser through Google Docs nowadays. (Ironically, Google Docs is one of those things that will struggle on the Pi.)
A budget Android tablet is likely to be a more satisfying investment for your granny, or even a used laptop you could get off eBay for $20 (and if you insist, you could still put Linux on it).
It’s Dangerously Insecure (In the Wrong Hands)
It’s very easy to throw a web server onto the Pi, and then open your router up to make it accessible from all over the world. Free website hosting, yay!
But the moment you do that, your machine will be inundated with automated hacking bots from every corner of the globe, systematically attempting to penetrate the device through known weaknesses in old software. This is true of every website regardless of where it’s hosted, but it’s particularly problematic for the Raspberry Pi, which tends to be set up by hobbyists who aren’t intimately familiar with best security practices.
Even worse: the Pi typically runs on a user’s home network. Once compromised, this bypasses any other security the internet router might provide, giving the hacker complete freedom to chisel away at the rest of your networked devices.
To mitigate this problem: Never open your Pi as a public facing server. If you need to access the Pi from outside your network, use a secure third party gateway (such as controlling your OpenHAB system using My.OpenHAB free cloud service). If you absolutely must open up a server to the world, be sure to read up on how to harden your security first.
Some bold individuals have even tried to monetize the Pi into real world security devices. The nomx personal email server ($199) claimed to be “the world’s most secure email server,”” yet an investigation by BBC Click found it was actually just a Raspberry Pi, running dangerously out of date software, and hard-coded with a master backdoor password of “death”.
The SD Card Will Wear Out
The single biggest issue with the Raspberry Pi is that it runs the entire operating system from a micro-SD card (which is one of the reasons it’s so slow). This will eventually wear out, but the speed at which it wears out will vary according to the quality of the card. Proponents of using an SD card will argue that it’s easy to backup and restore whole card images, but that’s rarely the case in the real world.
While it’s easy enough to download and burn a ready-made image, or to make a complete backup of your current SD card, restoring it requires a card at least as big as the original. A couple of bad sectors on the new card mean it will refuse to copy over.
There is a solution: You can actually enable a special USB boot mode on the Pi, but it’s a pretty complicated procedure that even I couldn’t get to work.
Dongles, Dongles Everywhere
The latest Raspberry Pi model 3 actually has Wi-Fi built in, but it’s quite unreliable. The $5 Raspberry Pi Zero is even worse.
Depending on your project, you’ll likely need an adaptor to make the mini-USB into a full size USB port, a USB hub so you can plug in more than one device (preferably plugged into a wall socket to provide extra power), then a USB Wi-Fi or Ethernet adaptor, and some GPIO headers to solder in. If you want to plug in a monitor, you’ll also need a micro-HDMI to regular HDMI adaptor.
Oh, and you better grab a case, too. It all adds to the total cost, and once you’ve spent all that, you might as well buy something more suited to the task.
A Mini-PC or Tablet Would Probably Be Better
Carefully consider your intended audience and purpose. A Raspberry Pi may seem cost effective, but once you start adding in all those extras, you can easily approach $100. For twice the price, you could buy a mini-PC that would run Windows 10. Real Windows 10 I mean, not the absurdly restricted Windows 10 IoT, which bears no earthly resemblance to Windows 10 other than in name, yet to this day still gets quoted to us when we say Raspberry Pi doesn’t run Windows. That’s. Not. Windows.
With a mini PC or tablet, you would get better compatibility with a wider range of apps (not the limited selection of poorly made Linux software), and almost certainly better hardware.
Yes, it’s very technically impressive that you can make a low-powered netbook with a Pi: but the piTop is $270 for what is really quite a poor laptop by any standards. The Kano Pi computer is $280 for a device they claim is a “build it yourself” computer. I wouldn’t say putting the bare Raspberry Pi board into a case and plugging some cables is “building your own PC” by any stretch of the imagination.
There are certainly some amazing educational uses for a Raspberry Pi, but learning what components go into making a PC is not one of them. The Raspberry Pi is a system-on-a-chip, meaning you can’t even point to individual components like the CPU, memory, and graphics card — because they’re all the same thing.
In my day, we learned what a PC was made of by stripping one down and rebuilding it!
So When Should You Use a Raspberry Pi?
I’ve spent most of this article telling you why you really shouldn’t use a Raspberry Pi for your next project, but here’s a couple of cases where it definitely makes sense.
Multiple combined use-cases. Need a Pi-Hole server, running alongside a web server, with some home automation software? Raspberry Pi could do them all. You may need to do additional configuration to get everything playing nicely, but you don’t need a single Raspberry Pi for every separate project — you can run them all alongside each other. Obviously, we don’t recommend running things you’ll frequently be tweaking with something you need to be rock solid, like a home automation platform or your internet filter. In that case, keep one for experimentation and another to simply run the smart house.
Low-power always-on servers. One of the great things about a Raspberry Pi is that it can run a full server system and suck down very little energy — much less than even the most power efficient small PCs. I don’t recommend a Pi for performance sensitive tasks like a networked file server (even if it is technically possible), but for tasks where performance isn’t such a concern, you can leave a Pi running and add just pennies to your monthly power bill.
Your project needs a lot of software programming libraries. One of the great things about programming in Python is that lots of people do it. Whatever your end goal is, someone has probably already done it — and made the process easier. If your project is going to interact with other services and devices, you can probably find a Python library for it. Facial recognition, voice synthesis, or Twitter bots? Not a problem with Python on a Pi. Of course, Python isn’t the only language you can program with on Pi, but it’s the most popular. We’re big fans of NodeJS, too.
Combining the Pi with a microcontroller. With the power of a Pi and the simplicity of a microcontroller, you can go a long way: like this DIY Siri-controlled light strip. The brains run on a Raspberry Pi, with NodeJS presenting itself as a fake Siri device, which then relays the commands to a remote NodeMCU with a lightstrip. You can expand with more lights for the fraction of the cost of another Pi.
Don’t get me wrong, I’m not hating on the Pi. I have four Raspberry Pi’s at home and another on the way. One runs some critical parts of my smart home, in that kind of “six-month uptime” reliable way that I could never hope to achieve with a Windows machine. But it’s not the solution to every problem.