Many people don't know what the Raspberry Pi is. On their first encounter of the term, they are understandably mistaken for thinking the RPi is a fruit-based pastry. But the Raspberry Pi is so much more than an after dinner pudding, it's a ridiculously versatile single board mini-computer.
This page shows a little of the history of the RPi, it's potential uses, and projects I use it for personally.
The device itself is a credit-card sized board (there are variants of differing sizes) which contains everything needed to make it a programmable computing module. This includes a CPU, memory, USB sockets, HDMI video out (on most models), audio ouput, and a series of pins which can be used to control (or receive input from) external devices and equipment. Power is supplied via a micro-USB port, the standard charging port on all smartphones and tablets (except Apple, they like to make things difficult). The unit has no built-in operating system, preferring to store the OS on a removable SD or Micro-SD card (depending on model), but is always Linux based, due to it's open (and for the most part free) architecture. The beauty of having the OS stored on a removable memory card of course, is that you can switch it out for a different one, and have the RPi serve a completely different purpose, without having to reformat and reinstall everything. Genius.
In 2006, a group of enthusiasts led by Broadcom technical director (and all-round good guy) Eben Upton decided to create a super-cheap, versatile computer with the intention of promoting the teaching of basic computer science in schools, and began designing concepts to meet this criteria. In 2009 the group evolved into a charitable organisation called The Raspberry Pi Foundation. Computing in schools up until this point had largely focused on the use of software packages such as Word and Excel from Microsoft Office rather than how to actually code working programs. The UK, having once been at the forefront of the computing sciences, was concentrating less and less on this discipline, and soon became a follower rather than a leader on the world stage.
Foundation trustee Eben Upton had assembled a group of teachers, academics and computer enthusiasts to devise a computer that would allow school children to code and create, while not being prohibitively expensive or complicated. The Raspberry Pi was born, it's inspiration coming from Acorn's BBC Micro of 1981, the RPi's model A, model B and model B+ being references to the original models of the classic machine.
Initial versions of the RPi computer were mounted in a package the same size as a USB memory stick. It had a USB port on one end and an HDMI port on the other. Eventually, the design expanded to incorporate accessable IO ports and a camera module connector (amongst other interfaces). The Foundation's original goal was to offer two versions, priced at GBP16 and GBP20. This intention changed as they realised demand and intended use for the device varied hugely. They started accepting orders for the higher priced model B on 29 February 2012, the lower cost (and spec) model A on 4 February 2013, and the even lower cost GBP13 A+ on 10 November 2014.
The image to the right shows David Braben, co-founder of The Raspberry Pi Foundation and author of classic videogame, Elite, holding the original USB-sized RPi. The actions of this group have kickstarted interest in coding once more, not only through the youth of the UK, but kids and adults worldwide. They are the rock stars of the computing world.
There are varying models of the Raspberry Pi available, each with their own features and characteristics, but the underlying ethic remains throughout; be cheap and be versatile.
Raspberry Pi 1 Model A
The Model A is the lower-spec variant of the Raspberry Pi, with 256 MB of RAM, one USB port and no Ethernet port. This model is usually bought for embedded projects because it's missing a few ports and an Ethernet chip. A WiFi dongle is needed for networking.
Raspberry Pi 1 Model A+
The Model A+ replaced the original Model A in November 2014. Compared to the Model A it has more GPIO pins, the header growing to 40 pins, while retaining the same pinout for the first 26 pins as the Model A for backwards-compatibility. It also has a MicroSD slot. The old friction-fit SD card socket has been replaced with a much nicer push-push MicroSD version. By replacing linear regulators with switching ones the A+ has much reduced power consumption by between 0.5W and 1W. It also has much better audio, the audio circuit now incorporating a dedicated low-noise power supply. It has a smaller, neater form factor. By aligning the USB connector with the board edge, moving composite video onto the 3.5mm jack, and adding four squarely-placed mounting holes, the Model A+ is approximately 2cm shorter than the Model A. This model still requires a WiFi dongle to enable networking of any kind though.
Raspberry Pi 1 Model B
The Model B is the higher-spec variant of the original Raspberry Pi 1 (since superseded by Raspberry Pi 2 Model B), with 512 MB of RAM, two USB ports and at last, a 100mb Ethernet port.
Raspberry Pi 1 Model B+
The Model B+ is the final revision of the original Raspberry Pi. It replaced the Model B in July 2014 and was superseded by the Raspberry Pi 2 Model B in February 2015. Compared to the Model B it has more GPIO pins, 4 USB 2.0 ports (compared to 2 on the Model B), and better hotplug and overcurrent behaviour. There are also four squarely-placed mounting holes now.
Raspberry Pi 2 Model B
The Raspberry Pi 2 Model B is the second generation Raspberry Pi. It replaced the original Raspberry Pi 1 Model B+ in February 2015. Unlike the Raspberry Pi 1 it has a 900MHz quad-core ARM Cortex-A7 CPU and 1GB RAM which is quite a high spec for such a cheap device. In addition, it has 4 USB ports, 40 GPIO pins, full HDMI, an Ethernet port, a combined 3.5mm audio jack and composite video port, a camera interface (CSI), a display interface (DSI), a MicroSD slot and a VideoCore IV 3D graphics core.
Because it has an ARMv7 processor, it can run the full range of ARM GNU/Linux distributions as well as Microsoft Windows 10.
Raspberry Pi Compute Module
The Compute Module is a Raspberry Pi in a more flexible form factor, intended for industrial applications. It contains the guts of a Raspberry Pi (the BCM2835 processor and 512Mbyte of RAM) as well as a 4Gbyte eMMC Flash device (which is the equivalent of the SD card in the Pi). This is all integrated on to a small 67.6x30mm board which fits into a standard DDR2 SODIMM connector (the same type of connector as used for laptop memory). The Flash memory is connected directly to the processor on the board, but the remaining processor interfaces are available to the user via the connector pins.
The Compute Module is paired (for development purposes) with the Compute Module Developer Kit (CMDK) which is a prototyping IO Board, and is a simple, open-source breakout board that you can plug a Compute Module into. The board hosts 120 GPIO pins, an HDMI port, a USB port, two camera ports and two display ports.
At this point in time I have three RPi's; a Pi 1 Model B, a Pi 1 Model B+, and a Pi 2 Model B. They've been used for various projects, but they've settled down into dedicated roles now. I have a fourth project planned for when time allows, but that's for a future post.
RPi 1 Model B
I'm using this device as a printer/scanner server for my home network. It's tiny, completely silent, uses practically no electricity and best of all, the software needed to do this is completely free and open source.
If you're wondering what a printer/scanner server is, here's a quick rundown: Say you have a number of computers in the house (laptops, desktops, Windows machines, Apple Mac's, it doesn't matter), and you want to print documents from them, or scan photo's and documents into them, well it's not really practical to have a printer/scanner for each machine. That would take up a silly amount of space, not to mention the cost of it all. So the solution is to have a single printer/scanner all-in-one unit as a shared device on the network, with each machine able to use it as if it were plugged in directly.
Now, network printers are available as off-the-shelf units, although a decent one can be quite expensive, but why not just lay out twenty quid for an RPi and use the printer you already own? As an added bonus, it can be configured for Google Cloud Print, meaning you can print to your home printer from anywhere in the world, using pretty much any device - presuming you have a google account, and if you don't, why the hell not?
Here's a diagram of my layout at home...
As you can see, I have a single printer/scanner which is connected to the RPi via USB. The RPi itself is connected to my router via Ethernet, though WiFi would be just as viable. I have a desktop PC connected to the router via Ethernet, and my wife uses Ethernet for her laptop because the WiFi doesn't work on that. My two daughers use WiFi on their laptops, and we also have a number of tablets and phones on WiFi. Finally, I have the Cloud Print App installed on my phone in case I need to print something on my home printer when I'm not at home.
That setup allows a single printer to work with at least six devices, and allows printing at home from anywhere in the world with an internet connection. Pretty sweet for a tiny little credit card sized device.
RPi 1 Model B+
The Raspberry Pi can be used as a great little programmable controller for all sorts of home projects, and as it's based on Linux, it handles the Python programming language perfectly. I use my second RPi for a small robot project I'm working on (when I find the time). I won't go into detail about it here, as I have a dedicated blog for the project. That blog can be found at this link right here. Bear in mind that the blog is in reverse chronological order, so you'll be reading the latest posts first. It'll all make sense when you get there!
To give you an idea though, here's a couple of pictures of the project...
RPi 2 Model B
Finally, we come to my third RPi (for now). Again, this one has had multiple uses during its short life, but in the end it's settled down as a media centre. This is quite a popular use for these little devices, and there are a number of ways of going about it. If you think about it, the RPi has an Ethernet port and a HDMI port, which makes it perfect for streaming video from a network to a modern TV or projector. I chose the RPi 2 Model B above my other RPi's for this task purely because of the quad-core processor. It needs to decode 1080p video at 30 frames per second and, although all models can do this, the RPi 2 doesn't even break into a sweat when faced with the task.
The RPi, running a dedicated Linux-based operating system called OSMC, can stream video, pictures, or music from either local storage over USB, network storage over LAN (from a NAS device for example), or directly from the Internet. OSMC is a (much improved in my opinion) descendant of XBMC, the media streaming software shipped originally with Microsoft's XBox (as XBMP - XBox Media Player). So many acronyms!
One thing that makes OSMC so amazing is the ability to add 'plug-ins' or 'add ons' which expand the ability of the base software. You want a weather channel, sports, documentaries, movies, catch-up TV? No problem. Of course I can't condone any of these things without you having the proper licenses in place...
And all of this is in glorious 1080p HD of course, not the upscaled crap you get from Sky TV.
One of the other cool features of OSMC is the ability to use custom skins. 'Skinning' changes the look of the system, without changing the functionality, and is perfect if you like to customise and change things to suit your tastes. Personally, I think the default skin is perfect, but it's nice to know I could change it if I wanted to. Again, this is all free software. All you need is the RPi and the network infrastructure in place to support it.
When it comes to controlling the media centre, there are multiple solutions. You can of course use a mouse (wired or wireless with a dongle), use a dedicated remote (OSMC supports a huge array of remotes) or use a smartphone App called 'Kodi Core'. This is a dedicated App for use purely as a remote control. As long as your phone is connected to the same local network as the RPi, it works perfectly. Although you do need to have WiFi enabled on the phone. Personally, I use an old Windows Media Centre remote which also works perfectly, and doesn't tie my phone up.
OSMC is very easy to set up, and even easier to use. The only downside is that you can't run anything else on the RPi at the same time, it's a dedicated media centre and that's it. What else you would want to run with it, I can't imagine, but the RPi set up as a printer/scanner server I talked about earlier would be happy to run an irc bouncer or webcam monitor simultaneously. Having said that, what OSMC does, it does perfectly.