Monday 18 January 2016

Micro-controller smackdown


C.H.I.P - CodeBug - PyBoard - Genuino Micro - Pi Zero - Micro:BIT


I often get asked at CoderDojo or by parents about where to start when it comes to hardware programming. Nowadays most people know about  Raspberry Pi but may have also heard of other devices like the CodeBug.  This blog post is an attempt to compare and contrast some of the most popular micro-controllers that are now available and hopefully provide a steer as to which might be the most suitable for whatever it is you have in mind.

Are all of these boards micro-controllers? I'll put my hands up to being a little flexible with definition here. I probably should have called this a 'single board micro-controller and similar devices smackdown', but that didn't seem quite snappy enough.
The PI Zero needs a separate SD card to operate (all the others have their own in-built storage for the code they run) so it is probably the least compliant with the historical definition of a micro-controller.
The idea of course was just to compare popular devices that are often discussed in the context of hobbyist and educational usage. If you're new to all this but have an idea for an embedded project or fancy learning something new with your children but don't know where to start, then hopefully this will be vaguely helpful.

Board-specific notes

 

Arduino/GenuinoMicro



  • Arduino is an open source hardware and software company that has been around since 2005 and has probably the biggest community and back-catalogue of projects (although Raspberry Pi is getting close now).
  • Arduino produce a number of boards for various different scales of projects. I picked the Micro  for the smackdown  firstly because it seemed the most similar to the others in terms of size and functionality and secondly because I had one. You could say that it is the little brother of the Arduino Uno in the same way as the the Pi Zero is for the model B2.
  • I've said that this supports C because that is close enough to the standard Arduino language. 
  • The Micro has a built-in LED and so getting the first 'hello world' blinking project complete is very simple and provides a good introduction to coding Arduinos. 


  • You'll notice that this is the one board missing a photo. That's because I don't have one (although I was lucky enough to test-drive a Micro:Bit before Christmas)! BBC Micro:Bits are going to be given away to a million Y7 children so they win on cost but because you can't just go out and buy one (yet), they come last for availability. All these boards are great for connecting to other hardware devices and prototyping. This will invariably lead to mistakes when the wrong lead is connected to the wrong pin. Although most of the boards are fairly resilient in this regard, frying a board is always a possibility. If you do this to your CodeBug or CHIP then you have to fork out for a replacement but that's an inconvenience rather than a show-stopper. I have heard that schools will have replacement's but it is not clear how many. 
  • You could convincingly argue that it's not fair to include the Micro:Bit in this comparison because it is part of a specific one-off project rather than a commercial endeavour. However because they will be filling the same space and may be competing for the time and investment of educators, I thought it made sense to keep the Micro:Bit in the list.
  • The Micro:Bit has a 5x5 LED matrix and there are plenty of online code examples to get you started.


PyBoard


  • The PyBoard is an open source prototyping platform designed and manufactured in the UK. This board with its ARM micro-controller is programmed using micropython low memory usage version of the Python 3  scripting language. The PyBoard is great for processor-hungry stand alone projects.
  • Programming the PyBoard is achieved by connecting it to a computer via USB where it will appear as a normal drive. You can then edit the Python code using a text editor. Alternatively you can use REPL (Read Evaluate Print Loop) mode which allows you to connect to the PyBoard like a serial device and access a command prompt.
  • I'm using the V1.0 board here for no other reason that it's what I have.
  • The size figures include the mounting holes which can easily be snipped off and will reduce the  size by 10mm.
  • There are a few built-in LEDs and using micro-Python is well documented for getting these happily blinking away. 

  • CHIP began life as a Kickstarter project. It is similar to the Raspberry Pi in that it has the ability to be used as a 'proper' computer with a full Linux operating system that can run programs like word processors etc.
  • You could probably argue that a fairer comparison would be with the Pi model A+.
  • It has bluetooth and wifi capability built-in. However it does not have a VGA or HDMI output option OOTB and instead uses composite video. This is not as common and as widely supported by displays as it was a few years ago. The only screen available for me without the use of an upscaler/converter was my ageing TV.
  • CHIP is  open hardware project, with open source software
  • This is probably the newest kid on the block so it scores less well in some categories due to its relative immaturity.
  • The Pi Zero is the smallest of the Raspberry Pi models. It requires an operating system (a number of Linux flavours and Windows 10 IOT are available) to be pre-loaded onto an SD card from which the Pi is booted. It can then be used as a full-blown computer that can run word processors, games (Minecraft Pi edition is a big selling point) and act as a media centre.  
  • You could argue that the cost of a Pi Zero is zero as it was possible to get a free one with the MagPi magazine. But the magazine itself cost £5.99 and you can't get hold of a copy anywhere anyway.
  • The CodeBug also started life as a Kickstarter project.
  • Programming the CodeBug is achieved by connecting it to a computer via USB where it will appear as a normal drive. The main programming route is via a block based language that requires an Internet connection: you download your program file and copy it onto the CodeBug drive.
  • I almost added an 'aesthetics' category just so the CodeBug could win. It definitely looks the funkiest and most fun of all the boards.
  • You could argue that Python capability is only provided by a second computer like a Raspberry Pi but as it is marked that an extra computer is required, so I think this is fair. 

