The micro:bit hardware is based on the ARM-mbed platform. It has an application processor with lots of on-chip perhipherals. Some off-chip peripherals are connected to this chip. There is an interface processor connected to the application processor, and it is the interface processors job to manage communications over the USB and to support the drag-and-drop code-flashing process. The interface processor does not connect to any of the micro:bit peripherals.
Two key pieces of information to help understand the internals of the micro:bit are:
The edge connector is the main interface to external components attached to the micro:bit.
This interface has a range of digital, analog, touch, pwm, and serial communications interfaces.
10Mohm weak pull-up resistors are fitted on P0 P1 and P2 for use in touch sensing mode, where they provide a weak pull-up to the supply providing a default high input and the user touching the GND pad pulls the pin down towards 0V, providing a low input. When in non touch modes, these pads have stronger internal pull-downs enabled in the software, so that the default input state when not connected is ‘low’.
Guard pins are provided both sides of the 3V and GND pads, so that shorting by crocodile clips does not degrade the features of the device by causing spurious inputs.
Both the front and the back of each of the 5 round ring pads are electrically connected.
A number of pins have alternate assigned functions for use by the micro:bit, many of these can be disabled in software to gain more general purpose IO pins.
The LED matrix is physically layed out as a 5x5, but it is implemented in hardware as a scanned matrix of 9x3 (i.e. 9 colums by 3 rows). Row 2 Col 8, and Row 2 Col 9 are not used.
The LED matrix is driven via a high-speed multiplex generated by application processor software. This software also uses the LED Row and Col pins to implement the light sensing feature. Some of the Columns appear on the edge connector, so if you want to use extra GPIO pins, you have to disable the display in software.
The Interface sheet shows the KL26 processor, which is an ARM processor that implements the USB protocol for the USB connector. This provides a method for loading code onto the application processor, using a drag and drop interface.
The USB protocol handler on this processor implements a Mass Storage Class device in order to offer the drag and drop code load interface. It also provides a Connected Device Class that allows a serial port interface to be used across the USB.
The interface processor also contains an on-board regulator that steps down the USB voltage to 3.3V suitable for powering the rest of the micro:bit, and you can draw 120mA from this processor regulator. A TVS device is fitted to suppress ESD spikes and out of range voltages that could be present on the USB connector.
This processor does not have any connection to the GPIO pins on the micro:bit.
There are two sensor IC’s on the micro:bit, an accelerometer and a magnetometer. The accelerometer measures acceleration in 3 axies, and the magnetometer can be used as a compass, as well as a magnetic field detector.
Both devices are connected to the application processor I2C bus, and this bus is also connected to two pins on the edge connector. I2C pullup resistors are pre-fitted on the board.
The magnetometer can generate one processor interrupt for the application processor, and the accelerometer can generate two different processor interrupts for the application processor.
Note, the physical orientation of these two IC’s is important for binary compat with the driver code in the application processor, which assumes a particular physical orientation in it’s calculations.
Power to the micro:bit can be provided by 3 sources: The USB, the battery connector, and the 3V pad on the edge connector.
For USB powering, the KL26 interface processor has an on-board regulator that brings the external USB voltage into the correct range for the micro:bit board.
A low-Vf diode (in this case about 0.23V max) is used to switch between sources. The diode prevents back-powering of any source from any other source.
Care should be taken if powering the micro:bit from the 3V pad on the edge connector, as the trace from that pad is connected directly to the IC’s on the board. Please check the datasheets for the appropriate IC’s for their maximum tolerable voltages.
The main application processor runs both the runtime code and user code, as a single binary image.
Communications via USB serial is done via the interface processor.
All GPIO pins on the edge connector are serviced by this application processor.
All bluetooth features are provided by a SoftDevice stack loaded into this processor.
The nRF51 application processor is where user programs run. A single, complete application including user code, runtime code and bluetooth stack is loaded and run directly from on chip flash memory. All user accessible GPIO pins are provided by this processor. There is an onboard 2.4GHz radio engine used to provide Bluetooth capabilities via an off-chip aerial.
item | details |
---|---|
Model | Nordic nRF51822-QFAA-R rev 3 |
Core variant | ARM Cortex-M0 32 bit processor |
Flash ROM | 256KB |
RAM | 16KB |
Speed | 16MHz |
Debug | SWD, jlink/OB |
The on board 2.4GHz transciever supports Bluetooth communications via the Nordic S110 SoftDevice, which provides a fully qualified Bluetooth low energy stack. This allows the micro:bit to communicate with a wide range of Bluetooth devices, including smartphones and tablets.
item | details |
---|---|
Stack | Bluetooth 4.1 with Bluetooth low energy |
Band | 2.4GHz ISM (Industrial, Scientific and Medical) 2.4GHz..2.41GHz |
Channels | 50 2MHz channels, only 40 used (0 to 39), 3 advertising channels (37,38,39) |
Sensitivity | -93dBm in Bluetooth low energy mode |
Tx Power | -20dBM to 4dBm in 4 dB steps |
Role | GAP Peripheral |
Congestion avoidance | Adaptive Frequency Hopping |
Profiles | 1 BBC micro:bit profile |
The on board 2.4GHz transciever supports a number of other radio communications standards, including the proprietary Nordic Gazell protocol. This protocol provides a very simple small-packet broadcast radio interface between other devices that support this proprietary protocol, such as other micro:bit devices. The ‘radio’ interface that appears in a number of the languages on the micro:bit is built on top of this Gazell protocol. Additionally, the micro:bit runtime software adds a ‘group code’ to each data payload, allowing for simple user managed device addressing and filtering to take place.
item | details |
---|---|
Protocol | Nordic Gazell |
Freq band | 2.4GHz |
Channel rate | 1Mbps or 2Mbps |
Encryption | None |
Channels | 101 (0..100) |
Group codes | 255 |
Tx power | Eight user configurable settings from 0(-30dbm) to 7 (+4dbm) |
Payload size | 32 (standard) 255 (if reconfigured) |
The two buttons on the front of the micro:bit, and the 1 button on the back, are tact momentary push to make buttons. The back button is connected to the KL26 interface processor and to the nRF51 processor for system reset purposes. This means that the application will reset regardless of if it is powered from USB or from battery.
Front buttons A and B can be programmed in the user application for any purpose. A and B are debounced by software, which also includes short press, long press, and ‘both A+B’ press detection. Buttons operate in a typical inverted electrical mode, where a pullup resistor ensures a logical ‘1’ when the button is released, and a logical ‘0’ when the button is pressed. Both A and B buttons are connected to GPIO pins that are also accessible on the micro:bit edge connector.
item | details |
---|---|
Type | 2 tactile user buttons, 1 tactile system button |
Debounce | (A & B) software debounced, 54ms period |
Pullup | (A & B) external 4K7, (System) 10K |
The display is a 5x5 array of LEDs. It is connected to the micro:bit as a 3x9 matrix. Runtime software repeatedly refreshes this matrix at a high speed, such that it is within the user persistence of vision range, and no flicker is detected. This LED matrix is also used to sense ambient light, by repeatedly switching some of the LED drive pins into inputs and sampling the voltage decay time, which is roughly proportional to ambient light levels.
item | details |
---|---|
Type | minature surface mount red LED |
Physical structure | 5x5 matrix |
Electrical structure | 3x9 |
Intensity control | 10 steps |
Intensity range | TBC |
Sensing | ambient light estimation via software algorithm |
Sensing Range | TBC, 10 levels from off to full on |
Colour sensitivity | red centric, red is 700nm |
The accelerometer is a separate chip that provides 3-axis sensing. It also includes some on board gesture detection (such as fall detection) in hardware, and additional gesture sensing (e.g. logo-up, logo-down, shake) via software algorithms. It is connected to the application processor via the I2C bus.
item | details |
---|---|
Model | Freescale MMA8653FC |
Features | 3 axis, 2/4/8g ranges |
Resolution | 10 bits (0..1023) |
Max output data rate | 800Hz |
On board gestures | ‘freefall’ |
Other gestures | Other gestures are implemented by software algorithms in the runtime. |
The magnetometer is a separate chip that provides magnetic field strength sensing. A software algorithm in the standard runtime uses the on board accelerometer to turn these readings into a board orientation independent compass reading. The compass must be calibrated before use, and the calibration process is automatically initiated by the runtime software. This device is connected to the application processor via the I2C bus.
item | details |
---|---|
Model | Freescale MAG3110 |
Max update rate | 80Hz |
Full Scale range | 1000uT |
Sensitivity | 0.10uT |
item | details |
---|---|
Type | on-core nRF51 |
Sensing range | -25C .. 75C |
Resolution | 0.25C steps |
Accuracy | +/-4C (uncalibrated) |
The edge connector brings out many of the GPIO circuits of the application processor. Some of these circuits are shared with other functions of the micro:bit, but many of these extra circuits can be re-allocated to general purpose use if some software features are turned off. Note: the nRF51 data sheet states that GPIO pins may be in std-drive (0.5mA) and high-drive (5mA) mode, with a maximum of 3 pins in high-drive mode at any one time.
item | details |
---|---|
Rings | 3 large IO rings and two large power rings, 4mm plug and crocodile clip compatible |
GPIO features | 19 assignable GPIO pins |
2 are assigned to the on board I2C interface | |
6 are used for display or light sensing feature | |
2 are used for on board button detection | |
1 is reserved for an accessibility interface | |
19 may be assigned as digital input or digital output | |
19 may be assigned for up to 3 simultaneous PWM channels | |
19 may be assigned for 1 serial transmit and 1 serial receive channel | |
6 may be assigned as analog input pins | |
3 may be assigned to an optional SPI communications interface | |
3 may be assigned for up to 3 simultaneous touch sensing inputs | |
ADC resolution | 10 bit (0..1023) |
Edge Connector | Edge connector data sheet |
Pitch | 1.27mm, 80 way double sided. |
Pads | 5 pads, with 4mm holes |
Power to the micro:bit may be provided via the USB connection, via the interface chip (which has an on-board regulator), or via a battery plugged into the top connector. It is also possible (with care) to power the micro:bit from the 3V pad at the bottom. The 3V pad at the bottom can be used to supply a small amount of power external circuits.
item | details |
---|---|
Operating range | 1.8V .. 3.6V |
USB current | 120mA max |
Onboard Peripherals budget | 30mA |
Battery connector | JST X2B-PH-SM4-TB |
Battery current | TBC |
Max current provided via edge connector | 90mA |
The interface chip handles the USB connection, and is used for flashing new code to the micro:bit, sending and receiving serial data back and forth to your main computer.
item | details |
---|---|
Model | Freescale MKL26Z128VFM4 |
Core variant: | ARM Cortex-M0+ |
Flash ROM | 128KB |
RAM | 16KB |
Speed | 16MHz |
Debug capabilities | SWD |
The micro:bit has an on board USB communications stack, that is built into the firmware of the interface chip. This stack provides the ability to drag and drop files onto the MICROBIT drive in order to load code into the application processor. It also allows serial data to be streamed to and from the micro:bit application processor over USB to an external host computer, and supports the CMSIS-DAP protocol for host debugging of application programs.
item | details |
---|---|
Connector | USB micro, MOLEX_47346-0001 |
USB version | 1.1 Full Speed device |
Speed | 12Mbit/sec |
USB classes supported | Mass Storage Class (MSC) |
Communications Device Class (CDC) |
The interface processor can be used with special host tools to debug code that is running on the application processor. It connects to the application processor via 4 signal wires. The KL26 interface processor code can also be debuged via it’s integral SWD software debug interface, for example to load initial bootloader code into this processor at manufacturing time, or to recover a lost bootloader.
item | details |
---|---|
Protocol | CMSIS-DAP |
Options | JLink/OB (via different firmware) |
We have some nice 2D and 3D CAD drawings and models of the micro:bit including all the important dimensions. These models can be used as a basis for generating really nice marketing and project images of the micro:bit, but also as a basis for accurate manufacture of attachments e.g. via 3D printing.
item | details |
---|---|
Dimensions | 5cm(w) 4cm(h) |
Weight | 5g |
Did you know that you can code your BBC micro:bit using Blocks, JavaScript, and Python?
The MakeCode editor provided by Microsoft makes it easy to program your micro:bit with blocks and JavaScript.
We have recently updated the editor, and the previous version is still available for anyone that needs it. If you have any issues accessing the editor, check that it isn't blocked in your school.
Let's Code | Reference | Lessons |
---|
Our Python editor is perfect for those who want to push their coding skills further. A selection of snippets and a range of premade images and music give you a helping hand with your code. Powered by the global Python Community.
Let's Code | Reference |
---|
The micro:bit apps let you send code to your micro:bit wirelessly using Bluetooth. No leads needed! Learn more about using Applications.
Program the micro:bit using the MakeCode editor on your Windows 10 device. In addition to the familiar features of the web editor, the app lets you program your micro:bit over USB (without needing to drag-and-drop the file onto the micro:bit drive) and directly read serial data from your micro:bit for data logging and other fun experiments!
Learn to code the micro:bit in Swift with our interactive 'book' for iPad. Discover the fundamentals of code while having fun with your micro:bit!