For the past few weeks, I have been playing with a developer version of the BBC’s new Microbit device. Below are my first impressions of the hardware and software.
The second part of this series, focusing on MicroPython on Microbit can be found here.
The BBC Microbit is a tiny circuit board with an onboard Arduino-like microprocessor and a number of sensors built in along with a 5×5 red LED matrix..
Every year 7 (year 8 in Northern Ireland) student across the UK will be receiving one for free as part of the BBC’s Make It Digital programme. Right now, the current expected rollout is that teachers will receive devices late February 2016 while students will receive theirs a few months later.
The Microbit circuit board includes
- A 5×5 red LED matrix
- 2 buttons (and another reset button on the back)
- A compass and accelerometer
- An edge connector with 22 pins (16 of which are usable GPIO pins)
- Micro USB port for programming/power
- 2 pin JST port for powering from 3V battery (x2 AAA batteries for example)
Hardware like this though is no use without a way to program it.
There are currently 4 different ways to write code for the Microbit, 3 of which are right now, entirely web based.
- Microsoft Touch Develop (online)
- Microsoft Block Editor (online)
- MicroPython (online soon and offline)
The first thing worth pointing out is there is currently 2 ways to actually load your programs onto your Microbit.
- If using a computer with a USB port, download a .hex file and copy the file onto the “MICROBIT” flash drive that appears when you plug the device in (so no special drivers needed).
- If using a tablet or phone (iOS or Android is fine), you will be able to download your programs over bluetooth to the Microbit. I have seen a working demo of this at BETT 2016 for Android, although as of yet have not seen anything working with iOS.
All the programming environment are listed here.
The first is Microsoft TouchDevelop. A project initially born out of Microsoft Research, TouchDevelop is an interesting environment for writing code, without actually needing a keyboard… It is very weird coming from a Scratch and Python standpoint, but I do understand where it is coming from. It is a perfect environment for using with touch based devices and works out of the box with Android and iOS web browsers.
Its interface is rather intuitive and for beginners, I think it will work great. You can run your code once you are ready on the virtual Microbit simulator to the right, or hit compile to download the .hex program file.
Microsoft Block Editor
Microsoft Block Editor (based on Google Blockly) is more Scratch-like environment for building programs. It is based on Blockly (same as App Inventor). Students and teachers familiar with MIT Scratch or App Inventor will feel at home using the block editor.
To use it, you grab blocks from the menu on the left hand side of the screen and drag them onto the programming space.
The Block Editor works fine on a touch device, but is best suited to computer with a keyboard and mouse. It again also has the same simulator as Touch Develop to the right.
Out of the 3 web based editors available right now it is my favourite.
Overall, it is a very nice and intuitive editor and a bit of a mixture between the block based system used in Microsoft Block Editor and the more code based approach of Microsoft Touch Develop.
MicroPython (with Mu)
The final platform built for students to use with the Microbit is MicroPython and the Mu editor.
(It is worth pointing out here I am only looking at Mu, the offline editor for MicroPython. An online editor is coming but isn’t ready just yet)
Python is arguably now the most popular text based programming language used in schools with students. It is an extremely versatile language and has an easy to pick up, human readable focus on it.
MicroPython is an implementation of Python based off Python 3 for microcontrollers and devices with limited resources. This makes it a perfect candidate for use with the Microbit.
As part of bringing MicroPython to the Microbit, one of the developers decided to go ahead and build a beautiful offline environment to write your Python in. This editor is called Mu and can be grabbed from its Github repository. I am extremely impressed with Mu and MicroPython in general. It really opens up the possibilities of students doing some proper crazy stuff in a language they may have already had experience with. I am doing a separate post on Mu and MicroPython with more detail on the project as I have been most involved with it.
I think the biggest fundamental feature MicroPython on the Microbit has over the other platforms is it provides (if you install the driver on Windows, is included on Mac and Linux) a full console, or REPL. This allows you to simply type Python commands straight in and see the results. It also allows scripts to print data back to the serial console. It is worth pointing out though, Mu does not include any Microbit simulator like the other 3 platforms.
The Microbit features a large golden edge connector at the bottom. This edge connect brings out a number of GPIO pins from the microprocessor. 5 of these pins are large pads, designed to be used with crocodile clips. These 5 pins include 3 GPIO pins, 3V and ground. The 3 GPIO pins include Makey Makey style resistive touch which is a nice addition.
Although it looks like plenty of pins to work with, be warned that many of them have additional functions, whether that be driving the LED matrix, buttons or the I2C interface. Unfortunately because of this, instead of 22 GPIO pins, you actually really only have 9 pins you can use without interfering with other parts.
Of the 9 GPIO pins brought out with no additional features, 3 (0, 1, 2) can be used as analog sensor inputs while all can be used with PWM.
Other interfaces available on the edge connector includes I2C (pin 19 and 20) and SPI (pin 13, 14, 15). It is also possible to redirect UART serial out to any 2 pins, but in doing that you loose the REPL over USB. Right now, only MicroPython supports working low level with these interfaces.
To make use of all but the 5 touch pads, you will need to get yourself a breakout board. Kitronik do an excellent (and pretty cheap) one over on their site which is available in assembled or unassembled form. They also have a rather nice assembled motor driver board available.
I am sure more companies with bring out similar boards when the Microbit is officially launched and publicly available.
Microbit vs Raspberry Pi
This is a question I have had a lot when chatting to people about the Microbit, especially teachers.
“What is the difference between the Microbit and the Raspberry Pi?”
The simple answer is they are completely different kettles of fish!
Here is why:
- The Raspberry Pi is a full computer that you can plug a keyboard, mouse and screen into. The Microbit is not, it needs another computer to program it. Interestingly you can use a Raspberry Pi to program a Microbit!
- The Microbit has an acceleromenter and compress built in, along with 2 buttons and a 5×5 LED matrix. The Raspberry Pi does not include anything like that out of the box, you have to purchase an addon board (HAT) or other modules and plug them in.
- The Raspberry Pi can be programmed in many many more programming languages and platforms, hundreds even given it runs Linux. The Microbit can only be programmed in 4 or 5 languages.
- The Microbit is very low power, using less than a 5th of the power of the Raspberry Pi.
- The Microbit has GPIO pins like the Raspberry Pi, but only has 9 usable free ones, vs the Raspberry Pis 26 free GPIO pins.
- Both support expansion interfaces like SPI and I2C, but the Raspberry Pi has libraries for many addon boards already, where as the Microbit doesn’t just yet.
- The Raspberry Pi is much more powerful, the processor is 50-60 times as powerful and has 64,000 times as much RAM(16kb vs 1024mb)!
So the main difference is the Raspberry Pi is a full blown Linux computer, where as the Microbit has a simple little microprocessor which runs a single program and that is it. They can’t really be properly compared, but can be used alongside each other. The Microbit is a great starting point after which, a Raspberry Pi makes perfect sense to progress to.
It is pretty cool though that you can use the Raspberry Pi to program the Microbit. Using MicroPython, you can even use it as an “external sensor” for the Raspberry Pi. You could for example use it as a game controller for your game on the Raspberry Pi! Will be very exciting to see what people do with the Raspberry Pi and Microbit combined!
So what have I been doing with it?
I have been spending a majority of my time with the Microbit using MicroPython and in turn, breaking MicroPython!
Because the MicroPython environment is open source and on Github, it is really easy to open new issues for ideas for features or to contribute to documentation.
I have been fiddling about with a few of the less mainstream features including the new Neopixel library and playing with Touch support. I have gone into more detail about this in my MicroPython blogpost.
I think there is a lot of potential for the Microbit. Sure a decent chunk will end up in drawers, on shelves or even on Ebay. But, those that don’t, those that get picked up by students with teachers that understand how to use them… Those it could really make a big difference with.
Will it inspire and create the next generation of computer scientists?
I am going to reserve taking a side till I can get a set and use it with a class of kids, but I can say with complete certainty, it will certainly inspire thousands of students across the UK to give Computer Science a go.
And who knows, maybe some of them will go on to create tomorrows “next big thing” because chances are, it will involve computers.
The second part of this series, focusing on MicroPython on Microbit can be found here.