This Knowledge Base article is specifically for people who make accessories for the micro:bit. Please also see our general user information about the micro:bit motion sensor change.


We’d like to start by saying thanks for your support of the micro:bit - the ecosystem of diverse accessories around the micro:bit is one of the project’s great strengths.


It is important that we have an easy way to update you about any future hardware revisions, so please sign up to our ‘Device and DAL’ mailing list. This list will be used to give notifications about hardware revisions, or software changes as early as possible: though we don’t anticipate anything soon, it is clear from this revision that such a list is useful.


Accessories that make use of the large pads/holes, or any of the pins except the I2C pins will be unaffected by this revision.

There are inevitably small layout differences in the placement of the sensor, and the possible implications of these is covered below.

If you publish hex files for demonstrating your accessories, then please see our guide for content publishers that covers the need to update hex files


There are a few considerations for people who have made accessories.


Use of the shared I2C bus

The motion sensors on the board are on the same I2C bus as the edge connector I2C pins. This means that if you have an accessory that uses I2C on this bus, you need to check it won’t clash with the new sensors.

Because we want to avoid having to do another revision in the future, we are designing in two possible sensor devices, but all micro:bits will ship with only one combined magnetometer and accelerometer. The DAL will automatically select which driver to instantiate (and hence this will work in MicroPython and MakeCode without any issues).

Here is a table of addresses used by the micro:bit



Accelerometer
Compass (Magnetometer)
micro:bit v1.3
0x1D (0x3A/0x3B)
0x0E (0x1C/0x1D)
micro:bit variant 1
0x19 (0x32/0x33)
 0x1E (0x3C/0x3D)
micro:bit variant 2
0x1E (0x3C/0x3D)
0x1E (0x3C/0x3D)


Overall, this means 0x1D, 0x0E (from v1.3), 0x1E and 0x19 (for the revision) are reserved for onboard use.


We have checked all the micro:bit ‘approved packages’ to ensure that the new addresses do not clash with existing accessories, and have not found any accessories that clash.


Location of the compass on the board

If you make an accessory that uses the presence of a magnet against the board for some reason, you should be aware that the compass has moved slightly - it will still behave in the same way, but we suggest that if you have software packages to support these accessories you test them with both versions of the board in case minor threshold tweaks are necessary.


If you believe you will need early access to a revised BBC micro:bit to test your accessories with, please contact us.


If you make a case or accessory that holds the battery in place near the back of the board, you will need to ensure that the user knows how to re-calibrate the compass. The compass calibration block is now callable explicitly by the user in MakeCode so that they can choose to calibrate the compass directly after attaching the battery back.