The facts and figures



PyBoard V1.1 Pi Zero CHIP CodeBug Micro:BIT *uino Micro
Cost £28.00 £4.00 £6.52 £15.00 £0.00 £15.43
Cost (score) 6 2 3 4 1 5
Availability (score) 2 5 2 1 6 2
Getting started (score) 5 3 4 1 2 5
Educational resources (score) 5 1 5 3 2 4
Equipped with – PSU/power cable N N N Y ? N
Equipped with – LED Matrix N N N Y Y N
Equipped with – LED(s) Y N Y N N Y
Equipped with – Compass/magnetometer N N N N Y N
Equipped with – GPIO (digital) Y Y Y Y Y Y
Equipped with – GPIO (analogue) Y N Y N Y Y
Equipped with – button(s) Y N N Y Y N
Equipped with – battery pack N N N Y Y N
Equipped with – Accelerometer Y N N N Y N
Equipped with – SD card slot Y Y N N N N
Equipped with – header N N Y Y Y Y
Equipped with – Internal Flash 1024K N Y Y Y 32K
Equipped with – Clock speed 168MHz 1GHz 1GHz 48MHz 16MHz 16MHz
Equipped with – Program storage 1M 0 4GB 32K 256K 32K
Equipped with – RAM 192K 512M 512M 2K 16K 2.5K
Equipped with (score) 2 6 4 3 1 5
Size 41x43x5mm 65x30x5mm 62x41x15mm 49x40x10mm 50x40x8mm 48x18x20mm
Size (score) 1 2 6 5 3 4
Coolness (score) 1 1 1 1 1 1
Language support – Python Y Y N Y Y N
Language support – Ruby N Y N N N N
Language support – Scratch/block based N Y N Y Y N
Language support – C N Y Y N N Y
Language support – Assembly N Y N N N N
Language support – others N Y Y N Y N
Language support (score) 5 1 2 4 3 5
Extra kit needed – cables Y Y N N ? Y
Extra kit needed – PSU N Y Y N N Y
Extra kit needed – keyboard/mouse N Y Y N N N
Extra kit needed – screen N Y Y N N N
Extra kit needed – another computer Y N N Y Y Y
Extra kit needed – SD card N Y N N N N
Extra kit needed – Internet connection N N N P P N
Extra kit needed (score) 1 3 2 1 1 1
Support (score) 3 1 3 6 3 2
Add-ons (score) 3 1 3 5 6 2





















Total 34 26 35 34 29 36

Notes


Scoring is fairly arbitrary and not very scientific. It probably isn't even fair. I have tried to consider the specifications for the out-of-the-box (OOTB) supplied single device but there are obviously bundles and kits that may offer more and/or be better value. Nevertheless, here are some notes about the various categories. Have a look at these before you start ranting.

Cost

Pretty straightforward. How much would it cost me to buy one in the UK right now, including any taxes but ignoring any shipping costs.

Availability.

Can I actually get hold of one? What about if I want a set for my classroom or club? Is there a plentiful supply or does demand exceed supply?

Getting Started

How much effort and fiddling around is involved in getting up and running and making that first LED light up? When it arrives on the doormat, do I need to find a bunch of cables before I can plug it in? Do I need an SD card and if so, do I need to load anything on to it? How much help is available on line? Are there docs and YouTube videos? The scores here might seem a little harsh. To be honest, there is plenty of material for all the boards so the ones that get a lower score just have more. 

