A few weeks ago, a few friends around me decided that we were radical geeks. An animated discussion ensued, in which we quickly developed a particularly acute analysis of our little group culture and social skills (or lack thereof). Considering our debate was hardly leading us towards a consensus, we started to think quantitatively. We all agreed that the best way to determine our level of geekiness was to find a factual way of measuring it. We decided to faithfully write down how much time we spend doing “geeky activities” over the course of a few week-ends. A great metric. My own geeky activity would be playing with a toy designed for kids aged 11, called BBC micro:bit.
BBC micro:bits are embedded coding devices designed for the education of young children in computing. As a parent, you may have heard of it: these computers are given for free to children in year 7 in the UK. The little 5cm by 4cm devices are small boards packed with a variety of components. These components are meant to turn a micro:bit into anything and everything… provided you take a few minutes of your life to program it.
BBC micro:bits are made of the following key components:
- An application system-on-chip (SoC), based on an ARM Cortex-M0 (the grunt of the micro:bit)
- An on-board 2.4GHz transceiver, that supports Bluetooth and other communication standards
- A micro USB port and its associated dedicated interface chip
- 25 red emitting LEDs forming a 5 x 5 grid
- Additional forms of input and outputs (I/Os), including:
- Two programmable buttons
- A compass, to detect the device’s facing direction and movement (in degrees)
- An accelerometer, to detect the device’s speed changes (in milli-Gs)
- Three pins, labelled P0, P1, P2 to send data to and receive data from external devices
- Two additional power supply pins, labelled 3V and GND, to power up external devices (such as small motors).
BBC micro:bit are powered either by a couple of AAA batteries, or by a bigger device (such as a computer, tablet or phone) via USB.
Practicality and Use Cases
All the little bits and bobs on the board open the door to the most incredible projects. For instance, pupils use micro:bit to take stratosphere temperature measurements. Enthusiastic dads spend their week-ends building micro:bit-based self-driving miniature cars for their kids. Researchers build clusters of micro:bit to design professional gesture-controlled musical instruments. The possibilities are endless and limited only by people’s mind and creativity.
This wide range of applications is only possible thanks to a very accessible software stack, designed and implemented by a generous BBC-led consortium, including prestigious names such as Microsoft or ARM. Together, they managed to build an exceptional development ecosystem.
Today, there are four official code editors advertised on the BBC micro:bit website:
- Microsoft Block Editor
- Microsoft TouchDevelop, a text based programming language
- Python, which is… well… Python.
Several other alternatives exist, and the open-source community looks quite active.
Do not let the apparent simplicity of the development environment (and in particular the “block editors”) fool you, though. All these editors rely on the BBC micro:bit runtime Device Abstraction Layer (DAL) designed by the University of Lancaster. This open-source project (on GitHub) is written in C/C++ and relies on ARM embed.
BBC micro:bit In Practice
It all boils down to how you want to approach your micro:bit. In essence, to use a BBC micro:bit, you need to:
- get a small program (either by writing it yourself or by finding one on the web)
- connect your device to a computer
- upload your executable onto the device.
The executable will then automatically run on your device.
To illustrate, I have gone through the hoops of writing a tiny application.
Writing a program for BBC micro:bits
- Intuitive menus to write code (drags and drops)
- A small emulator showing what would happen if this code was running on your actual micro:bit.
Long gone is the era where you started embedded device programming by writing assembly code. Nowadays, it can be as easy as dragging and dropping blocks on a web interface. After a few minutes (or hours?) working on your creation, you should end up with a small application (a .hex file). You can execute this application on your micro:bit. In my case, I programmed my BBC micro:bit to make random noises and show a happy face.
To connect your micro:bit to your host (laptop, tablet, mobile phone…), you have multiple choices:
- Connect the micro:bit to your host via USB, in which case you can treat your micro:bit as if it were a USB stick
- Pair the micro:bit to your host via Bluetooth, in which case you will probably need to install the well designed micro:bit application, for instance on your Android phone.
Pairing a micro:bit with a phone over Bluetooth works well but is actually a bit of a hassle. Connecting the micro:bit via USB on a laptop is immediate, which is why I would recommend using this approach. Once the connection is established, it’s plain sailing. Just upload the executable over to your BBC micro:bit and that’s it! The magic happens: your micro:bit becomes a full-fledged computer obeying your every whims. Or maybe not.
Why Should You Own A BBC micro:bit?
The main reason I see that would prompt me to buy a BBC micro:bit is education. As these devices come with a limited feature set, turning a BBC micro:bit into something practical is bound to be a challenge.
As a training platform however, BBC micro:bits are excellent mobile devices.
This is why I believe that the BBC Computer Literacy Programme has achieved quite a feat: turning an embedded coding device into a simple product anyone can program. Following this little experiment, I can see why key actors, such as Microsoft, ARM, the BBC and many others, have all chipped in to design and turn this concept into a reality. Thanks to BBC micro:bit, a generation of children should have an easier time understanding the technology that surrounds them.
The BBC micro:bit is more than just a toy though. I reckon a wide spectrum of users would benefit from owning one. Indeed, they are simple enough to be used by curious teenagers, and rich enough to be used by computer scientists or electrical engineers studying towards a master’s degree. Hence, I can perfectly picture students learning how to code and debug embedded applications on BBC micro:bit the same way I used to learn, several years ago, on much more rustic platforms.
BBC micro:bit beautifully fills a market gap around computing education. They are:
- Dead cheap: free for young children in year 7 and otherwise available for less than £15
- Of good quality and very sturdy: you can safely step on these things, they’ll be just fine (spoiler alert: don’t blame me if stomping your micro:bit doesn’t end well)
- Easily accessible: they are, by essence, a child’s play
- Yet, inherently complex: if you want “hard”, you can get “hard”.
As per my own geekiness level, it looks like I have spent a good 8 hours reading technical documentation and playing with my BBC micro:bit so far. Everything considered, I am probably an irredeemable geek by my friends’ standards. I do not feel responsible, though. I blame the BBC for putting together a fun little device, and for masterfully turning something “complex” into “accessible”.