Exploring the BBC Micro:bit Software Stack and OS
mattwarren.org
mattwarren.org
I estimate around 80 people volunteered time to bring Python and associated tools (such as the browser based editor, command line tools and a native editor called "Mu" https://mu.readthedocs.io/en/latest/) to micro:bit.
At the heart of all this work was the creator of MicroPython, Damien George who volunteered a huge number of hours to bringing a full reimplementation of Python3 (without standard library) to micro:bit. Check it out, it's awesome. MicroPython is both a reimplementation of Python 3 but on the micro:bit also has music, a simple speech synthesiser, funky display functions, radio and a simple file system all built in. :-)
It even allows compiling to native code and use of inline Assembly.
http://docs.micropython.org/en/v1.9.3/pyboard/reference/spee...
http://docs.micropython.org/en/v1.9.3/pyboard/pyboard/tutori...
> Programmable - The device must be reprogrammable
> Simple to program - via a graphical browser based UI
> Small - maximum 5cm x 5cm
> Cheap - manufacture cost must be approximately £2 or less when produced in large scale - for example batches of 100,000 units
Currently I switch for my workshops to the Calliope Mini [1], very similar (they talked to the Micro:bit guys), but has additionally RGB LED, microphone, sound, Grove sensor connectors (2) and motor drivers for two motors for robots (but is more expensive).
40s/50s surely. the 80s is 30 years ago.
But yes, I guess I should've extended it a bit :-)
Most of my colleagues from the UK went through a similar curve, taking in Atari and Amiga machines at home not just as games machines but piqued by their capability to produce software of their own.
The UK 8-bit market was one of the biggest economic helpers the country has had in generations. We then went about squandering it.
Whilst I was a teenager the school curriculums moved to teaching PowerPoint and Excel which basically meant STEM entrants at University fell off. I was one of the last years to be able to learn how to code at school.
Detecting an impeding and urgent skills gap, a couple of years ago a proper computer science GCSE was kicked off (by the much maligned, but on this occasion perhaps quite right, Michael Gove MP), but only 11% of pupils in the UK sat it last year, and most schools are struggling to hire teachers so the quality of the kids they're turning out is a problem for us as a country and economy.
This is something I'm spending a lot of time thinking about right now. An open-source set of text books with teacher notes might help a lot of kids get exposure to the skills they need for the workplace in 30 years, the way I got exposure.
Yes, the RPi and microbits stuff is part of that, but there needs to be some steps beyond that. Kids need to be able to go home, look at the PC or laptop and think "I could make something on that", and get the guidance needed to do so.
Yep, that's exactly my programming history!
> The UK 8-bit market was one of the biggest economic helpers the country has had in generations. We then went about squandering it.
Yeah, such a shame that happened. I wonder why?
We now have the Raspberry Pi to fill the "home computer" niche but it's a very different proposition to the home computer of the 1980's.
Acorn did go on to come up with the next but one generation of computers, the 10 or so ARM cores in every smart phone.
In terms of defaults matter, shipping with a programming language by default is great. Also shipping with a 400 page manual explaining how to use that language was great, which Acorn did until about 1995 I guess.
I was the first person in my school to use the school computer. I can't say we had programming lessons that often, did Logo in secondary school, but only the graphical parts. But the teachers let us type in programs from magazines, learn ourselves. Depends on what teacher you had really, if they knew programming they probably taught it. That's what I do now.
I remember there were a couple of BBC Micros sat getting dusty in the corners of a couple of classrooms in both my infant (year 1-2) and junior (year 3-6) schools, but we never used them.
Instead we had brand new Windows machines on which we learnt Powerpoint, Excel and used Encarta. Joy.
I'm sorry, that may have been your experience, but that statement is simply not true.
In the early 80s - when you say you were being taught BASIC at an age when most people are still learning to read - I was in middle school, and the only thing anybody was allowed to do on the school's single BBC was play Frak a handful of times.
Not only were there no computer lessons in middle school there were none in my high school either, until 1988, at which time we did not learn BASIC or C, but whatever database software the BBC was using.
The 1980s was a heyday of British kids being into computers and programming (creating a massive games industry), but it has essentially nothing to do with the piss-poor education system of the UK or a computer that had virtually no users outside of state institutions.
Kids in that decade were doing it for themselves, at home, not in school, primarily on the ZX Spectrum.
I was born in 1971 and both my primary and secondary schools had LINK 480Z computers by Research Machines. The primary school only had the one, but the secondary school had a lab with 12 or 16 (I forget) of them. Later on it replaced them with a larger number of RM Nimbus PCs (again from Research Machines) which used 80186 processors. Yes, you read that right: 80186 processors. As you'd expect, they were not properly compatible with real PCs.
I was lucky enough to get a BBC Micro at home a couple of years after starting secondary school; my parents held off because they thought that maybe it was just a short-term interest. I think they might be convinced by now.
We are using the approach taken with micro:bit to support other resource constrained devices, like the adafruit circuit playground: https://makecode.adafruit.com
So, the hardware supports ANT+. The software stack doesn’t seem to, however. Does anybody know whether that is possible/worked on? If not, is there similar ‘beginner’ hardware that does?
I assumed that the PXT worked the same as MicroPython, but it seems like it actually compiles directly to machine code, nice!
You have to really work to hobble a modern computer to remove the excitement factor but somehow the BBC rose to the challenge.
But, have you ever watched a kid use one and within 5 mins be able to have their name scroll across the screen or make a simple Paper/Scissors/Stone game using the accelerometer? They get pretty excited about it!
For an example of what the new BBC project should have been, look up littlebits - now there's potential and open ended creative possibility.
A few blinking lights and that's the total potential? Meh.
Also take a look at some of the ideas on this page, http://microbit.org/ideas/projects/.
(thanks for the info about 'littlebits', I'd not heard about that, taking a look now)
https://makecode.microbit.org/projects/rps-teams
Add on some motors and make a robot that hides from the light?
Make a robot that can follow a path, or that drives based on true compass directions.
Make a hide and seek with your microbit reporting hot/cold based on signal strength to other microbits? https://makecode.microbit.org/projects/hot-or-cold
Display the temperature?
Send messages to people?
Add on any other sensors?
Connect to your phone and do something else (app driven robot maybe)
Firefly synchronisation https://makecode.microbit.org/projects/fireflies
There's loads on that page and really you've got sensors and can control other things, and do distributed communication. There's lots of things you can do with a low powered processor, and it's not locked down to a few options.
Edit - I've just found out you can play sounds with it too.
Edit 2 - I'm now actually quite excited about this. I'm going to go out and buy one now.
It was a huge mistake not to ship this with a video port.
Looking at what I see happening with the Raspberry Pi, I don't agree with that assertion. It's not been very important for making cooler projects with kids, it only made coding on it easier since it didn't come with a nice remote environment and you thus could use the Linux desktop on the Pi for coding. (It also opens up use cases like "media center", but those are not very relevant for education).
Kids find going to hardware like the microbit/Pi/Arduino interesting because it is breaking out of the usual screen(+keyboard in case of a PC) environment, and you can do
> games, robotics and interaction
that's not limited to the screen. And nothing stops you to combine both, have the microbit talk to a PC/phone.
I think it's a mistake to assume modern kids need high powered things to be interesting. I've been at a maker faire where the kids were amazed at seeing an old broadcast camera hooked up to a TV. All it was doing was recording and playing things back, but they liked it. I'm sure lots of them even had phones which would do the same thing but with higher quality.
The local science museum always hads kids running about in the discovery section playing with things like pulleys and shouting into the long tube that creates a delay, or the glasses that turn things upside down.
Kids still play with lego which has absolutely no moving parts or complex interaction.
I'm sure if you start by telling kids it'll be boring they'll hate it. Otherwise kids seem to be able to have fun with anything as complex as a cardbox box upwards.
> games, robotics and interaction.
I mean, several of my examples are games, robots and involve interaction.
I can easily see how to use two of these to make a robot wars robot, one for the controller (steer with tilting and a button for "go" and a button for "fire") and one for the robot. Don't tell me kids wouldn't be interested in making fighting robots.
> It was a huge mistake not to ship this with a video port.
I think it'd be a huge mistake to try and make something like the rPi. That already exists if you want to do stuff connected to a screen with a full OS and internet access.
I doubt it would have fitted into the budget for production either, given that these needed to be given to every year 7 in the country.
I think you're trying to make it boring, and have fun with that, I'm going to go and make a robot. Or maybe finally build the sensor to see how far my degu runs in a day on his wheel.
They are very much a publicly funded corporation, so everything they do has to fit with that.
You can drive larger displays https://github.com/carlosperate/awesome-microbit
Plus don't think it's the only computer they'll have, it's an IoT computer, it's supposed to not have a video out.
I like that it's all in one, you can program it in 5 mins with a browser, and yet connects to real IO the same way real embedded computers do, you have to get a bit messy, you know it's not a toy.
And that's without using any of the pins to hook up external gear. My kids have just started hooking up continuous servos and creating remote control buggies with them, learning about protocols in the meantime.
They're probably one of the best pieces of kit I've used in 13 years of teaching (and cheap to boot).
But feel free to keep rubbishing them, that's your prerogative :)
At £15 for one with a battery pack, cables, tutorials, and all that, it sounds great.
And apparently has a different radio too, to connect to other micro:bits? Multiplayer rock paper scissors: https://makecode.microbit.org/projects/rps-teams
I'll happily trade not having loads of ram for something a kid (or a big kid myself :) ) can pick up and just make something fun in almost no time.
The benefits of working within RAM and processing constraints teaches about those limits and you become more aware of the interaction between hardware and software.
Too many softies these days are completely unaware of this interaction.... (to their deficit).
You know what? I'm already bored. And that's before I've started trying to install eclipse and what sdks I need and whether to use kotlin and how to setup the right things.
I mean, I found the google docs and one of the first steps is
> Request an OAuth 2.0 Client ID
Great, going to get some young kids excited by explaining what oauth is and how to log into the google developers console.
Next up, what XML you need to know to create an interface and add what threads are and ...
Or:
https://makecode.microbit.org/projects/hot-or-cold
Done.
Easy to make, lots of tutorials, requires another language unfortunately but still a useful skill.
Not always applicable, but can be a good approach.
Best of luck, I know there are some hard steps to take (particularly the stage of "ok I can write code but what can I actually do with it"), but things really build after a while. Oh, and I've been coding for maybe 17 years and
1. I keep writing code that's wrong 2. I get basic things wrong all the time 3. I still have to regularly look things up
My wife is learning to code, and I think she felt these things meant she wasn't doing well at it, but it's really common. I'm just used to it and have more experience finding my mistakes because I've made them so much.
> and the micro:bit seems a good solution to that.
I think so. I think there's a huge step forwards when you can get something working quickly, then build from there.
I'm buying my youngest step-child a Micro:bit for Christmas. Well, I say it's for him...
I think that I'll be doing something similar ;-)
https://developers.google.com/beacons/proximity/get-started
Android dev used to say to go to eclipse, now it's JetBrains apparently. Have a look at the "your first app" here:
https://developer.android.com/training/basics/firstapp/index...
Compare just part of the code for making text appear:
public class MainActivity extends AppCompatActivity {
public static final String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
/** Called when the user taps the Send button */
public void sendMessage(View view) {
Intent intent = new Intent(this, DisplayMessageActivity.class);
EditText editText = (EditText) findViewById(R.id.editText);
String message = editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
}
}
Which comes along with XML like this All you need to do is declare which activity is the logical parent in the AndroidManifest.xml file. So open the file at app >
manifests > AndroidManifest.xml, locate the <activity> tag for DisplayMessageActivity and replace it with the following:
<activity android:name=".DisplayMessageActivity"
android:parentActivityName=".MainActivity" >
<!-- The meta-data tag is required if you support API level 15 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
</activity>
This is before trying to get radios working, beacons, etc. Just text, a button and "back".For something exciting and interesting, I'd rather not see "paste the following XML" anywhere in the instructions.
It feels like having to get regulatory approval, surveys and having OSHA oversight while making sandcastles.
He's not really that impressed by most computer stuff which is at a level he'd actually be able to understand/program. While he's shown some aptitude in scratch, etc., I think the problem is that everything that's exciting to him is light years away from whatever he can actually do.
However, he and his friends all spent some time on the open evening looking at the micro:bits that were on display which were set up to do various simple things - detect touches or switch presses and change LEDs, etc.
His elder sister is of the age that was supposed to get a free Micro:bit, but that didn't happen.... I think I'll have to buy one and have a play!
RISC-V has none of these things right now. One type of chip available, I doubt they could have gotten it at the time (or even right now) in the numbers they need, it would need companion chips for things the current one has integrated (Bluetooth), would be more expensive and would likely require more software work. Exciting, yes, but at the lower levels "boring" is exactly what you want for a project like this. The entire thing is supposed to be cheap so you can distribute it widely and additional effort spent has a way higher impact if it goes to documentation, teaching materials, example projects, … than to making low-level changes most users won't even notice.
It looks like BT was the architecture driver, so they used https://www.nordicsemi.com/eng/Products/Bluetooth-low-energy... - the radio is the difficult bit, and the processor having spare capacity is a convenient by product.
Huh, I'd not thought about it like that before. Yeah I guess ARM/Acorn does owe the BBC quite a bit!