Educational resources

So I've got one and I'd like to get my kids using it for some exciting projects. Can I download worksheets and guides? Are there magazine articles for fun projects? What about local events that might help? This is similar to 'getting started' but is more about the long term investment. Once I've completed the obligatory 'hello world' LED illumination, what can I do next? Will it be put away and never used again? Are there plenty of follow-on activities?

Equipped with...

What kind of equipment does it come with, either as an additional bit of kit like a cable or a built-in LED (that you can control programmatically) or accelerometer. Some of these are not necessarily positive or negative attributes. Having a soldered header for GPIO pins might be good news if you don't like soldering, but annoying if you're after the smallest form factor possible and/or wanted to solder connections directly to the PCB. The RAM and program storage values are not really that useful in terms of comparison because as noted previously, I'm not really comparing like for like: some devices need MB of RAM because they have to run a full operating system. That is not necessarily a positive attribute.

In terms of battery power, I'm talking about easily using standard AA or coin cells to power the board. You can always use a USB power bank or even a LiPo battery with a powerboost for any of the boards but the consideration here is really about the potential for use in wearable projects.


Size

In this smackdown I'm saying that a smaller form factor is better. The measurements relate to the out-of-the-box device, before any soldering of headers that may be supplied.

Coolness.

When my son suggested this as a category to consider I thought it was a good idea. The only problem is that all of these are cool! Other factors where everything scored the same have been removed from the final breakdown but I decided to leave this one is to emphasise the point that these are all cool.


Language support

I've clearly only gone for a few popular languages here and I'm sure you could argue that it is possible to program the device using language X (or use it as a programming platform) in some cases where I've marked an N. However I'm basing this on how easy it would be for a relative novice to start coding and whether or not there is formal support for the language in question.

Extra kit needed

Obviously there is some overlap here with 'getting started' but this clearly sets out what you need to buy (or already have). This is a hard factor to score because arguably if you need another computer then that is a more expensive extra than a few cables. But I'm taking the position that most people will have a laptop or PC with a USB connector already so that that is all that you need, you'll get a better score. The internet connectivity issue is a thorny one so rather than deal with it head on: I implemented a fudge and added a 'Partial (P)' answer. This means that you can run stuff without an Internet connection but that one or more of the main programming and access routes requires connectivity to a website.

Support

Where can you go for help? Is there a big community? Plenty of friendly online forums? Even a magazine or two?

Add-ons

Can you easily buy extra cool stuff to extend and enhance functionality?

General scoring.


I've allowed ties, but then treated it like a race so that lower points are then missed out (i.e. if there are two scores of 1 then they'll be no score of 2).


Final score


This is not a score to determine which one is best. This could be silly as they are not all intended for the same tasks or aimed at the same audience.

A lower score hopefully reflects versatility and broad appeal. A High score probably suggests a more niche target audience and a slightly steeper learning curve.

Bearing that in mind, it is probably no surprise that the Pi Zero comes out as the most versatile of all the boards under test. Its small size and the huge range of resources and add-ons make it a great choice as a starting board  for many kinds of projects - hopefully the current lack of availability is only temporary. Having said that, I'm not sure I'd always recommend the Pi Zero as starting place. The fact that it doesn't come pre-soldered with a header means that you can alternatively solder component leads directly onto the board, helping reduce the height. Great for embedded projects! However, it also means that for general tinkering, you can't just start easily connecting LEDs straight-away. So I'd suggest also getting a Pi B+ and using that for developing and experimentation and prototyping , then swapping over the SD card into the Zero for testing and refinement.

At the other end of the spectrum, there is very little between the PyBoard, Genuino Micro and CHIP for a dedicated project device.  I like the PyBoard because it has a built-in accelerometer (which I often end up adding to my Pi or Arduino projects) although it is the most expensive device here. As the CHIP product matures, I'd expect it to creep closer to the Pi for versatility. That leaves the Micro:BIT and CodeBug somewhere in the middle: I think this reflects the fact that these are great entry-level boards for people (and especially children) who are really just starting out with hardware programming and electronics.