BBC Micro Bit computer's final design revealed
bbc.co.uk
bbc.co.uk
A long time ago I was a kid with an interest in computers and I remember what it was like and it's hard to imagine this actually being interesting to kids.
It sort of feels like it's trying so hard not to compete with other technology that it's become kind of pointless. It really should have been able to plug into a display.
I'd love to be enthused because the initiative is an awesome one but a box with lights feel like it might be missing the inspiration factor.
It would have been good if they had some sort of Lego-like ability to connect them to each other or something to encourage kids to hook them up in series and make them communicate. Heck maybe with Legos permission it should have been Lego connector compatible so it could be clipped into Lego structures.
Feels like this little device is a bit of a missed opportunity.
"You can interact with the code that you've written as opposed to just seeing it on the screen, just seeing lines of code. You actually know what it does in real life ... as opposed to something like this, just seeing it running on the screen or on TV or something"
I can sort of follow that logic. Devices like screens are so normalised now that they're considered part of the fabric of reality. Of course you could do something on a computer but it's a thing only on a computer.
I remember making things happen for the first time on a BBC Micro as a child and being incredibly excited about that. Not least because seeing things on a screen was still at least a little bit novel.
Ironically, I think that VDUs (that's what they were called at the time!) have come so far that the contemporary manifestation of novel is technologically* regressive. But so much more engaging.
EDIT: Also it's small and cheap and everyone can have one without having to contend for / carry around keyboards and screens.
EDIT 2: I thought I'd transcribe what was actually said:
http://www.bbc.co.uk/programmes/b060zq92 from 40:10
Lauren:
"You can create animations but you can also set it up with your phone so you can press a button on the microbit it can take a picture or change to the next song and the fact that everybody else is getting it, it's not just one person, everyone's going to be learning at the same time so more people will be interested in it"
Ross:
"It's got a compass, an accelerometer. You can interact with the code that you've written as opposed to just seeing it on the screen, just seeing lines of code. You actually know what it does in real life you and you can take it round with you and wear it like this. So it's a lot more interesting a lot easier to play around with and you can see the effects of the code pretty quickly with something like this. As opposed to something like this, just seeing it running on the screen or on TV or something"
* in terms of IO, not in terms of it having an ARM chip
http://www.buydisplay.com/default/1-4-inch-graphic-128x64-lc...
(There are plenty of online stores that sell these at several times that price, only because they've added the word "Arduino" in the description...)
How cool would it be to pool the bits with your friends and click together each component and make the components talk and do things? Battery module, accelerometer module, led light module, button module, compass module, cpu module, usb module. Want more buttons or led lights, let the kids in the school ground share and swap bits - kids love swapping.
The key would have been to come up with an open standard for module connection, seed it with some initial cheap and simple modules and let kids hook em up and third parties design more modules with different functions, all incredibly single purpose but able to talk on a common bus and share a power module.
Having just said all that I looked up http://littlebits.cc/shop?filter=Bits
Each school kid could get one random module, not much use on its own but when pooled with other kids they could build together. There's even http://littlebits.cc/accessories/brick-adapter
We'll have much more in the coming months. Hope it's useful!
I have some projects where something like this would be a pretty nice fit.
http://goffart.co.uk/museum/schematics/bbc_b.pdf
http://chrisacorns.computinghistory.org.uk/docs/Acorn/Manual...
http://www.alisoneldred.com/imageJohnHarris-Prints-2-2064.ht...
If you're especially worried about mishaps, and don't mind modifying hardware in ways that aren't easily reversible, you could even use adhesive to permanently fix the IDC connectors in place.
If, conversely, you don't want to permanently connect all the parts to one another, you could also clip J8 pins 2 and 4 (5VDC) and 39 (one of several ground pins), and key the Pi-side IDC connector by stuffing the matching holes with a dab of quick-set epoxy. That by itself will suffice to protect against inadvertent 5V -> GPIO shorts; if you further use a breakout cable with keyed IDC connectors (e.g. [1]), and a breadboard breakout with a shrouded, keyed header (like an old-style IDE connector), then you end up with an entirely safe system.
And, taking that last idea further, you can get the same safety benefits at minimum hardware modifications (and no irreversible mods to the Pi) if you use:
- a ribbon with keyed connectors;
- a breakout with a keyed, shrouded header, and pins 2 and 4 removed;
- and a keyed shroud, such as [2] with the shipped pins removed, press-fitted to the Pi's J8 header.
On the one hand, the keyed shrouds prevent fumble fingers from inadvertently misplugging the IDC connectors on either side; on the other, the absence of pins 2 and 4 on the breakout prevents inadvertent overvolting of GPIO pins.
(And all you need is a bit of protoboard and some solder to make the breakout, using the pins removed from [2] as the breadboard-side pins of the breakout. In fact, if you have students old enough to be trusted with soldering irons, this is not only parsimonious of materials but an excellent teaching opportunity in its own right!)
Granted, none of these solutions is entirely ideal. The point isn't to provide a one-size-fits-all; instead, I'm trying to demonstrate that there are plenty of ways to solve this problem, many of which are less expensive and more user-transparent than pairing an Arduino with each Pi.
[1] http://amzn.to/1foCXLy [2] http://www.mouser.com/ProductDetail/TE-Connectivity-AMP/5103...
This isn't supposed to be powerful, it is supposed to be an integrated tool that allows reasonably fun labs and learning sections for a diverse group of kids. You could arguably do the same with shields and arduino, but then you lose the form factor.
I think maybe you meant GPGPU? Because it's pretty easy to do GPU work on it using OpenGL ES.
This BBC + commercial partner effort seems like duplication to me, although the hardware itself may be cheaper/simpler and therefore have slightly different goals.
The Raspberry Pi is more like an experimentation platform for learning linux as well as programming on the actual device. It can blink LEDs as well of course over GPIO but my impression is that this is a bit more complicated and requires extra hardware.
I think both have their merits and they can even be used in conjunction, like using the Raspberry Pi to program the micro:bit.
Not really; all you need is an LED and some way of connecting it to pins on the J8 header. On the software side, working with GPIO (at least in Raspbian) is as easy as I've ever seen any implementation make it; with a couple of commands, you can expose an arbitrary set of GPIO pins as sysfs virtual files. From there, you can drive them with any scripting language, including shell, or even directly at the CLI with "echo" and "cat".
This is what makes the Pi such an excellent platform for prototyping hardware to be implemented later on a smaller, more fit-for-purpose MCU: the "time to first blinkenlight" is extremely short, and iteration from there to standalone finished device can be quite granular.
To pick a handy example off my breadboard, here's how you might take a four-digit seven-segment LED display (like a digital clock display), salvaged from a dead NordicTrack treadmill, through that process:
1. Identify LED display pins through experiment -- The display turns out to be a rather typical common-cathode 4-digit display, with a partial 5th "digit" controlling the colon and decimals).
2. Wire up the LED display to the Pi's J8 header, so that it can be driven by GPIOs -- My breadboard [1] has a Pi bolted to it and interfaced via a homemade breakout, but you really don't have to get that fancy; a pack of female-to-female jumpers [2] will amply suffice.
3. Expose the connected GPIOs via sysfs [3] -- Once done, you can control them via shell scripts if you want, and many do.
4. Hack up a quick prototype in a scripting language, using the sysfs interface to control the connected device -- In this project's case, I found that, since the LED is common-cathode and has to be scanned in order to show different values on each digit, Perl + sysfs was too slow for proper flicker-free display.
5. Translate the prototype script into a proof-of-concept C program using a native library rather than the sysfs interface to drive the GPIOs -- I use Mike McCauley's lbcm2835 [4]; there are other options, which probably work just as well, but I found this one to best combine light weight (i.e. WiringPi wants to install binaries in my $PATH by default, and I don't want that) and comprehensive exposure of the chip's features.
6. Translate the C proof of concept into an equivalent implementation running on a microcontroller -- When I get around to that step, I'll be doing it on an MSP430, via the TI Launchpad which you can see below the Pi in the breadboard photo. Once I have a reliable clock driver running on the MCU, it'll be time for the next step:
7. Modify the MCU firmware so that, instead of generating a clock display, it listens for commands via I2C and renders the received values on the LCD display -- The BCM2835 can do I2C in hardware, and the Pi exposes it on J8. That'll make this task a lot easier; instead of having to bit-bang I2C on GPIO pins, I can use the hardware functionality (exposed by lbcm2835) and concentrate on the MCU-side client implementation. -- This'll also free up a lot of GPIO pins on my Pi!
8. Move the finished design from breadboard to PCB -- I'll probably just solder this up on protoboard instead of having a proper PCB made, because one step remains:
9. Write MSP430 firmware that uses Mecrimus-B [5] to expose a USB device interface for receiving commands from a USB host, and acts as an I2C master to drive the LED display -- The MSP doesn't have a lot of firmware space, and Mecrimus-B takes up quite a bit of it; also, it's written in assembly, not C. Instead of trying to intertwine the LED display driver with the USB stack, it'll be easier just to run the USB stack on on MSP and the LED driver on another, interfaced via I2C, and MSP430s are cheap enough at ~$2.50/ea that using two instead of one doesn't drive the BOM up significantly for a one-off project.
As you can see, the Pi's hardware, and the library support available for it, results in a reasonably smooth effort-and-difficulty gradient throughout the process. More to the point, almost every step produces an immediately usable artifact, which is great for a self-paced teaching project, both to maintain motivation and to allow for auto-titration to level of interest.
If I'm reading the Micro:Bit right, it provides something similar, but with an even shorter "time to first blinkenlight" -- instead of needing a basic understanding of the Unix shell and the nous to wire up an LED, you just plug the Micro:Bit (and its onboard LED matrix) into a computer, load up the web IDE, and you're off and scampering.
[1] http://i.imgur.com/SFTdBMt.jpg [2] http://amzn.to/1S65zoU [3] http://www.auctoris.co.uk/2012/07/19/gpio-with-sysfs-on-a-ra... [4] http://www.airspayce.com/mikem/bcm2835/ [5] http://mecrisp.sourceforge.net/mecrimus-b.htm
What provisions are there for staff to keep some to plan lessons with and administrators to make sure the network is ready?
When can I buy a backup class set for when kids forget to bring them to a lesson the teacher required its use?
Looks like the prior iteration would be lots easier to connect outside sensors/devices to it. The released board has some funky edge connector on it. I'm guessing there will be a huge secondary market of people selling addon's that use the connector.
The final design uses 32-bit ARM Cortex-M0, which makes sense but I kind of liked the old prototype that was AVR based.
Edit: actually, it looks like even the radio registers may be (somewhat) documented, with enough detail that someone's written a half-completed open source BLE stack for it. This is the most open BLE chip I think I've seen.
http://www.wired.co.uk/news/archive/2015-03/12/bbc-micro-bit...
While the BBC instigated the project, other organisations - including the chip designer ARM, Barclays Bank, Samsung, Microsoft and Lancaster University - are also providing expertise and funds to bring the scheme to fruition.
From a Wired article[0]: We wanted this to be cheap enough to give away," Baker adds. "It's our partners that are funding this, but the funding level is because this is a very low-cost venture. We've gone for that sweet spot of 'what's the minimum we can put on there that gave the maximum benefit for the kids?'"
[0]http://www.wired.co.uk/news/archive/2015-03/12/bbc-micro-bit...