From 3fcfab2367cde23581344b50f5044372dcae140e Mon Sep 17 00:00:00 2001 From: Philip Howard Date: Tue, 13 Oct 2020 15:24:31 +0100 Subject: [PATCH 01/21] Update reference-design.md --- hardware/reference-design.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/hardware/reference-design.md b/hardware/reference-design.md index 778d7ff..c0c1a40 100644 --- a/hardware/reference-design.md +++ b/hardware/reference-design.md @@ -13,10 +13,10 @@ review-with: jonnya ## Reference Design -As well as learning about how the micro:bit is designed from the [schematic](../../hardware/schematic/), +In addition to learning about how the micro:bit is designed from the [schematic](../../hardware/schematic/), we want to enable people to build their own hardware products and projects based on the micro:bit. This means taking all the hardware that you've connected -to your micro:bit and putting down on one circuit board. +to your micro:bit and putting it down on one circuit board. ![micro:bit plant monitor](/docs/hardware/assets/referencedesign-57055.png){:width="40%"} @@ -38,7 +38,7 @@ programmer to program all your micro:bit based designs! ## Reference Design Features * **100% binary compatible with the micro:bit, including all the same hardware -features: 3xbuttons, 5x5 display, motion sensor)** +features: 3 buttons, 5x5 display, motion sensor)** * Released under the [SolderPad License 0.51](http://solderpad.org/licenses/SHL-0.51/) (based on Apache-2.0, but tailored towards Open Hardware) * Based on pre-certified [nRF51822 module](#module-choice) for ease of use @@ -49,8 +49,7 @@ things that you don't need * programming the KL26 and the nRF51822 * Modified power supply for more flexible use, standalone regulator * drive more components without additional power supply - * Use lithium ion polymer batteries as well as AAA (which you shouldn't do - on the micro:bit) + * Use lithium ion polymer or AAA batteries (neither should be used with the micro:bit) * Design available in Eagle, Altium and KiCad formats * Coin cell connection and holder option ([but beware the dangers of coin cells to children](http://www.bbc.co.uk/news/health-37410343)) @@ -62,18 +61,18 @@ without modification. ## Modularity -The reference design is laid out in a very modular way, so that someone working +The reference design is laid out in a modular way, so that someone working with it can easily customise the board to include only the parts they need. ![the reference design is modular](/docs/hardware/assets/referencedesign-9cfb5.png). -For example, if you want to make something really tiny that doesn't make use +For example, if you want to make something tiny that doesn't make use of all the expansion or the LEDs, you could make use of the 'bare minimum subset' section of the board, and have a separate programmer. ## Module Choice -There are multiple vendors of Bluetooth pre-certified modules based on the nRF51822. But because the micro:bit uses every pin on the nRF51822, only modules that exposes all of the GPIO of the chip can be used. We have initially chosen the [Raytac MDBT40-256V3](http://www.raytac.com/product/ins.php?index_id=63), which is available from outlets like +There are multiple vendors of Bluetooth pre-certified modules based on the nRF51822. But because the micro:bit uses every pin on the nRF51822, only modules that expose all of the GPIO can be used. We have selected the [Raytac MDBT40-256V3](http://www.raytac.com/product/ins.php?index_id=63), which is available from outlets like Seedstudio, and commonly used on things like Adafruit BLE boards. This design is fully open source, and we're happy to accept pull requests for @@ -91,7 +90,7 @@ then you could choose a range of other modules. ## Software Bringup -Unlike a micro:bit, your device won't come pre-flashed! Neither of the MCUs will +Unlike a micro:bit, your device won't come pre-flashed. Neither of the MCUs will have any software, so you'll need a debugger, or to ask the people manufacturing your board to flash it for you. From 84554e06a09a4ffada1466661539c9768f05d127 Mon Sep 17 00:00:00 2001 From: Philip Howard Date: Tue, 13 Oct 2020 15:33:42 +0100 Subject: [PATCH 02/21] Corrections and tweaks to index.md --- software/index.md | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/software/index.md b/software/index.md index f345f74..46c9a3d 100644 --- a/software/index.md +++ b/software/index.md @@ -24,7 +24,7 @@ Typically, a program is written on the host computer and then transferred to the micro:bit over USB. There are actually two chips on the -micro:bit, one that is running the **DAPlink** software entirely to facilitate the flashing (KL26v1/KL27V2) and one that actually runs the user's code (nRF51v1/nRF52V2). +micro:bit, one that is running the **DAPlink** software to facilitate flashing (KL26v1/KL27V2) and one that runs the user's code (nRF51v1/nRF52V2). ![Software flow](/docs/software/assets/software-program.svg) @@ -34,9 +34,9 @@ micro:bit, one that is running the **DAPlink** software entirely to facilitate t The 'high level' programming languages for the micro:bit break down into two broad categories -* Compiled languages: your program is compiled to Arm assembler or some other kind of bytecode before being copied onto the micro:bit. +* Compiled languages: your program is compiled to Arm assembler or bytecode before being copied onto the micro:bit. -* Interpreted Languages: both your script and an interpreter for it are copied onto the micro:bit. Because the interpreter is on the micro:bit itself, these languages typically also allow you to program the micro:bit 'live' over USB by typing commands. +* Interpreted Languages: both your script and an interpreter for it are copied onto the micro:bit. Because the interpreter is on the micro:bit itself, these languages typically allow you to program the micro:bit 'live' over USB by typing commands. ### Compiled languages @@ -46,8 +46,8 @@ In order to ensure that the micro:bit online code editors could scale to support This process is explained in full in the [In browser compiler](/software/in_browser_compiler) page, and in fantastic detail at [TouchDevelop in 208 bits](https://www.touchdevelop.com/docs/touch-develop-in-208-bits). -These in-browser-compilers do not compile the whole of the software stack, -but just the user's script. Function calls and low level functions are +These in-browser-compilers do not compile the whole software stack, +only the user's script. Function calls and low level functions are handled by the micro:bit runtime and Mbed. A pre-compiled runtime image is included in the browser and concatenated with the compiled script before being presented for download. @@ -62,8 +62,7 @@ There is also a [port of the Javascript interpreter Espruino](http://www.espruin ## Coding environments and IDEs -There are a huge number of possible coding environments that you can use -to program the micro:bit. +There are a huge number of possible coding environments that you can use to program the micro:bit. Among the most popular are the official ones listed at http://microbit.org/code as well as the offline Mu editor. @@ -97,7 +96,7 @@ Each of the coding environments generates a special file called a .hex file, whi contains code for your micro:bit, written in a format it can understand. The micro:bit code is updated by dragging a .hex file onto the MICROBIT drive -that appears on your computer, when you plug in the micro:bit. It looks just like a +that appears on your computer when you plug in the micro:bit. It looks just like a USB memory stick to your computer (the flash drive is actually emulated by the [DAPLink](/software/daplink-interface) software) @@ -117,10 +116,10 @@ flashed. This code consists of various lower level software components, such as: facilities of the micro:bit into a common set of functions that can be used by all coding languages. The high level block functions in MakeCode map almost directly onto equivalent C/C++ calls in the runtime. MicroPython requires less use of the DAL. -* [Arm Mbed](./runtime/) The Arm mbed SDK provides standardised drivers for MCU peripherals and abstracts most of the low level hardware details of different MCUs, meaning that micro:bit software can be easily run on other hardware. This -includes an abstraction for BLE, the Mbed BLE api. +* [Arm Mbed](./runtime/) The Arm Mbed SDK provides standardised drivers for MCU peripherals and abstracts most of the low level hardware details of different MCUs, meaning that micro:bit software can be easily run on other hardware. This +includes an abstraction for BLE, the Mbed BLE API. -* [Nordic nRF5 SDK](./runtime/#nordic-nrf5-sdk) mbed itself builds on top of the +* [Nordic nRF5 SDK](./runtime/#nordic-nrf5-sdk) Mbed itself builds on top of the Nordic nRF5 SDK, the component provided by Nordic to assist programmers in using their hardware. * [MicroPython interpreter](./micropython) If you are using Python, then the whole MicroPython language interpreter is joined to your application to make up the .hex file. MicroPython on the micro:bit uses Mbed underneath, though MicroPython also runs on a wide range of other hardware platforms. From fc894658dc3c4d266c121b113e5fb6d63f4507c8 Mon Sep 17 00:00:00 2001 From: Philip Howard Date: Tue, 13 Oct 2020 15:35:08 +0100 Subject: [PATCH 03/21] Small word choice tweak for index.md --- software/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/software/index.md b/software/index.md index 46c9a3d..63bcd0b 100644 --- a/software/index.md +++ b/software/index.md @@ -3,7 +3,7 @@ layout: page order: title: micro:bit software heading: The micro:bit software ecosystem -description: There are a huge range of software platforms and tools that make the micro:bit work as well as it does. This page outlines what they are and redirects you to more detailed explanations of the different projects. +description: There are a huge range of software platforms and tools that make the micro:bit work as well as it does. This page outlines what they are and directs you to more detailed explanations of the different projects. permalink: /software/ ref: software lang: en From cdbc4ed0f0a66dac3c21b8f9ce438165f6df6968 Mon Sep 17 00:00:00 2001 From: Philip Howard Date: Tue, 13 Oct 2020 15:51:19 +0100 Subject: [PATCH 04/21] Update hex-format.md --- software/hex-format.md | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/software/hex-format.md b/software/hex-format.md index 99b10cc..3beebf3 100644 --- a/software/hex-format.md +++ b/software/hex-format.md @@ -13,23 +13,27 @@ review-with: carlospa The .hex file is in [intel-hex format](https://en.wikipedia.org/wiki/Intel_HEX). Intel hex consists of records of data, with the address in memory to store the data at the start. All data is hex-ascii encoded. All lines start with a : character. All lines end with a checksum byte that can be used to verify the integrity of the data. -A micro:bit .hex file usually starts writing data to the same fixed location in memory, so depending on the toolchain, we might expect the first line of the file to start like this: +A micro:bit .hex file usually starts writing data to the same fixed location in memory. Depending on the toolchain, we might expect the first line of the file to start like this: :020000040000FA ## Universal Hex files -The latest board revision introduces a superset of the Intel-Hex format that enables compatibility across processor variants. A Universal Hex is a file that contains the binary data for both micro:bit v1 and micro:bit V2, in a format that DAPLink can process to only write to memory the data relevant to its micro:bit board. +The latest board revision introduces a superset of the Intel-Hex format that enables compatibility across processor variants. A Universal Hex is a file that contains the binary data for both micro:bit v1 and micro:bit V2, in a format that DAPLink can process and write to memory only the data relevant to its micro:bit board. A **Universal Hex** hex file will work on a v1 or V2 board. -A clear indication that you are working with this format is that a compiled .hex file will be ~1.8Mb as opposed to ~700Kb in size. +A clear indication that you are working with this format is that the compiled .hex file will be ~1.8Mb instead of ~700Kb in size. -A [Universal Hex JavaScript Library](https://github.com/microbit-foundation/microbit-universal-hex) has been written to implement the format and associated detailed [specification of the Universal Hex format](https://github.com/microbit-foundation/universal-hex/). +The following resources will help you implement **Universal Hex** support in your application: + +* [Universal Hex JavaScript Library](https://github.com/microbit-foundation/microbit-universal-hex) +* [Detailed specification of the Universal Hex format](https://github.com/microbit-foundation/universal-hex/). ### Cross device compatibility -The Universal Hex format has been developed to ensure the best experience for users when moving between board variants. If a V1 only .hex is detected on a V2 board it will throw an error, but a V2 only hex will fail silently on a V1. This is very confusing to users and should be avoided. -There may be cases where it is not possible to support both boards, for example an accessory that is designed only to target the V2 board variant. In these cases, to ensure the best user experience when flashing a hex file to any board variant, the file should always include an error message to signify board incompatibility to the user. +Including *both* .hex formats within a Universal Hex ensures the best experience for users when moving between board variants. If a V1 only .hex is detected on a V2 board it will throw an error, but a V2 only hex will fail silently on a V1. This is confusing to users and should be avoided. + +There may be cases where it is not possible to support both boards, for example an accessory that targets only the V2 board variant. In these cases, to ensure the best user experience when flashing a hex file to any board variant, the file should always include an error message to signify board incompatibility to the user. We have created a [standalone error hex](/docs/software/assets/stand-alone-error-v1.hex) that can be combined with a V2 only hex to produce a Hex that will work on a V2 board, but error if used on a v1. @@ -42,7 +46,7 @@ This example shows the worst, best and acceptable (when support for V1 is imposs These examples show the process of creating a Universal Hex. A V1 and V2 hex can be combined to produce a Universal Hex. If you can only support a V2 board,the standalone error can be combined with a V2 hex to produce a hex that will fail with an error on a V1 board, rather than failing silently. -|Universal Hex format |V2 only Hex format | +|Universal Hex format |V2 only Hex format | |-----------------------------------------------------------|-----------------------------------------------------------| | ![Universal Hex error 2](/docs/software/assets/uhex2.png) | ![Universal Hex error 3](/docs/software/assets/uhex1.png) | @@ -53,8 +57,8 @@ If you are building .hex files for both board variants, you will need to use the See the [Micropython Hex file reference](https://microbit-micropython.readthedocs.io/en/latest/devguide/hexformat.html) for up to date information. -MicroPython builds take a firmware.hex image (the MicroPython pre-compiled image) and appends your script to the end of it, in a fixed 8K region at a known address. When MicroPythons starts to run on the micro:bit, it looks for a signature at this fixed location, and uses that to determine whether to run the script, or drop directly to the REPL prompt. +MicroPython builds take a "firmware.hex" image (the MicroPython pre-compiled image) and appends your script to the end of it, in a fixed 8K region at a known address. When MicroPythons starts to run on the micro:bit, it looks for a signature at this fixed location, and uses that to determine whether to run the script, or drop directly to the REPL prompt. ## Microsoft MakeCode Editor -Hex files generated by the [MakeCode Editor](https://makecode.microbit.org) have embedded meta-data inside the .hex file. This is a [JSON encoded blob with various data about the script](https://github.com/Microsoft/pxt/blob/437f53ca6311335c7f3f75a062ec1079b4e7806a/docs/source-embedding.md), and also the source code program. This may be compressed, and it is stored inside the flash memory of the micro:bit (but only if space is available in the flash memory). But it is always inside the .hex file. This embedded source code program ensures that when you drag and drop the .hex file onto the originating editor, it can recover the source program again. +Hex files generated by the [MakeCode Editor](https://makecode.microbit.org) include the source code of the program in addition to embedded metadata. This metadata comprises a [JSON encoded blob with information about the script](https://github.com/Microsoft/pxt/blob/437f53ca6311335c7f3f75a062ec1079b4e7806a/docs/source-embedding.md). Both the metadata and source code may be compressed and, space permitting, are stored inside the flash memory of the micro:bit. When you drag and drop a MakeCode .hex file onto the originating editor it can recover the source code, allowing the program to be modified and saved back to a .hex. From 65db9bc6c119d9d65e4f9da10fef15e9c4da8b8d Mon Sep 17 00:00:00 2001 From: Philip Howard Date: Tue, 13 Oct 2020 16:05:50 +0100 Subject: [PATCH 05/21] Fix losenge to elongated The geometric form of a lozenge appears to be a diamond. The edible lozenge appears in many forms (though my mind went right to Lockets!). "Elongated" seems to be less subject to interpretation, since the more geometrically correct "stadium" is a relatively obscure term. --- hardware/powersupply.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hardware/powersupply.md b/hardware/powersupply.md index 8435263..fab64d1 100644 --- a/hardware/powersupply.md +++ b/hardware/powersupply.md @@ -15,9 +15,9 @@ lang: en Power to the micro:bit may be provided via: - USB connection via the interface chip (which has an on-board regulator) -- A battery plugged into the JST connector. -- The 3V and GND pins on the Edge Connector -- The two losenge shaped pads on the rear right of the board +- A battery plugged into the JST connector +- The 3V and GND pins on the edge connector +- The two elongated pads on the rear right of the board Power from the micro:bit can be provided by the 3V and GND pins to small external circuits. @@ -147,4 +147,4 @@ The BAT60A devices have a low Vf rating, you can read about this in the [BAT60A datasheet](http://www.infineon.com/dgdl/Infineon-BAT60ASERIES-DS-v01_01-en.pdf?fileId=db3a304313d846880113def70c9304a9) ### Power Supply Architecture V2 TBC - \ No newline at end of file + From a298f5e471f34edcae2d3ad6770640dfde8c54a2 Mon Sep 17 00:00:00 2001 From: Philip Howard Date: Tue, 13 Oct 2020 16:16:11 +0100 Subject: [PATCH 06/21] Update powersupply.md More losenge than ever before! --- hardware/powersupply.md | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/hardware/powersupply.md b/hardware/powersupply.md index fab64d1..a5eb0a9 100644 --- a/hardware/powersupply.md +++ b/hardware/powersupply.md @@ -21,14 +21,13 @@ Power to the micro:bit may be provided via: Power from the micro:bit can be provided by the 3V and GND pins to small external circuits. -It's is important to stay within the design parameters of the board: +It is important to stay within the design parameters of the board: -* When powered from USB, the on board interface chip (KL26v1/KL27V2) uses it's on chip -regulator to provide power, and this chip is rated at a maximum of 120mA. +* When powered from USB, the on board interface chip (KL26v1/KL27V2) uses its on-chip +regulator to provide power. This chip is rated at a maximum of 120mA. -* The on-board current budget will vary depending on the use of the display, -the Bluetooth, microphone, speaker and other peripherals. You should allow a worst case budget -of 30mA for when all on board peripherals are in use, leaving v190mA/V2270mA for circuits +* The on-board current budget will vary depending on the use of the display, Bluetooth, microphone, speaker and other peripherals. You should allow a worst-case budget +of 30mA for when all on-board peripherals are in use, leaving v190mA/V2270mA for circuits plugged into the edge connector. * When powered from a battery, the KL chip is not powered up and the USB Indicator LED will not light up. @@ -37,10 +36,10 @@ plugged into the edge connector. ### Key Voltages -As taken from each of the chip data sheets, it can be seen that different +As taken from each of the chip datasheets, it can be seen that different devices have slightly different operating voltage ranges and absolute -maximum voltages. Manufacturers state the operating voltage range as well -as the absolute maximum tolerable by the device. You should never exceed +maximum voltages. Manufacturers state the operating voltage range and +the absolute maximum tolerable by the device. You should never exceed the operating voltage range of any of the devices. ### v1 revision @@ -83,15 +82,15 @@ current from the regulated supply is 120mA. Some of this current is required to run on-board devices, such as the KL26 itself, the nRF application processor, the motion sensor, and the LED display. When Bluetooth is enabled, the current consumption of the nRF increases slightly. You should budget your current requirements for anything you attach to the micro:bit v1 to not exceed about -90mA to give enough safe headroom for worst case with all on board peripherals +90mA, giving enough safe headroom for worst case with all on-board peripherals in use. -This means that if you require more than 90mA from the edge connector, +If you require more than 90mA from the edge connector, (e.g. driving lots of NeoPixels or a small motor) these should have power supplied -to them externally. You can back-power the micro:bit via it's 3V pad, but please +to them externally. You can back-power the micro:bit via its 3V pad, but please be sure to use a properly regulated supply and a protection diode, as explained below, so that your micro:bit always has a supply within the operating range of -all the on board peripherals and the supplies are not able to power each other. +all the on-board peripherals and the supplies are not able to power each other. It is advised that you do not power the micro:bit from USB battery packs. This is because some makes and models of USB battery packs can generate out of range @@ -117,12 +116,12 @@ There is further information about the [battery connection and use](https://supp ### 3V Ring Powering The micro:bit may be powered from the 3V/GND rings on the edge connector. -There are also two losenge shaped pads on the far right of the back of the PCB +There are also two elongated pads on the far right of the back of the PCB that can be used to supply power (e.g. solderable pads for a 2xAAA holder that -has wires or pins at one edge). [The topmost losenge is 0V and the bottom most -losenge is 3V](../../accessories/making-accessories/#battery-pads). +has wires or pins at one edge). [The topmost pad is 0V and the bottom most +pad is 3V](../../accessories/making-accessories/#battery-pads). -When powering from the 3V ring or the losenge on the PCB, you should take +When powering from the 3V ring or the elongated pads on the PCB, you should take appropriate best practice precautions: 1. Fit an external protection diode (preferably with a low Vf rating) @@ -137,9 +136,9 @@ of over voltage protection, or proper regulation. ### Power Supply Architecture v1 The [schematic](/hardware/schematic/) shows the architecture of the power supply. -Key points to note are that there are two BAT60A diodes, one from the 3.3V +Note that there are two BAT60A diodes, one from the 3.3V supply from the KL26/27 interface chip, and one from the external battery connector. -Note that the 3V ring on the edge connector is V_TGT, which is the raw +The 3V ring on the edge connector is V_TGT, which is the raw supply provided to all on board chips, so this is why extra care should be taken when connecting directly to the 3V ring or the 3V losenge. From e274c3f9218cf59aec2f907b0671e823ce0e3782 Mon Sep 17 00:00:00 2001 From: Philip Howard Date: Tue, 13 Oct 2020 16:37:25 +0100 Subject: [PATCH 07/21] Update schematic.md --- hardware/schematic.md | 56 +++++++++++++++++++++---------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/hardware/schematic.md b/hardware/schematic.md index 0c24fc5..2734d18 100644 --- a/hardware/schematic.md +++ b/hardware/schematic.md @@ -13,13 +13,14 @@ review-with: jonnya ## Overview -This page discusses the micro:bit schematic and Bill of Materials (BOM), -which shows the electrical connections of the micro:bit and the components used in it. +This page discusses the micro:bit schematic and Bill of Materials (BOM). -The schematic is available from the BBC's [micro:bit hardware repository](https://github.com/bbcmicrobit/hardware) +The schematic details the electrical connections and components of the micro:bit. + +It is available from the BBC's [micro:bit hardware repository](https://github.com/bbcmicrobit/hardware) If you're looking to make something of your own based on the micro:bit, you might prefer to -use our ['Reference Design'](/hardware/reference-design/) which is based on a radio module and has space on the layout +use our ['Reference Design'](/hardware/reference-design/) which is based on a pre-certified nRF51-based radio module and has space on the layout for you to add your own components. ## Schematics @@ -29,6 +30,7 @@ for you to add your own components. - [V2 TBC](#) ### V2 pinmap + Whilst we work on the publication of the schematic for the latest revision, here is the pinmap and allocation of the nRF52833 | GPIO on nRF52833 | Allocation | KL27 Landing | Edge Connector name | @@ -69,20 +71,18 @@ Whilst we work on the publication of the schematic for the latest revision, here ## Key Features -Below, we've extracted some useful details about the hardware that anyone implementing +We've extracted some useful details about the hardware that anyone implementing software for the micro:bit, interfacing to it, or designing an add-on board for it should find useful. ### LEDS -The LED matrix is physically layed out as a 5x5. On the V2 board this is implemeted as a 5x5 matrix, but in the v1, this is implemented 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 LEDs are physically laid out as a 5x5 matrix. On the V2 board this is implemeted as a 5x5 matrix, but in the v1, this is implemented 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, as such you may see a difference in sensitivity between borad revisions. -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 LED matrix is multiplexed at high-speed by a software driver. +This software also uses the LED Row and Col pins to implement the light sensing feature, as such you may see a difference in sensitivity between board revisions. +Some of the Columns appear on the edge connector. If you want to use these as extra GPIO pins, you must disable the display in software. ### Interface @@ -96,8 +96,7 @@ the drag and drop code load interface. It also provides a Connected Device Class 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 120mAv1/300mAV2 from this -processor regulator. A TVS device is fitted to suppress ESD spikes and out of range voltages +to 3.3V suitable for powering the rest of the micro:bit. You can draw 120mAv1/300mAV2 from this 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. @@ -105,32 +104,32 @@ This processor does not have any connection to the GPIO pins on the micro:bit. ### Sensors There is one combined motion sensor IC on the micro:bit, that contains 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. +measures acceleration in 3 axes. The magnetometer can be used as a compass or a magnetic field detector. -The device is connected to the application processor [I2c bus](../i2c/), and for the v1 revision this [I2c bus is also shared](../i2c-shared/) to two pins on the edge connector. I2C pullup resistors are pre-fitted on the board. +The device is connected to the application processor [I2c bus](../i2c/), and for the v1 revision this [I2c bus is also connected](../i2c-shared/) 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 this IC is important for binary compatibility with the driver -code in the application processor, which assumes a particular physical orientation in it's calculations. +Note: the physical orientation of this IC is important for binary compatibility with the driver +code in the application processor, which assumes a particular physical orientation in its calculations. ### Power Supply -Power to the micro:bit can be provided by 3 sources: The USB, the battery connector, and the 3V pad +Power to the micro:bit can be provided by 3 sources: USB, the battery connector, or the 3V pad on the edge connector. -For USB powering, the KL26 interface processor has an on-board regulator that brings the external +For powering via USB, 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. +from that pad is connected directly to the ICs on the board. Please check the datasheets for the +appropriate ICs for their maximum tolerable voltages. @@ -140,7 +139,7 @@ The main application processor runs both the runtime code and user code, as a si Code is loaded into this processor via the interface processor. -Communications via USB serial is done via the interface processor. +USB serial communication is done via the interface processor. All GPIO pins on the [edge connector](../edgeconnector/) are serviced by this application processor. @@ -154,15 +153,15 @@ The nRF52V2 features additional NFC functionality on P0. 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. +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 +10Mohm weak pull-up resistors are fitted on P0, P1 and P2 for use in touch sensing mode. They +provide a weak pull-up to the supply, providing a default high input. The user touching the GND +pad and a given pin 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 +Guard pins are provided on 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. @@ -170,9 +169,10 @@ Both the front and the back of each of the 5 round ring pads are electrically co 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 V2 board revision has a notched edge connector to make it easier to connect crocodile clips and wire etc. This does not affect compatibility with peripherals with edge connector sockets. +The V2 board revision has a notched edge connector to make it easier to connect crocodile clips or wire. This does not affect compatibility with existing peripherals using edge connector sockets. ### Dimensions + The specific dminensions of the board are - 51.60mm(w) 42.00mm(h) 11.65mm(d) - JST connector to board 5.50mm From 8f754269e4739827fb687c06646d35212628189a Mon Sep 17 00:00:00 2001 From: Philip Howard Date: Tue, 13 Oct 2020 16:43:36 +0100 Subject: [PATCH 08/21] Remove spurious linebreaks from index.md These seem to occur all throughout the documentation and are an eldritch nightmare to work around since any rephrasing inevitably breaks the line-width. --- index.md | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/index.md b/index.md index 9710793..01954ab 100644 --- a/index.md +++ b/index.md @@ -10,43 +10,40 @@ post_filter: featured ## The micro:bit developer community site -This site aims to sit between a community wiki and a technical data sheet for the micro:bit. +This site aims to sit between a community wiki and a technical datasheet for the micro:bit. + The content is available to [edit on Github](http://github.com/microbit-foundation/dev-docs) and is [openly licensed through Creative Commons](https://github.com/microbit-foundation/dev-docs/blob/master/LICENSE.MD). -The site is maintained by the Micro:bit Educational Foundation in order to document the -hardware and software that make the micro:bit work the way it does. +The site is maintained by the Micro:bit Educational Foundation in order to document the hardware and software that make the micro:bit work the way it does. + +We hope to encourage contributions into these projects in order to broaden our ecosystem and the range of things people can invent with a micro:bit. -We hope to encourage contributions into these projects in order -to broaden our ecosystem and the range of things people can invent -with a micro:bit. +The Micro:bit Educational Foundation aims to be a 'responsible downstream' to the many open-source [software](https://tech.microbit.org/software/) projects that are used to build the micro:bit. -The Micro:bit Educational Foundation aims to be a 'responsible downstream' to the -many open source [software](https://tech.microbit.org/software/) projects that are used to build the micro:bit: much like -a good Linux distribution collates, tests, stabilises and releases combinations of -many diverse open source packages, the micro:bit Educational Foundation and the -micro:bit community present micro:bit users with a stable, tested release of all -the things you need to make the magical 'end-to-end' micro:bit experience. +Much like a good Linux distribution collates, tests, stabilises and releases combinations of many diverse open source packages, the micro:bit Educational Foundation and the micro:bit community present micro:bit users with a stable, tested release of all the things you need to make the magical 'end-to-end' micro:bit experience. ## Help us build it -If you'd like to help us make the micro:bit better, then there are a number of -ways that you can get involved. +If you'd like to help us make the micro:bit better, then there are a number of ways that you can get involved. ### Code + Contribute features and fixes to one of the upstream projects that the micro:bit relies upon: + * The micro:bit [Device Abstraction Layer (DAL/runtime)](https://lancaster-university.github.io/microbit-docs/) * The [MakeCode Editor](https://github.com/microsoft/pxt-microbit) * The [Python Editor](https://github.com/bbcmicrobit/PythonEditor) * [DAPlink](https://github.com/ARMmbed/DAPLink) ### Build -Help us build a brilliant hardware ecosystem around micro:bit - derivative boards, -cool accessories and add ons, or even suggestions for future versions of the micro:bit. + +Help us build a brilliant hardware ecosystem around micro:bit - derivative boards, cool accessories and add-ons, or even suggestions for future versions of the micro:bit. + * The [micro:bit schematic](/hardware/schematic/) and [reference design](/hardware/reference-design) are good places to start for making your own projects * The [accessories guide](https://microbit.org/buy/accessories/) gives you an idea of what's currently available. ### Write + * [Improve the documentation and this site](https://github.com/microbit-foundation/dev-docs), either reporting issues or adding documentation will be extremely helpful. - * Help build a community around micro:bit - join the [slack channel and Email list](/community/), -share the things you've created on twitter, blog about them! + * Help build a community around micro:bit - join the [slack channel and Email list](/community/), share the things you've created on twitter, blog about them! From b51ee17b9fdba16ba10a9dad214330f91b4098e2 Mon Sep 17 00:00:00 2001 From: Philip Howard Date: Tue, 13 Oct 2020 16:48:36 +0100 Subject: [PATCH 09/21] Update bitio.md --- software/bitio.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/software/bitio.md b/software/bitio.md index d4df010..d02898c 100644 --- a/software/bitio.md +++ b/software/bitio.md @@ -13,15 +13,19 @@ review-with: jonnya ## Overview -bitio (pronounced bitty-o) is a micro:bit I/O library for Python. It allows you to run code in Python on a PC/Mac/Linux/Raspberry Pi and interact directly with the micro:bit. It works with both Python 2 and with Python 3 on Mac, PC, Raspberry Pi and Linux. + +bitio (pronounced bitty-o) is a micro:bit I/O library for Python. It allows you to run code in Python on a PC/Mac/Linux/Raspberry Pi and interact directly with the micro:bit. It works with both Python 2 and Python 3 on Mac, PC, Raspberry Pi and Linux. ### Why would you use bitio? -The library is useful if you want to use the micro:bit as an input or an output device for other programs, e.g. for Minecraft. Tilt your micro:bit, and something happens in the Minecraft world. It can be used for anything though, where you want to use the input and output devices on the micro:bit inside a Python program on a bigger computer. + +bitio is useful if you want to use the micro:bit as an input or output device for other programs, e.g. for Minecraft: Tilt your micro:bit, and something happens in the Minecraft world. It can be used anywhere you might want to use the input and output devices on the micro:bit inside a Python program on a bigger computer. ## Getting Started -Follow the instructions in the project [README.md](https://github.com/whaleygeek/bitio#getting-started) + +[Follow the instructions in the project README.md](https://github.com/whaleygeek/bitio#getting-started) ## Projects + There are various projects linked to in the README, but a couple of the more technical ones include: - Sean M. Tracey has written a [Node Red wrapper for bitio](https://flows.nodered.org/node/node-red-contrib-bitio-wrapper) @@ -29,4 +33,5 @@ There are various projects linked to in the README, but a couple of the more tec - Giles Booth has created a [micro:bit controlled internet Radio](http://www.suppertime.co.uk/blogmywiki/2017/08/microbit-controlled-radio/) ## Help + For any issues or advice head to the [bitio Github Repo](https://github.com/whaleygeek/bitio/issues) From 351fe48113d8b9923301277489ad964fd5ae24db Mon Sep 17 00:00:00 2001 From: Philip Howard Date: Tue, 13 Oct 2020 16:54:46 +0100 Subject: [PATCH 10/21] Update in_browser_compiler.md --- software/in_browser_compiler.md | 55 ++++++++++----------------------- 1 file changed, 17 insertions(+), 38 deletions(-) diff --git a/software/in_browser_compiler.md b/software/in_browser_compiler.md index 086d796..c49328c 100644 --- a/software/in_browser_compiler.md +++ b/software/in_browser_compiler.md @@ -13,66 +13,45 @@ lang: en ## Overview There are a number of different code editors for the micro:bit. -Of the available editors; [MakeCode](https://makecode.microbit.org) and [Python](https://python.microbit.org) have an -in-browser compiler. This means that when you hit the **Download** button -to translate your code into a language supported by the micro:bit, all of the -hard work takes place inside your web browser. +Of the available editors; [MakeCode](https://makecode.microbit.org) and [Python](https://python.microbit.org) have an in-browser compiler. +This means that when you hit the **Download** button to translate your code into a language supported by the micro:bit, all of the hard work takes place inside your web browser. You can also use MicroPython offline by installing the [Mu editor](https://codewith.mu) on your computer. -The in-browser build process is useful, because you are not dependent -on an internet connection in order to code and innovate with your -micro:bit - once you have the web page open and the editor is cached -on your computer, you can work independently of internet access. +The in-browser build process is useful, because you are not dependent on an internet connection in order to code and innovate with your micro:bit. +Once you have the web page open and the editor is cached on your computer, you can work independently of internet access. -By being web based, these editors allow you to write code for the -micro:bit without needing to install any special software on your -computer, which is especially important if working in a previously -unused classroom, or on a public computer. +Since they are web based, these editors allow you to write code for the micro:bit without needing to install any special software on your computer. +This is especially important if you are working in a previously unused classroom, or on a public computer. ## How it Works ![img](/docs/software/assets/browser-build-pipeline.png) -The above diagram shows an example of how blocks code is converted into a -.hex file that can be loaded onto your micro:bit +The above diagram shows an example of how blocks code is converted into a .hex file that can be loaded onto your micro:bit -1a. Edit your script; this is automatically saved inside the web browser cache on your -computer. +1a. Edit your script; this is automatically saved inside the web browser cache on your computer. -1b. Press the **Download** button, and the script is first -converted into javascript. The in-browser-compiler then converts it into Arm machine code instructions. +1b. Press the **Download** button, and the script is first converted into javascript. The in-browser-compiler then converts it into Arm machine code instructions. -1c. The Arm machine code instructions are 'linked' with the Lancaster University -runtime code, [the DAL](/software/runtime) and converted into an [Intel-HEX file -format](/software/hex-format). This is done by ensuring that the in-browser-compiler knows the entry points -of key functions that it needs to be able to call out into. +1c. The Arm machine code instructions are 'linked' with the Lancaster University runtime code, [the DAL](/software/runtime) and converted into an [Intel-HEX file format](/software/hex-format). This is done by ensuring that the in-browser-compiler knows the entry points of key functions that it needs to be able to call. -2. You accept the download of the .hex file, which is stored in the filing system -on your computer. +2. You accept the download of the .hex file, which is stored in the filing system on your computer. -3. Download/Flash the .hex file onto the MICROBIT drive, and the interface -processor on the micro:bit copies it into the flash memory inside the application -processor. Your code now runs. +3. Download/Flash the .hex file onto the MICROBIT drive, and the interface processor on the micro:bit copies it into the flash memory inside the application processor. Your code now runs. -Because code is compiled in-browser, the compiler needs to have a copy of -the runtime/DAL code in order to create a complete distributable package. -There is a pre-compiled copy of the runtime (DAL+Mbed) that gets loaded -when you first load the editor. +Because code is compiled in-browser, the compiler needs to have a copy of the runtime/DAL code in order to create a complete distributable package. +There is a pre-compiled copy of the runtime (DAL+Mbed) that gets loaded when you first load the editor. ## Other Features -MakeCode supports two-way conversion of code, so you can write code as blocks and -see what the generated code looks like in Javascript/MakeCode Python. You can also write Javascript/MakeCode Python code, and if -possible, MakeCode will convert this back into blocks automatically. +MakeCode supports two-way conversion of code, so you can write code as blocks and see what the generated code looks like in Javascript/MakeCode Python. +You can also write Javascript/MakeCode Python code and, if possible, MakeCode will convert this back into blocks automatically. Makecode also allows you to [write your own block types](https://makecode.com/extensions) and [publish them as Extensions](https://makecode.microbit.org/extensions). -The Python web editor does not use the in-browser compiler. It only -sits inside the frame of the website, but it gains access to the -save and import functionality for saving and loading scripts -to local files, and to and from a cloud store. +The Python web editor does not use the in-browser compiler. It only sits inside the frame of the website, but it gains access to the save and import functionality for saving and loading scripts to local files, and to and from a cloud store. Read more about how MicroPython works: [MicroPython on micro:bit](/software/micropython) From e7edbe51ecd7afb6114d137392cd70c4ba628838 Mon Sep 17 00:00:00 2001 From: Philip Howard Date: Tue, 13 Oct 2020 17:03:06 +0100 Subject: [PATCH 11/21] Update latest-revision-editors.md --- latest-revision/latest-revision-editors.md | 31 +++++++++++++--------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/latest-revision/latest-revision-editors.md b/latest-revision/latest-revision-editors.md index 2806238..14bd83f 100644 --- a/latest-revision/latest-revision-editors.md +++ b/latest-revision/latest-revision-editors.md @@ -15,11 +15,11 @@ lang: en Thanks for your continuing support of the micro:bit. There is a wonderful breadth of [third party editors](https://microbit.org/code/#other-editors) available for the micro:bit that support different coding languages and learning scenarios. This article provides information to help you continue to support the 5 million existing micro:bits in the world and the latest board revision with the exciting new features of a speaker and microphone. -If you’d like to keep up to date with technical information about the device, please sign up to our [DAL, Devices and Editors mailing list](http://eepurl.com/dyRx-v) which provides information on hardware revisions, or key low-level software changes as early as possible. +If you'd like to keep up to date with technical information about the device, please sign up to our [DAL, Devices and Editors mailing list](http://eepurl.com/dyRx-v) which provides information on hardware revisions, or key low-level software changes as early as possible. ---------- -Please note that we do as much development as possible in the open, so if you’d like to be part of these processes you can join the relevant projects on GitHub: +Please note that we do as much development as possible in the open, so if you'd like to be part of these processes you can join the relevant projects on GitHub: - [Micro:bit Educational Foundation on GitHub](https://github.com/microbit-foundation) @@ -29,10 +29,10 @@ Please note that we do as much development as possible in the open, so if you’ - [MicroPython](https://github.com/bbcmicrobit/micropython) - [MakeCode](https://github.com/Microsoft/pxt) for micro:bit [(pxt-microbit)](https://github.com/Microsoft/pxt-microbit) -Your tools are some of the most direct ways that users experience the micro:bit. We’ve done all we can to try and minimise the amount of work you will need to do in order to seamlessly support the new revision of the micro:bit and the old version in a single program. +Your tools are some of the most direct ways that users experience the micro:bit. We've done all we can to try and minimise the amount of work you will need to do in order to seamlessly support the new revision of the micro:bit and the old version in a single program. -## If you’re using the microbit DAL/Runtime +## If you're using the micro:bit DAL/Runtime The most important change here is that the latest board revision runtime is based on [CODAL](https://lancaster-university.github.io/codal/) and no longer makes use of Arm Mbed. @@ -46,21 +46,22 @@ and no longer makes use of Arm Mbed. Mbed does not support the nRF52833 by default, though The Foundation does intend to publish a platform to enable this. The micro:bit editors do not use Mbed by default. ### Building CODAL + The [instructions for building CODAL](https://github.com/microbit-foundation/codal/blob/master/mb-build-instructions.md) are located in the micro:bit CODAL repository. The final link is TBC and may change. -## If you’re using MicroPython +## If you're using MicroPython Based on the current work in CODAL we've also worked with Damien George, the author of MicroPython, to build the changes into an updated release of MicroPython for the micro:bit. -The exisiting API has not changed. Scripts that use features that are common to all revisions will not be affected. +The existing API has not changed. Scripts that use features that are common to all revisions will not be affected. To support all revisions of the micro:bit, you will need to ensure you use the latest release of the MicroPython binary with your editor. The simplest way to do this is to flash a program created in the latest Python Editor which will contain the latest MicroPython build. [https://python.microbit.org/v/beta/](https://python.microbit.org/v/beta/) -## If you’re using the micro:bit profile over BLE +## If you're using the micro:bit profile over BLE The BLE Profile for the micro:bit has also been update to ensure compatibility with both revisions of the board. We have published a binary that enables all BLE services available to the board and shows the connection status on the LED. @@ -71,7 +72,7 @@ The MakeCode Bluetooth package will include all updates for the revised hardwar ## Identifying which micro:bits you can support -If you write an editor that doesn’t have an online update mechanism, or is only periodically updated, we recommend that you use the board ID mechanism to list boards that your editor supports and notify users of any incompatibility issues. You can read the board ID as the first four characters of the device’s USB serial number. +If you write an editor that doesn't have an online update mechanism, or is only periodically updated, we recommend that you use the board ID mechanism to list boards that your editor supports and notify users of any incompatibility issues. You can read the board ID as the first four characters of the device's USB serial number. ### Table of board IDs @@ -84,7 +85,7 @@ If you write an editor that doesn’t have an online update mechanism, or is onl For example, if you do not yet support the microphone on the latest board revision (board ID 9904), you can notify users of the compatibility issues within the editor, rather than failing silently and providing a program that does not work. **MicroPython** -In the case of editors that use MicroPython, we propose the following approach which we introduced for the motion sensor update and beleive still works. +In the case of editors that use MicroPython, we propose the following approach which we introduced for the motion sensor update and believe still works. If an unknown micro:bit version is detected, but that micro:bit already contains MicroPython at a newer version than the one the editor knows about use the serial port to flash just the python script to the [filesystem](https://bbcmicrobitmicropython.readthedocs.io/en/latest/filesystem.html) @@ -97,11 +98,17 @@ This gives a teacher or facilitator who is unable to update their editors (for e The latest board revision introduces a superset of the Intel-Hex format that enables compatibility across processor variants. A Universal Hex is a file that contains the binary data for both micro:bit v1 and micro:bit V2, in a format that the DAPLink can process to only write to memory the data relevant to its micro:bit board. A **Universal Hex** hex file will work on a v1 or V2 board. -A clear indication that you are working with this format is that a compiled .hex file will be ~1.8Mb as opposed to ~700Kb in size. +A clear indication that you are working with this format is that a compiled .hex file will be ~1.8Mb instead of ~700Kb in size. + +The following resources will help you implement **Universal Hex** support in your application: -A [Universal Hex JavaScript Library](https://github.com/microbit-foundation/microbit-universal-hex) has been written to implement the format and associated detailed [specification of the Universal Hex format](https://github.com/microbit-foundation/universal-hex/). Please [get in contact](mailto:support@microbit.org?subject=Request%20for%20access%20to%20Universal%20hex&20spec&body=Name%3A%0D%0A%0D%0AGitHub%20ID%3A) if you require access to the specification. +* [Universal Hex JavaScript Library](https://github.com/microbit-foundation/microbit-universal-hex) +* [Detailed specification of the Universal Hex format](https://github.com/microbit-foundation/universal-hex/)† + +† Please [get in contact](mailto:support@microbit.org?subject=Request%20for%20access%20to%20Universal%20hex&20spec&body=Name%3A%0D%0A%0D%0AGitHub%20ID%3A) if you require access to the specification. ### Hex format compatibility + The Universal Hex format has been developed to ensure the best experience for users when moving between board variants. There may be cases where it is not possible to support both boards, for example an accessory that is designed only to target the V2 board variant. In these cases, to ensure the best user experience when flashing a hex file to any board variant, the file should always include an error message to signify board incompatibility to the user. If we do not do this, it results in a silent failure, which can be very confusing to users. -We have created a [standalone error hex](/docs/software/assets/stand-alone-error-v1.hex) that can be combined with a V2 only hex to produce a Hex that will work on a V2 board, but error if used on a v1.You can read more about how this works on the [Hex format](../../software/hex-format/) page. \ No newline at end of file +We have created a [standalone error hex](/docs/software/assets/stand-alone-error-v1.hex) that can be combined with a V2 only hex to produce a Hex that will work on a V2 board, but error if used on a v1.You can read more about how this works on the [Hex format](../../software/hex-format/) page. From f194ca9f713075223d933d0a980d657aa421eb16 Mon Sep 17 00:00:00 2001 From: Philip Howard Date: Tue, 13 Oct 2020 17:28:46 +0100 Subject: [PATCH 12/21] Update latest-revision-editors.md --- latest-revision/latest-revision-editors.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/latest-revision/latest-revision-editors.md b/latest-revision/latest-revision-editors.md index 14bd83f..1f3732f 100644 --- a/latest-revision/latest-revision-editors.md +++ b/latest-revision/latest-revision-editors.md @@ -13,7 +13,7 @@ lang: en * TOC {:toc} -Thanks for your continuing support of the micro:bit. There is a wonderful breadth of [third party editors](https://microbit.org/code/#other-editors) available for the micro:bit that support different coding languages and learning scenarios. This article provides information to help you continue to support the 5 million existing micro:bits in the world and the latest board revision with the exciting new features of a speaker and microphone. +Thanks for your continuing support of the micro:bit. There are a wonderful breadth of [third party editors](https://microbit.org/code/#other-editors) available for the micro:bit that support different coding languages and learning scenarios. This article provides information to help you continue to support the 5 million existing micro:bits in the world and the latest board revision with the exciting new features of a speaker and microphone. If you'd like to keep up to date with technical information about the device, please sign up to our [DAL, Devices and Editors mailing list](http://eepurl.com/dyRx-v) which provides information on hardware revisions, or key low-level software changes as early as possible. @@ -67,7 +67,7 @@ The BLE Profile for the micro:bit has also been update to ensure compatibility w [Download the updated version of the BLE all services hex](https://preview-tech.microbit.org/latest-revision/assets/bluetooth-services.hex) -The MakeCode Bluetooth package will include all updates for the revised hardware and we will notify the DAL, Editors and Devices newsletter when this is available. +The MakeCode Bluetooth package will include all updates for the revised hardware and we will notify the DAL, Editors and Devices newsletter when this is available. ## Identifying which micro:bits you can support @@ -89,7 +89,7 @@ In the case of editors that use MicroPython, we propose the following approach w If an unknown micro:bit version is detected, but that micro:bit already contains MicroPython at a newer version than the one the editor knows about use the serial port to flash just the python script to the [filesystem](https://bbcmicrobitmicropython.readthedocs.io/en/latest/filesystem.html) -This gives a teacher or facilitator who is unable to update their editors (for example due to IT restrictions), but who CAN update the base hex file on the micro:bit, the chance to quickly fix the problem while updating the editor in the background. +This gives a teacher or facilitator who is unable to update their editors (for example due to IT restrictions), but who *can* update the base hex file on the micro:bit, the chance to quickly fix the problem while updating the editor in the background. ## Hex file compatibility From 59f8633a88c78b09538d90a43f6d375960908703 Mon Sep 17 00:00:00 2001 From: Philip Howard Date: Tue, 13 Oct 2020 20:08:32 +0100 Subject: [PATCH 13/21] Update latest-revision-main.md --- latest-revision/latest-revision-main.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/latest-revision/latest-revision-main.md b/latest-revision/latest-revision-main.md index 9be024d..336c72a 100644 --- a/latest-revision/latest-revision-main.md +++ b/latest-revision/latest-revision-main.md @@ -12,9 +12,9 @@ lang: en * TOC {:toc} -The [**latest revision**](./announcement/) of the BBC micro:bit is designed to be completely familiar to anyone who has used the original device. It’s the same size, shape, looks very similar, and works in the same way. Every programme that could run on a micro:bit version 1 can be re-built to run on the latest revision. +The [**latest revision**](./announcement/) of the BBC micro:bit is designed to be completely familiar to anyone who has used the original device. It’s the same size, shape, looks very similar, and works in the same way. Every program that could run on a micro:bit version 1 can be re-built to run on the latest revision. -The editors will support both versions simultaneously for features common to both boards,for example the motion sensor, LEDs, buttons etc. +The editors will support both versions simultaneously for features common to both boards, for example the motion sensor, LEDs, buttons etc. The latest revision builds upon the current micro:bit experience by refining the board and adding widely requested sound making and sensing capabilities. @@ -76,7 +76,7 @@ These pages provide further guidance on the updates for different audiences. ## Universal Editors & Universal Hex Files -In an effort to ensure the greatest degree of continuity for teachers, users will not need to select which version of the device they have before using MakeCode or the Python Editor. Instead, the editors will suport a new format called “universal hex” which can run on both micro:bit V1 and micro:bit V2 (more below) +In an effort to ensure the greatest degree of continuity for teachers, users will not need to select which version of the device they have before using MakeCode or the Python Editor. Instead, the editors will support a new format called “universal hex” which can run on both micro:bit V1 and micro:bit V2 (more below) This means that you can use MakeCode or the online Python Editor as you always have, to use all of the features that are common to both version of the BBC micro:bit: Display, buttons, motion sensing, gestures like shake, light sensing, and even the Music blocks. @@ -137,7 +137,7 @@ The **logo touch** is implemented in the same way as touching a pin on the edge To access the features of the latest revision only (eg. to output sound only on the speaker and not the edge connector), you will need to add additional code to your programs. This ensures that the default editor experience continues to work for everyone, regardless of the board revision. -Features that are common to all board variants will work in the same way they always have. For example, you will be able to use the same blocks in MakeCode to use the acceleromater on any board revision. +Features that are common to all board variants will work in the same way they always have. For example, you will be able to use the same blocks in MakeCode to use the accelerometer on any board revision. ### Makecode From 20b42a21e8d0abcf18fd020ddeacdb7f39180628 Mon Sep 17 00:00:00 2001 From: Philip Howard Date: Tue, 13 Oct 2020 20:14:46 +0100 Subject: [PATCH 14/21] Update i2c.md --- hardware/i2c.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hardware/i2c.md b/hardware/i2c.md index 0f691f7..abc245d 100644 --- a/hardware/i2c.md +++ b/hardware/i2c.md @@ -11,7 +11,7 @@ lang: en ## Use of the I2c bus -The I2c bus for the latest revision of the micro:bit seperates the I2c lines into Internal and External use. The [previous revisions share the I2C bus](../i2c-shared/) with the Edge connector and nRF chip. +The I2c bus for the latest revision of the micro:bit separates the I2c lines into Internal and External use. The [previous revisions share the I2C bus](../i2c-shared/) with the Edge connector and nRF chip. The internal lines run to the Nordic chip and communicate with the motion sensor and KL27 interface. From 12ba5a803f054f0831797e3afa042f24df0dac2f Mon Sep 17 00:00:00 2001 From: Philip Howard Date: Tue, 13 Oct 2020 20:17:16 +0100 Subject: [PATCH 15/21] Update power-consumption.md --- hardware/power-consumption.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/hardware/power-consumption.md b/hardware/power-consumption.md index 6d8a351..d14e0f9 100644 --- a/hardware/power-consumption.md +++ b/hardware/power-consumption.md @@ -10,23 +10,25 @@ lang: en --- ## Power modes -The micro:bit v2 V2 board revision has a range of modes that enable us to conserve power, for example when the board is not being used or when it is powered by battery pack. + +The micro:bit v2 V2 board revision has a range of modes that enable us to conserve power, for example when the board is not being used or when it is powered by a battery pack. **Awake** Board is fully operational. The nRF52 and KL27 will try and conserve power if they can. Power LED is lit. **Sleep** Put the nRF52 to sleep when instructed by CODAL. Wake when USB is connected, reset is pressed or instructed to by CODAL. -On USB - Press and hold power/reset for 5 seconds to enter sleep. The micro:bit power LED will dim from bright red to off. It will then flash on/off, showing you that it is still connnected to the power source. Press power/reset to wake up. +On USB - Press and hold power/reset for 5 seconds to enter sleep. The micro:bit power LED will dim from bright red to off. It will then flash on/off, showing you that it is still connected to the power source. Press power/reset to wake up. -Removing the USB power cable and re-adding it will also wake the micro:bit +Removing the USB power cable and re-connecting it will also wake the micro:bit **Power off** Power off the device. Triggered by pressing and holding the reset button. On battery - Press and hold power/reset for 5 seconds to power off the micro:bit. The micro:bit power LED will dim from bright red to off. It will then remain off until you press the power/reset to wake up. -Inserting a USB power lead will also wake the device. +Connecting a USB power cable will also wake the device. ## LED display -The LED display on the V2 board revision is also brighter than previous revisions, so when using at full brightness you will notice faster battery rundown than an equivalent program on a v1 board. -See our tips on [prolonging battery life](https://support.microbit.org/en/support/solutions/articles/19000087231-prolonging-battery-life) \ No newline at end of file +The LED display on the V2 board revision is also brighter than previous revisions, so when using at full brightness you will notice faster battery drain than an equivalent program on a v1 board. + +See our tips on [prolonging battery life](https://support.microbit.org/en/support/solutions/articles/19000087231-prolonging-battery-life) From 14b5019b87f875e207098b997fc50f3cb8050150 Mon Sep 17 00:00:00 2001 From: Philip Howard Date: Tue, 13 Oct 2020 20:20:29 +0100 Subject: [PATCH 16/21] Update powersupply.md --- hardware/powersupply.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/hardware/powersupply.md b/hardware/powersupply.md index a5eb0a9..85745d7 100644 --- a/hardware/powersupply.md +++ b/hardware/powersupply.md @@ -74,7 +74,7 @@ as being 1.7V min and 3.6V max. When powered from USB, the KL26 v1 interface chip's on-board regulator is used -to provide 3.3V to the rest of the board. The latest revision V2 has a seperate regulator on the board. +to provide 3.3V to the rest of the board. The latest revision V2 has a separate regulator on the board. The [KL26 data sheet](http://www.nxp.com/docs/pcn_attachments/16440_KL26P64M48SF5_Rev.4.pdf)v1 section 3.8.2, Table 30. "USB VREG electrical specifications" indicates the maximum @@ -111,7 +111,7 @@ between the supply and the nRF51 power rails), a fully charged **LiPoly battery* that is specced to reach 4.2V **will be give greater than the [3.6V maximum that the nRF51 can withstand**](#key-voltages) -There is further information about the [battery connection and use](https://support.microbit.org/solution/articles/19000013982-how-do-i-power-my-micro-bit-/en) in our knowledgebase +There is further information about the [battery connection and use](https://support.microbit.org/solution/articles/19000013982-how-do-i-power-my-micro-bit-/en) in our knowledge-base ### 3V Ring Powering @@ -138,9 +138,8 @@ of over voltage protection, or proper regulation. The [schematic](/hardware/schematic/) shows the architecture of the power supply. Note that there are two BAT60A diodes, one from the 3.3V supply from the KL26/27 interface chip, and one from the external battery connector. -The 3V ring on the edge connector is V_TGT, which is the raw -supply provided to all on board chips, so this is why extra care -should be taken when connecting directly to the 3V ring or the 3V losenge. +The 3V ring on the edge connector is V_TGT, which is the raw supply provided to all on board chips. +Extra care should be taken when connecting directly to the 3V ring or the elongated 3V pad on the rear of the board. The BAT60A devices have a low Vf rating, you can read about this in the [BAT60A datasheet](http://www.infineon.com/dgdl/Infineon-BAT60ASERIES-DS-v01_01-en.pdf?fileId=db3a304313d846880113def70c9304a9) From 6b419d4a1699e1ca0c5d65166d4b4d4d1fe64759 Mon Sep 17 00:00:00 2001 From: Philip Howard Date: Tue, 13 Oct 2020 20:23:47 +0100 Subject: [PATCH 17/21] Update 1-3-revision.md --- hardware/1-3-revision.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/hardware/1-3-revision.md b/hardware/1-3-revision.md index 896805e..e61a1fa 100644 --- a/hardware/1-3-revision.md +++ b/hardware/1-3-revision.md @@ -24,7 +24,7 @@ lang: en ## Getting Started With the micro:bit Hardware The micro:bit hardware is based on the Arm-Mbed platform. -It has an application processor with lots of on-chip perhipherals. +It has an application processor with lots of on-chip peripherals. 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 @@ -48,7 +48,7 @@ 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 +There is an on-board 2.4GHz radio engine used to provide Bluetooth capabilities via an off-chip aerial. | item | details @@ -64,7 +64,7 @@ via an off-chip aerial. ### Bluetooth Wireless Communication -The on board 2.4GHz transciever supports Bluetooth communications via the Nordic S110 SoftDevice, +The on board 2.4GHz transceiver 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. @@ -84,7 +84,7 @@ including smartphones and tablets. ### Low Level Radio Communications -The on board 2.4GHz transciever supports a number of other radio communications standards, on which we build the microbit-radio protocol +The on board 2.4GHz transceiver supports a number of other radio communications standards, on which we build the microbit-radio protocol This protocol provides a very simple small-packet broadcast radio interface between other devices that support it, such as other micro:bit devices. The 'radio' interface that appears in a number of the languages on the micro:bit @@ -116,7 +116,7 @@ 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, +where a pull-up 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. @@ -124,7 +124,7 @@ Both A and B buttons are connected to GPIO pins that are also accessible on the | --- | --- | Type | 2 tactile user buttons, 1 tactile system button | Debounce | (A & B) software debounced, 54ms period -| Pullup | (A & B) external 4K7, (System) 10K +| Pull-up | (A & B) external 4K7, (System) 10K ### Display @@ -139,7 +139,7 @@ which is roughly proportional to ambient light levels. | item | details | --- | --- -| Type | minature surface mount red LED +| Type | miniature surface mount red LED | Physical structure | 5x5 matrix | Electrical structure | 3x9 | Intensity control | 10 steps @@ -237,7 +237,7 @@ bottom. The 3V pad at the bottom can be used to supply a small amount of power e | --- | --- | Operating range | 1.8V .. 3.6V | USB current | 120mA max -| Onboard Peripherals budget | 30mA +| On-board Peripherals budget | 30mA | Battery connector | JST X2B-PH-SM4-TB | Battery current | TBC | Max current provided via edge connector | 90mA @@ -285,7 +285,7 @@ of application programs. 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 +be debugged 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. From 81ec0974aa3a28b3097262051811c0992eab09a0 Mon Sep 17 00:00:00 2001 From: Philip Howard Date: Tue, 13 Oct 2020 20:26:50 +0100 Subject: [PATCH 18/21] Update 1-5-revision.md --- hardware/1-5-revision.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/hardware/1-5-revision.md b/hardware/1-5-revision.md index 6802346..938c141 100644 --- a/hardware/1-5-revision.md +++ b/hardware/1-5-revision.md @@ -21,7 +21,7 @@ lang: en # Getting Started With the micro:bit Hardware The micro:bit hardware is based on the Arm-Mbed platform. -It has an application processor with lots of on-chip perhipherals. +It has an application processor with lots of on-chip peripherals. 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 @@ -45,7 +45,7 @@ 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 +There is an on-board 2.4GHz radio engine used to provide Bluetooth capabilities via an off-chip aerial. | item | details @@ -61,7 +61,7 @@ via an off-chip aerial. ## Bluetooth Wireless Communication -The on board 2.4GHz transciever supports Bluetooth communications via the Nordic S110 SoftDevice, +The on board 2.4GHz transceiver 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. @@ -81,7 +81,7 @@ including smartphones and tablets. ## Low Level Radio Communications -The on board 2.4GHz transciever supports a number of other radio communications standards, +The on board 2.4GHz transceiver 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. @@ -114,7 +114,7 @@ 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, +where a pull-up 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. @@ -122,7 +122,7 @@ Both A and B buttons are connected to GPIO pins that are also accessible on the | --- | --- | Type | 2 tactile user buttons, 1 tactile system button | Debounce | (A & B) software debounced, 54ms period -| Pullup | (A & B) external 4K7, (System) 10K +| Pull-up | (A & B) external 4K7, (System) 10K ## Display @@ -137,7 +137,7 @@ which is roughly proportional to ambient light levels. | item | details | --- | --- -| Type | minature surface mount red LED +| Type | miniature surface mount red LED | Physical structure | 5x5 matrix | Electrical structure | 3x9 | Intensity control | 10 steps @@ -220,7 +220,7 @@ bottom. The 3V pad at the bottom can be used to supply a small amount of power e | --- | --- | Operating range | 1.8V .. 3.6V | USB current | 120mA max -| Onboard Peripherals budget | 30mA +| On-board Peripherals budget | 30mA | Battery connector | JST X2B-PH-SM4-TB | Battery current | TBC | Max current provided via edge connector | 90mA @@ -268,7 +268,7 @@ of application programs. 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 +be debugged 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. From 19b62c4114ac1fcbaed2c8c923ad5ba3a88dfcb5 Mon Sep 17 00:00:00 2001 From: Phil Howard Date: Wed, 14 Oct 2020 20:36:29 +0100 Subject: [PATCH 19/21] Purge linebreaks, more corrections --- README.md | 2 +- accessories/making-accessories.md | 18 +- bluetooth/apps-and-examples.md | 10 +- bluetooth/index.md | 28 ++- bluetooth/profile.md | 32 +--- community/slack.md | 19 +- hardware/1-3-revision.md | 145 ++++++---------- hardware/1-5-revision.md | 163 +++++++----------- hardware/edgeconnector.md | 1 + hardware/i2c-shared.md | 2 +- hardware/i2c.md | 1 + hardware/index.md | 2 +- hardware/powersupply.md | 83 +++------ hardware/reference-design.md | 82 +++------ hardware/schematic.md | 59 ++----- latest-revision/README.MD | 3 +- .../latest-revision-accessories.md | 4 +- .../latest-revision-announcement.md | 57 +++--- latest-revision/latest-revision-content.md | 4 +- latest-revision/latest-revision-editors.md | 3 +- latest-revision/latest-revision-main.md | 6 +- projects.md | 2 +- software/runtime.md | 2 +- 23 files changed, 257 insertions(+), 471 deletions(-) diff --git a/README.md b/README.md index 0cc8087..18a5643 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ # Microbit Developer Community Docs -These docs form the content that is rendered into the [micro:bit Developer Commmunity site](http://tech.microbit.org) +These docs form the content that is rendered into the [micro:bit Developer Community site](http://tech.microbit.org) ## Using these docs diff --git a/accessories/making-accessories.md b/accessories/making-accessories.md index ee8e254..3d85d26 100644 --- a/accessories/making-accessories.md +++ b/accessories/making-accessories.md @@ -22,25 +22,23 @@ to plug in and remove the board. There are limitations to the current that can be drawn from the micro:bit, and accessories must be designed carefully to ensure they do not damage the micro:bit, or that the micro:bit cannot damage them. ### V2 revision -The edge connector on the V2 board revision is backwards compatible with the v1 edge connector, but has additional dedicated pins. + +The edge connector on the V2 board revision is backwards compatible with the v1 edge connector, but includes additional dedicated pins. * Details of the [edge connector and pinout](/hardware/edgeconnector) * Details about [powering things from the board](/hardware/powersupply) ## Battery Pads -There are two lozenge shaped pads on the back of the micro:bit. These allow you to connect a battery holder via a mechanism other than the JST connector. - +There are two elongated pads on the back of the micro:bit. These allow you to connect a battery holder directly, instead of via the JST connector. -![Picture of the two lozenges](/docs/accessories/assets/making-accessories-d7c25.png) +![Picture of the two elongated pads](/docs/accessories/assets/making-accessories-d7c25.png) ### V2 revision -In the V2 board revision, the 3V lozenge is connected to the 3V ring on the edge connector. -- If you make an accessory that uses the lozenges, it must be protected from reverse charging -when the board is powered by USB, battery or edge connector. -- You can now source power from the lozenges if you are making an accessory, as they are consistent with the power architecture of the edge connector. - -Due to the addition of a speaker, current accessories that use the lozenges to power the micro:bit will no longer fit. +In the V2 board revision, the 3V lozenge is connected to the 3V ring on the edge connector. +- If you make an accessory that uses the elongated pads, it must be protected from reverse charging when the board is powered by USB, battery or edge connector. +- You can now source power from the elongated pads if you are making an accessory. They are consistent with the power architecture of the edge connector. +Due to the addition of a speaker, current accessories that use the elongated pads to power the micro:bit will no longer fit. diff --git a/bluetooth/apps-and-examples.md b/bluetooth/apps-and-examples.md index 7bdde6a..49be3bc 100644 --- a/bluetooth/apps-and-examples.md +++ b/bluetooth/apps-and-examples.md @@ -17,11 +17,9 @@ Below is a curated list of some Bluetooth applications you might like to read about and try for yourself with your micro:bit. Please contribute to this list if you know of any more. Many listed here are take from the [micro:bit Awesome list](https://github.com/carlosperate/awesome-microbit) - ## Applications, tools and examples - -[Android App](https://play.google.com/store/apps/details?id=com.samsung.microbit) faciliates [pairing and flashing programs to the micro:bit](https://support.microbit.org/en/support/solutions/articles/19000051025-pairing-and-flashing-code-via-bluetooth) +[Android App](https://play.google.com/store/apps/details?id=com.samsung.microbit) facilitates [pairing and flashing programs to the micro:bit](https://support.microbit.org/en/support/solutions/articles/19000051025-pairing-and-flashing-code-via-bluetooth) [iOS App](https://apps.apple.com/gb/app/micro-bit/id1092687276)faciliates [pairing and flashing programs to the micro:bit](https://support.microbit.org/en/support/solutions/articles/19000051025-pairing-and-flashing-code-via-bluetooth) @@ -33,15 +31,15 @@ if you know of any more. Many listed here are take from the [micro:bit Awesome l [micro:bit Blue App for Android](https://github.com/microbit-foundation/microbit-blue) -[droidscript microbit](http://www.microbit-js.org/controlling-microbit-with-droidscript/) +[droidscript micro:bit](http://www.microbit-js.org/controlling-microbit-with-droidscript/) [droidscript plugin](http://www.microbit-js.org/installing-the-microbit-plugin-for-droidscript/) [Kitronik Move](https://play.google.com/store/apps/details?id=com.kitronik.blemove) - Android app that presents a D-Pad interface to control a micro:bit over Bluetooth LE. -[Workbench](https://edu.workbencheducation.com/partners/microbit) is amulti-device coding canvas for block-based programming that connects with BLE devices via Chrome Web Bluetooth. +[Workbench](https://edu.workbencheducation.com/partners/microbit) is a multi-device coding canvas for block-based programming that connects with BLE devices via Chrome Web Bluetooth. -[microBit.js](https://github.com/antefact/microBit.js) - JavaScript library to interact with BBC micro:bit using web bluetooth API. +[microBit.js](https://github.com/antefact/microBit.js) - JavaScript library to interact with BBC micro:bit using web Bluetooth API. [microbit-web-bluetooth](https://github.com/thegecko/microbit-web-bluetooth) - Web Bluetooth library implementing the micro:bit Bluetooth Profile. diff --git a/bluetooth/index.md b/bluetooth/index.md index 903109d..f91c950 100644 --- a/bluetooth/index.md +++ b/bluetooth/index.md @@ -8,44 +8,40 @@ permalink: /bluetooth/ ref: bluetooth lang: en --- + # Overview -The micro:bit processor has an on board -[Bluetooth](http://blog.bluetooth.com/a-developers-guide-to-bluetooth/) transceiver. This is combined with a PCB trace aerial and other minor components alongside a software stack that gives -the micro:bit a certified and credible Bluetooth capability. + +The micro:bit processor has an on board [Bluetooth](http://blog.bluetooth.com/a-developers-guide-to-bluetooth/) transceiver. This is combined with a PCB trace aerial and other minor components alongside a software stack that gives the micro:bit a certified and credible Bluetooth capability. ## Bluetooth software stack + v1 Nordic Semiconductor [Soft Device S110](https://www.nordicsemi.com/Software-and-Tools/Software/S110) V2 Nordic Semiconductor [Soft Device S140](https://www.nordicsemi.com/Software-and-tools/Software/S140) . We may switch to [S113](https://www.nordicsemi.com/Software-and-tools/Software/S113) and [S122](https://www.nordicsemi.com/Software-and-tools/Software/S122) at compile time to save flash memory (if this affects anything you are working on please [contact micro:bit support](https://support.microbit.org/en/support/tickets/new)). - -Using Bluetooth, you can connect to other devices and send and receive -data from and to the micro:bit. +Using Bluetooth, you can connect to other devices and send and receive data from and to the micro:bit. ## micro:bit Bluetooth Features -Bluetooth features available on the micro:bit are defined in a -[Bluetooth profile](/bluetooth/profile). The micro:bit supports one, custom developed profile. +Bluetooth features available on the micro:bit are defined in a [Bluetooth profile](/bluetooth/profile). The micro:bit supports one, custom-developed, profile. ## Bluetooth and the micro:bit software The [DAL/C++](https://lancaster-university.github.io/microbit-docs/ble/profile/#reference-documentation) lists the adopted and custom features available within the profile. -[MakeCode](https://makecode.microbit.org/reference/bluetooth) contains a set of blocks to make use -of the various micro:bit services. +[MakeCode](https://makecode.microbit.org/reference/bluetooth) contains a set of blocks to make use of the various micro:bit services. -The processor also has a number of non-bluetooth proprietary -modes of operation, on which we build the micro:bit radio -protocol. This only works between micro:bits and is what is defined as 'Micro:bit Radio' in the DAL -and 'radio' in MakeCode and MicroPython, as well as Mbed C++. +The processor also has a number of non-bluetooth proprietary modes of operation, on which we build the micro:bit radio protocol. This only works between micro:bits and is what is defined as 'Micro:bit Radio' in the DAL and 'radio' in MakeCode and MicroPython, as well as Mbed C++. ## Apps -[Android App](https://play.google.com/store/apps/details?id=com.samsung.microbit) faciliates [pairing and flashing programs to the micro:bit](https://support.microbit.org/en/support/solutions/articles/19000051025-pairing-and-flashing-code-via-bluetooth) +[Android App](https://play.google.com/store/apps/details?id=com.samsung.microbit) facilitates [pairing and flashing programs to the micro:bit](https://support.microbit.org/en/support/solutions/articles/19000051025-pairing-and-flashing-code-via-bluetooth) + [iOS App](https://apps.apple.com/gb/app/micro-bit/id1092687276)faciliates [pairing and flashing programs to the micro:bit](https://support.microbit.org/en/support/solutions/articles/19000051025-pairing-and-flashing-code-via-bluetooth) + [Swift Playgrounds](https://github.com/microbit-foundation/microbit-swift-playgrounds) contains a Playground Book available in the Swift app and a micro:bit Swift API to develop further resources + Scratch. ## Links [Bluetooth Specification](https://www.bluetooth.com/specifications/adopted-specifications) - diff --git a/bluetooth/profile.md b/bluetooth/profile.md index 026a68d..88591f6 100644 --- a/bluetooth/profile.md +++ b/bluetooth/profile.md @@ -11,13 +11,9 @@ lang: en ## Overview -The micro:bit supports Bluetooth via a single BBC micro:bit profile -which was custom developed for the device. This profile -allows it to communicate with other BLE capable devices. - -If you are looking for information about the 'radio' feature, it is a [proprietary protocol from Nordic -and Lancaster University](https://lancaster-university.github.io/microbit-docs/ubit/radio/). This is not Bluetooth and the difference is described further in [this article on using the micro:bit wirelessly](https://support.microbit.org/support/solutions/articles/19000083637-using-the-micro-bit-wirelessly-) +The micro:bit supports Bluetooth via a single BBC micro:bit profile, which was custom developed for the device. This profile allows it to communicate with other BLE capable devices. +If you are looking for information about the 'radio' feature, it is a [proprietary protocol from Nordic and Lancaster University](https://lancaster-university.github.io/microbit-docs/ubit/radio/). This is not Bluetooth and the difference is described further in [this article on using the micro:bit wirelessly](https://support.microbit.org/support/solutions/articles/19000083637-using-the-micro-bit-wirelessly-) ## BBC micro:bit Bluetooth Profile @@ -36,36 +32,24 @@ There are also some example programs in the [microbit-samples](https://github.co [bluetooth-eddystone-url]https://github.com/lancaster-university/microbit-samples/tree/master/source/examples/bluetooth-eddystone-url [bluetooth-uart]https://github.com/lancaster-university/microbit-samples/tree/master/source/examples/bluetooth-uart -The micro:bit has a Bluetooth 4.1 stack with Bluetooth Low Energy (BLE) and supports -the [GAP Perhipheral Role](https://bluetooth-developer.blogspot.com/2016/07/microbit-and-bluetooth-roles.html). +The micro:bit has a Bluetooth 4.1 stack with Bluetooth Low Energy (BLE) and supports the [GAP Peripheral Role](https://bluetooth-developer.blogspot.com/2016/07/microbit-and-bluetooth-roles.html). -As per all Bluetooth, it operates in the ISM (Industrial Scientific Medical) band -and this starts at **2.4GHz and ends at 2.41GHz**. BLE divides the frequency -band into 50 x 2MHz bands of which 40 are used. +As per all Bluetooth, it operates in the ISM (Industrial Scientific Medical) band and this starts at **2.4GHz and ends at 2.41GHz**. BLE divides the frequency band into 50 x 2MHz bands of which 40 are used. These are called **channels** and numbered **0 to 39**. -Channels 37, 38 and 39 are used for “advertising”. +Channels 37, 38 and 39 are used for "advertising". -When devices are connected, they use the other channels in a particular sequence -controlled by a feature called **adaptive frequency hopping**. -This helps reduce the impact of congestion from other radio users. +When devices are connected, they use the other channels in a particular sequence controlled by a feature called **adaptive frequency hopping**. This helps reduce the impact of congestion from other radio users. -Data transfer rates will only be a few 100K per second at best and it very much depends on -how your application uses the Bluetooth features; lots of small temperature containing packets -would have a lower data transfer rate than using the UART service, as it depends on the -proportion of system protocol information vs. application data. +Data transfer rates will only be a few 100K per second at best and it very much depends on how your application uses the Bluetooth features; lots of small temperature containing packets would have a lower data transfer rate than using the UART service, as it depends on the proportion of system protocol information vs. application data. There are some useful [advanced configuration options in the micro:bit runtime code](https://lancaster-university.github.io/microbit-docs/advanced/#compile-time-options-with-yotta) - ## Challenge -It would be possible for anyone with the appropriate knowledge to define and -implement other Bluetooth profiles. You would need to use the Mbed C/C++ environment -to do this. +It would be possible for anyone with the appropriate knowledge to define and implement other Bluetooth profiles. You would need to use the Mbed C/C++ environment to do this. We are seeking collaborators to help us define the new profile elements that expose some of the V2 features. - ## Further information [Martin Woolley's Bluetooth Blog](https://bluetooth-developer.blogspot.com/) has a range of information on using Bluetooth with micro:bit diff --git a/community/slack.md b/community/slack.md index cd0b35a..9d5b1de 100644 --- a/community/slack.md +++ b/community/slack.md @@ -9,9 +9,7 @@ ref: community lang: en --- -The micro:bit community is already spread across the world, building cool things -with micro:bits and building the software that runs on them. Many micro:bit hardware and software resources are openly licensed, and we want to encourage and support -contributions from anyone interested. +The micro:bit community is already spread across the world, building cool things with micro:bits and building the software that runs on them. Many micro:bit hardware and software resources are openly licensed, and we want to encourage and support contributions from anyone interested. If you'd like to be part of the world-wide micro:bit developer community, then there are a couple of ways you can do this. @@ -41,12 +39,9 @@ If you'd like to join the slack channel, please fill in the form below. This for ## Other channels and communities -In addition to the Foundation's own channels of communication, there are many other online communities of support. - -- [MakeCode micro:bit forum](https://forum.makecode.com/c/microbit/11) -Connect with the MakeCode team for more technical details regarding developing micro:bit extensions -or working on the MakeCode editor. -- [Mu Gitter](https://gitter.im/mu-editor) -Gitter chat is similar to Slack and aimed at developers using [Mu](https://codewith.mu/) -- [/r/microbit](https://www.reddit.com/r/microbit) -A reddit discussion on micro:bit + +In addition to the Foundation's own channels of communication, there are many other online support communities. + +- [MakeCode micro:bit forum](https://forum.makecode.com/c/microbit/11) Connect with the MakeCode team for more technical details regarding developing micro:bit extensions or working on the MakeCode editor. +- [Mu Gitter](https://gitter.im/mu-editor) Gitter chat is similar to Slack and aimed at developers using [Mu](https://codewith.mu/) +- [/r/microbit](https://www.reddit.com/r/microbit) A reddit discussion on micro:bit diff --git a/hardware/1-3-revision.md b/hardware/1-3-revision.md index e61a1fa..081b911 100644 --- a/hardware/1-3-revision.md +++ b/hardware/1-3-revision.md @@ -17,39 +17,29 @@ lang: en ![1.3 diagram](/docs/hardware/assets/microbit-overview.png) -### Hardware block diagram -![1.3 block](/docs/hardware/assets/v1-block.svg) +## Hardware block diagram +![1.3 block](/docs/hardware/assets/v1-block.svg) ## Getting Started With the micro:bit Hardware -The micro:bit hardware is based on the Arm-Mbed platform. -It has an application processor with lots of on-chip peripherals. -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. +The micro:bit hardware is based on the Arm-Mbed platform. It has an application processor with lots of on-chip peripherals. Some off-chip peripherals are connected to this chip. -Two key pieces of information to help understand the internals of the micro:bit are: +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. -* The [schematics](../schematic), which shows the detailed component data and connectivity of the device. +Two key pieces of information to help understand the internals of the micro:bit are: -* The [reference design](../reference-design), which is a complete module design of a compatible micro:bit, - and is designed to be a starting point for anyone interested in understanding the micro:bit - or designing their own variant. +* The [schematics](../schematic), which show the detailed component data and connectivity of the device. +* The [reference design](../reference-design), which is a complete module design of a compatible micro:bit, providing a starting point for anyone interested in understanding the micro:bit or designing their own variant. ## Hardware Description ### nRF51 Application 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 on-board 2.4GHz radio engine used to provide Bluetooth capabilities -via an off-chip aerial. +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 on-board 2.4GHz radio engine used to provide Bluetooth capabilities via an off-chip aerial. | item | details | --- | --- @@ -59,15 +49,13 @@ via an off-chip aerial. | RAM | 16KB | Speed | 16MHz | Debug | SWD, jlink/OB -| More Info | [here](/software) +| More Info | [Software](/software), [NRF51 datasheet](http://infocenter.nordicsemi.com/pdf/nRF51822_PS_v3.1.pdf) ### Bluetooth Wireless Communication -The on board 2.4GHz transceiver 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. +The on board 2.4GHz transceiver 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 | --- | --- @@ -78,19 +66,16 @@ including smartphones and tablets. | Tx Power | -20dBM to 4dBm in 4 dB steps | Role | [GAP Peripheral](https://bluetooth-developer.blogspot.com/2016/07/microbit-and-bluetooth-roles.html) | Congestion avoidance | Adaptive Frequency Hopping -| Profiles | 1 [BBC micro:bit profile](https://lancaster-university.github.io/microbit-docs/ble/profile/) -| More Info | [here](/bluetooth) +| Profiles | [BBC micro:bit profile](https://lancaster-university.github.io/microbit-docs/ble/profile/) +| More Info | [Bluetooth](/bluetooth) ### Low Level Radio Communications -The on board 2.4GHz transceiver supports a number of other radio communications standards, on which we build the microbit-radio protocol -This protocol provides a very simple small-packet broadcast radio interface between other devices -that support it, 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 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. +The on board 2.4GHz transceiver supports a number of other radio communications standards, on which we build the microbit-radio protocol. +This protocol provides a very simple small-packet broadcast radio interface between other devices that support it, 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 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 | --- | --- @@ -107,35 +92,24 @@ allowing for simple user managed device addressing and filtering to take place. ### Buttons -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 pull-up resistor ensures a logical '1' when the button is released, -and a logical '0' when the button is pressed. +The two buttons on the front of the micro:bit, and the one button on the back, are tactile momentary push-buttons. The back button is connected to the KL26 interface processor and to the nRF51 processor for system reset purposes. Pushing this button will reset the application, regardless of whether it is powered from USB or battery. + +The front "A" and "B" buttons 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 pull-up 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 -| Pull-up | (A & B) external 4K7, (System) 10K +| Pull-up | (A & B) external 4K7, (System) 10K ### Display 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. +It is connected to the micro:bit as a 3x9 matrix. The runtime software refreshes this matrix at a high speed, such that it is within the user persistence of vision range, and no flicker is visible. +This LED matrix is also used to sense ambient light. It does this by momentarily 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 | --- | --- @@ -151,8 +125,7 @@ which is roughly proportional to ambient light levels. ### Accelerometer 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 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 @@ -168,10 +141,8 @@ It is connected to the application processor via the I2C bus. ### Magnetometer 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. +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. The calibration process is automatically initiated by the runtime software. This device is connected to the application processor via the I2C bus. | item | details @@ -185,8 +156,7 @@ This device is connected to the application processor via the I2C bus. ### Temperature Sensing The nRF51 application processor has an on board core temperature sensor. -This is exposed via the standard runtime software, and provides an estimate of ambient -temperature. +This is exposed via the standard runtime software, and provides an estimate of ambient temperature. | item | details | --- | --- @@ -194,16 +164,13 @@ temperature. | Sensing range | -25C .. 75C | Resolution | 0.25C steps | Accuracy | +/-4C (uncalibrated) -| More Info | [here](https://lancaster-university.github.io/microbit-docs/ubit/thermometer/) +| More Info | [DAL Thermometer](https://lancaster-university.github.io/microbit-docs/ubit/thermometer/) ### General Purpose Input/Output Pins -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. +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 datasheet 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 | --- | --- @@ -223,15 +190,11 @@ mode at any one time. | Edge Connector| [Edge connector](/hardware/edgeconnector/) | Pitch | 1.27mm, 80 way double sided. | Pads| 5 pads, with 4mm holes -| More Info | [here](/hardware/edgeconnector/) ### Power Supply -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. +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 | --- | --- @@ -241,14 +204,12 @@ bottom. The 3V pad at the bottom can be used to supply a small amount of power e | Battery connector | JST X2B-PH-SM4-TB | Battery current | TBC | Max current provided via edge connector | 90mA -| More Info | [here](../powersupply) +| More Info | [Power supply](../powersupply) ### Interface -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. +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 | --- | --- @@ -258,17 +219,16 @@ main computer. | RAM | 16KB | Speed | 16MHz | Debug capabilities | SWD -| More Info | [here](/software/daplink-interface/) +| More Info | [DAPLink](/software/daplink-interface/) ### USB Communications -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. +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, +* allows serial data to be streamed to and from the micro:bit application processor over USB to an external host computer, +* supports the CMSIS-DAP protocol for host debugging of application programs. | item | details | --- | --- @@ -277,29 +237,24 @@ of application programs. | Speed | 12Mbit/sec | USB classes supported | [Mass Storage Class (MSC)](https://en.wikipedia.org/wiki/USB_mass_storage_device_class) | | [Communications Device Class (CDC)](https://en.wikipedia.org/wiki/USB_communications_device_class) -| More Info | [here](/software/daplink-interface/) +| More Info | [DAPLink](/software/daplink-interface/) ### Debugging -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 debugged 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. +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 debugged 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) -| More Info | [here](https://docs.mbed.com/docs/mbed-os-handbook/en/latest/debugging/debugging_microbit/) +| More Info | [Mbed debugging micro:bit](https://docs.mbed.com/docs/mbed-os-handbook/en/latest/debugging/debugging_microbit/) ### Mechanical -We have some [nice 2D and 3D CAD drawings and models of the micro:bit](https://github.com/microbit-foundation/microbit-reference-design) 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. +We have produced [2D and 3D CAD drawings and models of the micro:bit](https://github.com/microbit-foundation/microbit-reference-design), including all the important dimensions. These models can be used for generating marketing and project images of the micro:bit, and as a source or reference for accurate manufacture of attachments e.g. via 3D printing. | item | details | --- | --- @@ -307,7 +262,7 @@ manufacture of attachments e.g. via 3D printing. | Weight | 5g -### Links +## Links [Schematic](../schematic) diff --git a/hardware/1-5-revision.md b/hardware/1-5-revision.md index 938c141..f0c5e10 100644 --- a/hardware/1-5-revision.md +++ b/hardware/1-5-revision.md @@ -9,7 +9,7 @@ ref: hardware lang: en --- -# Overview +## Overview {:notoc} * TOC @@ -18,35 +18,25 @@ lang: en ![img](/docs/hardware/assets/microbit-overview-1-5.png) -# Getting Started With the micro:bit Hardware +## Getting Started With the micro:bit Hardware -The micro:bit hardware is based on the Arm-Mbed platform. -It has an application processor with lots of on-chip peripherals. -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. +The micro:bit hardware is based on the Arm-Mbed platform. It has an application processor with lots of on-chip peripherals. 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 [schematics](../schematic), which shows the detailed component data and connectivity of the device. +* The [schematics](../schematic), which show the detailed component data and connectivity of the device. -* The [reference design](../reference-design), which is a complete module design of a compatible micro:bit, - and is designed to be a starting point for anyone interested in understanding the micro:bit - or designing their own variant. +* The [reference design](../reference-design), which is a complete module design of a compatible micro:bit, providing a starting point for anyone interested in understanding the micro:bit or designing their own variant. +## Hardware Description -# Hardware Description +### nRF51 Application Processor -## nRF51 Application 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. -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 on-board 2.4GHz radio engine used to provide Bluetooth capabilities -via an off-chip aerial. +There is an on-board 2.4GHz radio engine used to provide Bluetooth capabilities via an off-chip aerial. | item | details | --- | --- @@ -59,12 +49,10 @@ via an off-chip aerial. | More Info | [Software](../../software), [NRF51 datasheet](http://infocenter.nordicsemi.com/pdf/nRF51822_PS_v3.1.pdf) -## Bluetooth Wireless Communication +### Bluetooth Wireless Communication -The on board 2.4GHz transceiver 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. +The on board 2.4GHz transceiver 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 | --- | --- @@ -79,16 +67,12 @@ including smartphones and tablets. | More Info | [Bluetooth](../../bluetooth) -## Low Level Radio Communications +### Low Level Radio Communications -The on board 2.4GHz transceiver 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. +The on board 2.4GHz transceiver 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 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 | --- | --- @@ -103,19 +87,12 @@ allowing for simple user managed device addressing and filtering to take place. | More Info | [Micro:bit Radio](https://lancaster-university.github.io/microbit-docs/ubit/radio) -## Buttons +### Buttons -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. +The two buttons on the front of the micro:bit, and the one button on the back, are tactile momentary push-buttons. The back button is connected to the KL26 interface processor and to the nRF51 processor for system reset purposes. Pushing this button will reset the application, regardless of whether it is powered from USB or 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 pull-up resistor ensures a logical '1' when the button is released, -and a logical '0' when the button is pressed. +The front "A" and "B" buttons 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 pull-up 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 @@ -125,15 +102,11 @@ Both A and B buttons are connected to GPIO pins that are also accessible on the | Pull-up | (A & B) external 4K7, (System) 10K -## Display +### Display 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. +It is connected to the micro:bit as a 3x9 matrix. The runtime software refreshes this matrix at a high speed, such that it is within the user persistence of vision range, and no flicker is visible. +This LED matrix is also used to sense ambient light. It does this by momentarily 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 | --- | --- @@ -146,13 +119,11 @@ which is roughly proportional to ambient light levels. | Sensing Range | TBC, 10 levels from off to full on | Colour sensitivity | red centric, red is 700nm -## Motion sensor +### Motion sensor The 1.5 micro:bit variant has a combined accelerometer and magnetometer chip that provides 3-axis sensing and magnetic field strength 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. -A software algorithm in the standard runtime uses the on board accelerometer -to turn readings into a board orientation independent compass reading. +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. +A software algorithm in the standard runtime uses the on board accelerometer to turn 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. @@ -166,11 +137,10 @@ The v1.5 micro:bit has a footprint for two different motion sensors: one made by | On board gestures | 'freefall' | Other gestures | Other gestures are implemented by software algorithms in the runtime. -## Temperature Sensing +### Temperature Sensing The nRF51 application processor has an on board core temperature sensor. -This is exposed via the standard runtime software, and provides an estimate of ambient -temperature. +This is exposed via the standard runtime software, and provides an estimate of ambient temperature. | item | details | --- | --- @@ -180,14 +150,11 @@ temperature. | Accuracy | +/-4C (uncalibrated) | More Info | [DAL Thermometer](https://lancaster-university.github.io/microbit-docs/ubit/thermometer/) -## General Purpose Input/Output Pins +### General Purpose Input/Output Pins + +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. -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. +Note: the nRF51 datasheet 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 | --- | --- @@ -209,12 +176,9 @@ mode at any one time. | Pads| 5 pads, with 4mm holes -## Power Supply +### Power Supply -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. +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 | --- | --- @@ -227,11 +191,9 @@ bottom. The 3V pad at the bottom can be used to supply a small amount of power e | More Info | [Power supply](../powersupply) -## Interface +### Interface -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. +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 | --- | --- @@ -244,14 +206,13 @@ main computer. | More Info | [DAPLink](../../software/daplink-interface/), [KL26 reference manual](https://www.nxp.com/docs/en/reference-manual/KL26P121M48SF4RM.pdf) [KL26Z data sheet](http://www.nxp.com/docs/pcn_attachments/16440_KL26P64M48SF5_Rev.4.pdf) -## USB Communications +### USB Communications + +The micro:bit has an on board USB communications stack, that is built into the firmware of the interface chip. This stack: -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. +* provides the ability to drag and drop files onto the MICROBIT drive in order to load code into the application processor, +* allows serial data to be streamed to and from the micro:bit application processor over USB to an external host computer, +* supports the CMSIS-DAP protocol for host debugging of application programs. | item | details | --- | --- @@ -263,14 +224,11 @@ of application programs. | More Info | [DAPLink](../../software/daplink-interface/) -## Debugging +### Debugging -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 debugged 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. +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 debugged 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 | --- | --- @@ -278,11 +236,9 @@ recover a lost bootloader. | Options | JLink/OB (via different firmware) | More Info | [Mbed debugging micro:bit](https://os.mbed.com/docs/mbed-os/v5.11/tutorials/debug-microbit.html) -## Mechanical +### Mechanical -We have some [nice 2D and 3D CAD drawings and models of the micro:bit](https://github.com/microbit-foundation/microbit-reference-design) 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. +We have produced [2D and 3D CAD drawings and models of the micro:bit](https://github.com/microbit-foundation/microbit-reference-design), including all the important dimensions. These models can be used for generating marketing and project images of the micro:bit, and as a source or reference for accurate manufacture of attachments e.g. via 3D printing. | item | details | --- | --- @@ -290,12 +246,27 @@ manufacture of attachments e.g. via 3D printing. | Weight | 5g -# Links +## Links + +[Schematic](../schematic) + +[Reference Design](../reference-design) + +[Nordic NRF51 datasheet](http://infocenter.nordicsemi.com/pdf/nRF51822_PS_v3.1.pdf) + +[Freescale KL26 reference manual](http://cache.freescale.com/files/microcontrollers/doc/ref_manual/KL26P121M48SF4RM.pdf) + +[Freescale KL26 data sheet](http://www.nxp.com/docs/pcn_attachments/16440_KL26P64M48SF5_Rev.4.pdf) + [BBC Technical Specifications](http://www.bbc.co.uk/mediacentre/mediapacks/microbit/specs) +[Safety Advice](https://www.microbit.org/safety-advice) + [I2C specification](http://cache.nxp.com/documents/user_manual/UM10204.pdf) [SPI 'specification'](https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus) +[Arm Mbed overview](https://www.mbed.com/en/about-mbed/what-mbed/) + [Fritzing diagram, contributed by Kok Ho Huen](/docs/hardware/assets/Microbit.fzpz.zip) diff --git a/hardware/edgeconnector.md b/hardware/edgeconnector.md index 251fa29..42205af 100644 --- a/hardware/edgeconnector.md +++ b/hardware/edgeconnector.md @@ -40,6 +40,7 @@ Pin 9 is no longer jointly shared with the LED display, but Pin 8 and Pin 9 can | ![edge connector V2](/docs/hardware/assets/edge-connector-2.svg) | ![edge connector v1](/docs/hardware/assets/edge_connector.svg) ### microbit.pinout.xyz + [microbit.pinout.xyz](https://microbit.pinout.xyz) is a fantastic resource for further information on the micro:bit pins and how they are used by some popular accessories ### Pins and Signals diff --git a/hardware/i2c-shared.md b/hardware/i2c-shared.md index a788f03..add21fd 100644 --- a/hardware/i2c-shared.md +++ b/hardware/i2c-shared.md @@ -11,7 +11,7 @@ lang: en ## 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 any of the possible on-board sensors. The [latest board revision does not share the I2C bus](../i2c/). +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 any of the possible on-board sensors. The [latest board revision does not share the I2C bus](../i2c/). The v1.5 micro:bit has a footprint for two different motion sensors: one made by ST (the LSM303AGR) and one by NXP (FXOS8700CQ). The micro:bit DAL supports both of these sensors, detecting them at runtime. To date, all v1.5 boards have been manufactured with the LSM303AGR, however we may switch to the NXP part. Before doing so we will perform a round of testing and notify the [DAL and Devices mailing list.](http://eepurl.com/dyRx-v) diff --git a/hardware/i2c.md b/hardware/i2c.md index abc245d..32bf89a 100644 --- a/hardware/i2c.md +++ b/hardware/i2c.md @@ -18,6 +18,7 @@ The internal lines run to the Nordic chip and communicate with the motion sensor The external lines run to the edge connector and can be used for accessories. ### I2c block diagram + ![i2c block](/docs/hardware/assets/i2c-block.svg) ### Table of addresses used diff --git a/hardware/index.md b/hardware/index.md index 258dc83..6297f45 100644 --- a/hardware/index.md +++ b/hardware/index.md @@ -78,7 +78,7 @@ including smartphones and tablets. ### Low level radio communications -The on board 2.4GHz transciever supports a number of other radio communications standards, on which we build the microbit-radio protocol +The on board 2.4GHz transceiver supports a number of other radio communications standards, on which we build the microbit-radio protocol This protocol provides a very simple small-packet broadcast radio interface between other devices that support it, such as other micro:bit devices. The 'radio' interface that appears in a number of the languages on the micro:bit diff --git a/hardware/powersupply.md b/hardware/powersupply.md index 85745d7..223c590 100644 --- a/hardware/powersupply.md +++ b/hardware/powersupply.md @@ -23,12 +23,9 @@ Power from the micro:bit can be provided by the 3V and GND pins to small externa It is important to stay within the design parameters of the board: -* When powered from USB, the on board interface chip (KL26v1/KL27V2) uses its on-chip -regulator to provide power. This chip is rated at a maximum of 120mA. +* When powered from USB, the on board interface chip (KL26v1/KL27V2) uses its on-chip regulator to provide power. This chip is rated at a maximum of 120mA. -* The on-board current budget will vary depending on the use of the display, Bluetooth, microphone, speaker and other peripherals. You should allow a worst-case budget -of 30mA for when all on-board peripherals are in use, leaving v190mA/V2270mA for circuits -plugged into the edge connector. +* The on-board current budget will vary depending on the use of the display, Bluetooth, microphone, speaker and other peripherals. You should allow a worst-case budget of 30mA for when all on-board peripherals are in use, leaving v190mA/V2270mA for circuits plugged into the edge connector. * When powered from a battery, the KL chip is not powered up and the USB Indicator LED will not light up. @@ -36,11 +33,7 @@ plugged into the edge connector. ### Key Voltages -As taken from each of the chip datasheets, it can be seen that different -devices have slightly different operating voltage ranges and absolute -maximum voltages. Manufacturers state the operating voltage range and -the absolute maximum tolerable by the device. You should never exceed -the operating voltage range of any of the devices. +As taken from each of the chip datasheets, it can be seen that different devices have slightly different operating voltage ranges and absolute maximum voltages. Manufacturers state the operating voltage range and the absolute maximum tolerable by the device. You should never exceed the operating voltage range of any of the devices. ### v1 revision @@ -52,9 +45,7 @@ the operating voltage range of any of the devices. | MMA8653FC | 1.95V | 3.6V | 3.6Vabs | MAG3110 | 1.95V | 3.6V | 3.6Vabs -This table implies an operating voltage range of the micro:bit device as a whole -as being 1.8V min (for 1.5 variants) or 1.95V min (for 1.3* variants dictated by the motion sensor) and -3.6V max (dictated by all devices). +This table implies an operating voltage range of the micro:bit device as a whole as being 1.8V min (for 1.5 variants) or 1.95V min (for 1.3* variants dictated by the motion sensor) and 3.6V max (dictated by all devices). ### V2 revision @@ -73,76 +64,44 @@ as being 1.7V min and 3.6V max. -When powered from USB, the KL26 v1 interface chip's on-board regulator is used -to provide 3.3V to the rest of the board. The latest revision V2 has a separate regulator on the board. - -The [KL26 data sheet](http://www.nxp.com/docs/pcn_attachments/16440_KL26P64M48SF5_Rev.4.pdf)v1 -section 3.8.2, Table 30. "USB VREG electrical specifications" indicates the maximum -current from the regulated supply is 120mA. Some of this current is required to -run on-board devices, such as the KL26 itself, the nRF application processor, the motion sensor, and the LED display. When Bluetooth is enabled, the current -consumption of the nRF increases slightly. You should budget your current -requirements for anything you attach to the micro:bit v1 to not exceed about -90mA, giving enough safe headroom for worst case with all on-board peripherals -in use. - -If you require more than 90mA from the edge connector, -(e.g. driving lots of NeoPixels or a small motor) these should have power supplied -to them externally. You can back-power the micro:bit via its 3V pad, but please -be sure to use a properly regulated supply and a protection diode, as explained -below, so that your micro:bit always has a supply within the operating range of -all the on-board peripherals and the supplies are not able to power each other. - -It is advised that you do not power the micro:bit from USB battery packs. This is -because some makes and models of USB battery packs can generate out of range -voltages when they are not suitably loaded that could damage your micro:bit -(i.e. when a small current is drawn). -Also, some USB battery packs will switch off automatically when the current -drawn from them is too low. +When powered from USB, the KL26 v1 interface chip's on-board regulator is used to provide 3.3V to the rest of the board. The latest revision V2 has a separate regulator on the board. + +The [KL26 data sheet](http://www.nxp.com/docs/pcn_attachments/16440_KL26P64M48SF5_Rev.4.pdf)v1 section 3.8.2, Table 30. "USB VREG electrical specifications" indicates the maximum current from the regulated supply is 120mA. Some of this current is required to run on-board devices, such as the KL26 itself, the nRF application processor, the motion sensor, and the LED display. When Bluetooth is enabled, the current consumption of the nRF increases slightly. You should budget your current +requirements for anything you attach to the micro:bit v1 to not exceed about 90mA, giving enough safe headroom for worst case with all on-board peripherals in use. + +If you require more than 90mA from the edge connector, (e.g. driving lots of NeoPixels or a small motor) these should have power supplied to them externally. You can back-power the micro:bit via its 3V pad, but please be sure to use a properly regulated supply and a protection diode, as explained below, so that your micro:bit always has a supply within the operating range of all the on-board peripherals and the supplies are not able to power each other. + +It is advised that you do not power the micro:bit from USB battery packs. This is because some makes and models of USB battery packs can generate out of range voltages when they are not suitably loaded that could damage your micro:bit (i.e. when a small current is drawn). +Additionally, some USB battery packs will switch off automatically when the current drawn from them is too low. ### Battery Powering -When powered from a battery plugged into the top battery connector, the -KL26 interface chip is not powered up, and the System LED will not be -turned on. If your code does not display anything on the display, -this might look like the micro:bit is not working, but it is. +When powered from a battery plugged into the top battery connector, the KL26 interface chip is not powered up, and the System LED will not be turned on. If your code does not display anything on the display, this might look like the micro:bit is not working, but it is. -Because the nRF51 chip is powered almost directly (there is only one BAT60 diode -between the supply and the nRF51 power rails), a fully charged **LiPoly battery** -that is specced to reach 4.2V **will be give greater than the [3.6V maximum that -the nRF51 can withstand**](#key-voltages) +Because the nRF51 chip is powered almost directly (there is only one BAT60 diode between the supply and the nRF51 power rails), a fully charged **LiPoly battery** that is specced to reach 4.2V **will be give greater than the [3.6V maximum that the nRF51 can withstand**](#key-voltages) There is further information about the [battery connection and use](https://support.microbit.org/solution/articles/19000013982-how-do-i-power-my-micro-bit-/en) in our knowledge-base ### 3V Ring Powering The micro:bit may be powered from the 3V/GND rings on the edge connector. -There are also two elongated pads on the far right of the back of the PCB -that can be used to supply power (e.g. solderable pads for a 2xAAA holder that -has wires or pins at one edge). [The topmost pad is 0V and the bottom most -pad is 3V](../../accessories/making-accessories/#battery-pads). +There are also two elongated pads on the far right of the back of the PCB that can be used to supply power (e.g. solderable pads for a 2xAAA holder that has wires or pins at one edge). [The topmost pad is 0V and the bottom most pad is 3V](../../accessories/making-accessories/#battery-pads). -When powering from the 3V ring or the elongated pads on the PCB, you should take -appropriate best practice precautions: +When powering from the 3V ring or the elongated pads on the PCB, you should take appropriate best practice precautions: -1. Fit an external protection diode (preferably with a low Vf rating) -to prevent damage due to the power supply being connected the wrong way -round. +1. Fit an external protection diode (preferably with a low Vf rating) to prevent damage due to the power supply being connected the wrong way round. -2. If powered from a voltage source that could generate a voltage higher -than the maximum operating voltage of the micro:bit, fit some form -of over voltage protection, or proper regulation. +2. If powered from a voltage source that could generate a voltage higher than the maximum operating voltage of the micro:bit, fit some form of over-voltage protection, or proper regulation. ### Power Supply Architecture v1 The [schematic](/hardware/schematic/) shows the architecture of the power supply. -Note that there are two BAT60A diodes, one from the 3.3V -supply from the KL26/27 interface chip, and one from the external battery connector. +Note that there are two BAT60A diodes, one from the 3.3V supply from the KL26/27 interface chip, and one from the external battery connector. The 3V ring on the edge connector is V_TGT, which is the raw supply provided to all on board chips. Extra care should be taken when connecting directly to the 3V ring or the elongated 3V pad on the rear of the board. -The BAT60A devices have a low Vf rating, you can read about this in the -[BAT60A datasheet](http://www.infineon.com/dgdl/Infineon-BAT60ASERIES-DS-v01_01-en.pdf?fileId=db3a304313d846880113def70c9304a9) +The BAT60A devices have a low Vf rating, you can read about this in the [BAT60A datasheet](http://www.infineon.com/dgdl/Infineon-BAT60ASERIES-DS-v01_01-en.pdf?fileId=db3a304313d846880113def70c9304a9) ### Power Supply Architecture V2 TBC diff --git a/hardware/reference-design.md b/hardware/reference-design.md index c0c1a40..32af4e2 100644 --- a/hardware/reference-design.md +++ b/hardware/reference-design.md @@ -13,37 +13,22 @@ review-with: jonnya ## Reference Design -In addition to learning about how the micro:bit is designed from the [schematic](../../hardware/schematic/), -we want to enable people to build their own hardware products and projects based -on the micro:bit. This means taking all the hardware that you've connected -to your micro:bit and putting it down on one circuit board. +In addition to learning about how the micro:bit is designed from the [schematic](../../hardware/schematic/), we want to enable people to build their own hardware products and projects based on the micro:bit. This means taking all the hardware that you've connected to your micro:bit and putting it down on one circuit board. ![micro:bit plant monitor](/docs/hardware/assets/referencedesign-57055.png){:width="40%"} -*Turn all these cables into a single board!* +*Turn all these wires into a single board!* -Because the micro:bit has a Bluetooth radio, building your own boards just like -the micro:bit is complicated - you need to tune the antenna, add the right -resonance circuit and then certify the board, if you'd like to build more than -just a few of them. Therefore, in order to make it easier to build things based -on the micro:bit, we've made this version of the board that uses a pre-certified nRF51-based -module (details in [Module Choice](#module-choice) below). This way you can take your mind off the gritty RF details and just concentrate on adding your own components to the board. +Because the micro:bit has a Bluetooth radio, building your own boards just like the micro:bit is complicated - you need to tune the antenna, add the right resonance circuit and then certify the board, if you'd like to build more than just a few of them. Therefore, in order to make it easier to build things based on the micro:bit, we've made this version of the board that uses a pre-certified nRF51-based module (details in [Module Choice](#module-choice) below). This way you can take your mind off the gritty RF details and just concentrate on adding your own components to the board. -Furthermore, the micro:bit has a built in programmer and debugger, which is -important for a development board, but might not be worth the cost if you're -just building fixed-function product. The programmer on the reference design -can be easily extracted and used to program other boards - so you can make one -programmer to program all your micro:bit based designs! +Furthermore the micro:bit has a built in programmer and debugger. This is important for a development board, but might not be worth the cost if you're just building fixed-function product. The programmer on the reference design can be easily extracted and used to program other boards - so you can make one programmer to program all your micro:bit based designs! ## Reference Design Features -* **100% binary compatible with the micro:bit, including all the same hardware -features: 3 buttons, 5x5 display, motion sensor)** -* Released under the [SolderPad License 0.51](http://solderpad.org/licenses/SHL-0.51/) (based on Apache-2.0, but tailored - towards Open Hardware) +* **100% binary compatible with the micro:bit, including all the same hardware features: 3 buttons, 5x5 display, motion sensor)** +* Released under the [SolderPad License 0.51](http://solderpad.org/licenses/SHL-0.51/) (based on Apache-2.0, but tailored towards Open Hardware) * Based on pre-certified [nRF51822 module](#module-choice) for ease of use -* Separate programmer and debugger circuits so that you can strip back -things that you don't need +* Separate programmer and debugger circuits so that you can strip back things that you don't need * Standard 2.54mm pitch connector for * all the micro:bit edge connector pins * programming the KL26 and the nRF51822 @@ -53,61 +38,45 @@ things that you don't need * Design available in Eagle, Altium and KiCad formats * Coin cell connection and holder option ([but beware the dangers of coin cells to children](http://www.bbc.co.uk/news/health-37410343)) -Any code that you write for your micro:bit can be run on the reference design -without modification. +Any code that you write for your micro:bit can be run on the reference design without modification. ![micro:bit reference design back](/docs/hardware/assets/referencedesign-76a11.png){:width="40%"} ![micro:bit reference design front](/docs/hardware/assets/referencedesign-2988d.png){:width="37%"} ## Modularity -The reference design is laid out in a modular way, so that someone working -with it can easily customise the board to include only the parts they need. +The reference design is laid out in a modular way, so that someone working with it can easily customise the board to include only the parts they need. ![the reference design is modular](/docs/hardware/assets/referencedesign-9cfb5.png). -For example, if you want to make something tiny that doesn't make use -of all the expansion or the LEDs, you could make use of the 'bare minimum subset' -section of the board, and have a separate programmer. +For example, if you want to make something tiny that doesn't make use of all the expansion or the LEDs, you could make use of the 'bare minimum subset' section of the board, and have a separate programmer. ## Module Choice -There are multiple vendors of Bluetooth pre-certified modules based on the nRF51822. But because the micro:bit uses every pin on the nRF51822, only modules that expose all of the GPIO can be used. We have selected the [Raytac MDBT40-256V3](http://www.raytac.com/product/ins.php?index_id=63), which is available from outlets like -Seedstudio, and commonly used on things like Adafruit BLE boards. +Because the micro:bit uses every pin on the nRF51822, only modules that expose all of the GPIO can be used. +We have selected the pre-certified nRF51822-based [Raytac MDBT40-256V3](http://www.raytac.com/product/ins.php?index_id=63), which is available from outlets like Seedstudio, and commonly used on things like Adafruit BLE boards. -This design is fully open source, and we're happy to accept pull requests for -variants that use other modules, or improvements. +This design is fully open source, and we're happy to accept pull requests for variants that use other modules, or improvements. -For your own projects, using a different module is as simple as wiring the right -pins. The [hardware](../../hardware/) page has a detailed pinmap. Likewise, -contributions to this pinmap document for other popular modules are welcome. +For your own projects, using a different module is as simple as wiring the right pins. The [hardware](../../hardware/) page has a detailed pinmap. Likewise, contributions to this pinmap document for other popular modules are welcome. -There is a [list of nRF51822 modules maintained by Nordic Semiconductor](https://www.nordicsemi.com/eng/Products/3rd-Party-Bluetooth-low-energy-Modules), -from which you could choose any module that has all 31 GPIOs broken out. If your -design doesn't use all of the pins on the edge connector and you are able to -recompile your software for your custom design ([for example using Mbed](/software/runtime/)) -then you could choose a range of other modules. +There is a [list of nRF51822 modules maintained by Nordic Semiconductor](https://www.nordicsemi.com/eng/Products/3rd-Party-Bluetooth-low-energy-Modules), from which you could choose any module that has all 31 GPIOs broken out. If your design doesn't use all of the pins on the edge connector and you are able to recompile your software for your custom design ([for example using Mbed](/software/runtime/)) then you could choose a range of other modules. ## Software Bringup -Unlike a micro:bit, your device won't come pre-flashed. Neither of the MCUs will -have any software, so you'll need a debugger, or to ask the people manufacturing -your board to flash it for you. +Unlike a micro:bit, your device won't come pre-flashed. Neither of the MCUs will have any software, so you'll need a debugger, or to ask the people manufacturing your board to flash it for you. ### KL26 Software -As described on the [interface firmware](/software/daplink-interface) page, there is -a bootloader and a main interface program that needs to be flashed to the KL26. +As described on the [interface firmware](/software/daplink-interface) page, there is a bootloader and a main interface program that needs to be flashed to the KL26. -The hex file/image that contains both of these together can be found -here: [hex file](/docs/hardware/assets/kl26z_bl_if_BL0233_IF0234.hex.zip) +The hex file/image that contains both of these together can be found here: [kl26z_bl_if_BL0233_IF0234.hex.zip](/docs/hardware/assets/kl26z_bl_if_BL0233_IF0234.hex.zip) You should flash this onto your KL26 using the header labelled MKL26 prog: ![KL26 program header](/docs/hardware/assets/referencedesign-7eaaa.png) -If you don't have a debugger, the nRF51-DK board can be used as a J-link -debugger with the following configuration. +If you don't have a debugger, the nRF51-DK board can be used as a J-link debugger with the following configuration. ![Using an nRF51-DK as a debugger](/docs/hardware/assets/referencedesign-609b1.png){:width="40%"} @@ -115,12 +84,9 @@ Please see [this page](https://developer.mbed.org/users/MarceloSalazar/notebook/ ### nRF51 Software -Once you have flashed the KL26 then you can use the USB interface on the -reference design itself in order to program any micro:bit hex file onto the -device. +Once you have flashed the KL26 then you can use the USB interface on the reference design itself in order to program any micro:bit hex file onto the device. -If you have chosen not to include a KL26 circuit then you can use an external -programmer and the nRF51prog header: +If you have chosen not to include a KL26 circuit then you can use an external programmer and the nRF51prog header: ![nRF51 prog header](/docs/hardware/assets/referencedesign-d1599.png) @@ -130,8 +96,7 @@ The documentation of the reference design is hosted at GitHub where schematics, [micro:bit reference design GitHub page](https://github.com/microbit-foundation/microbit-reference-design) -The reference design uses the same ICs as the micro:bit itself, so to avoid -duplication of documentation, please refer to the [micro:bit hardware page](../../hardware/) for further details. +The reference design uses the same ICs as the micro:bit itself, so to avoid duplication of documentation, please refer to the [micro:bit hardware page](../../hardware/) for further details. ## Design Software @@ -141,7 +106,6 @@ The reference design is provided in formats that can be loaded and used in: * [Eagle Express/Maker/Educational](http://cadsoft.io/pricing/) * [KiCad EDA](http://kicad-pcb.org/) -Currently, the design is 'Altium First' and we would appreciate any support or -expertise around improving the conversion to KiCad and Eagle formats. +Currently, the design is 'Altium first' and we would appreciate any support or expertise around improving the conversion to KiCad and Eagle formats. If anyone has experience with Eagle import, and needs any Altium / Protel export versions and libraries, they can be supplied, please see [this GitHub issue](https://github.com/microbit-foundation/microbit-reference-design/issues/1). diff --git a/hardware/schematic.md b/hardware/schematic.md index 2734d18..785683f 100644 --- a/hardware/schematic.md +++ b/hardware/schematic.md @@ -19,9 +19,7 @@ The schematic details the electrical connections and components of the micro:bit It is available from the BBC's [micro:bit hardware repository](https://github.com/bbcmicrobit/hardware) -If you're looking to make something of your own based on the micro:bit, you might prefer to -use our ['Reference Design'](/hardware/reference-design/) which is based on a pre-certified nRF51-based radio module and has space on the layout -for you to add your own components. +If you're looking to make something of your own based on the micro:bit, you might prefer to use our ['Reference Design'](/hardware/reference-design/) which is based on a pre-certified nRF51-based radio module and has space on the layout for you to add your own components. ## Schematics @@ -71,9 +69,7 @@ Whilst we work on the publication of the schematic for the latest revision, here ## Key Features -We've extracted some useful details about the hardware that anyone implementing -software for the micro:bit, interfacing to it, or designing an add-on board for it -should find useful. +We've extracted some useful details about the hardware that anyone implementing software for the micro:bit, interfacing to it, or designing an add-on board for it should find useful. ### LEDS @@ -87,49 +83,35 @@ Some of the Columns appear on the edge connector. If you want to use these as ex ### Interface -The Interface sheet shows the KL26/v1KL27v2 processor, which is an NXP microcontroller with 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 Interface sheet shows the KL26/v1KL27v2 processor, which is an NXP microcontroller with 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 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. You can draw 120mAv1/300mAV2 from this regulator. A TVS device is fitted to suppress ESD spikes and out-of-range voltages -that could be present on the USB connector. +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. You can draw 120mAv1/300mAV2 from this 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. ### Sensors -There is one combined motion sensor IC on the micro:bit, that contains an accelerometer and a magnetometer. The accelerometer -measures acceleration in 3 axes. The magnetometer can be used as a compass or a magnetic field detector. +There is one combined motion sensor IC on the micro:bit, that contains an accelerometer and a magnetometer. The accelerometer measures acceleration in 3 axes. The magnetometer can be used as a compass or a magnetic field detector. The device is connected to the application processor [I2c bus](../i2c/), and for the v1 revision this [I2c bus is also connected](../i2c-shared/) 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. +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 this IC is important for binary compatibility with the driver -code in the application processor, which assumes a particular physical orientation in its calculations. +Note: the physical orientation of this IC is important for binary compatibility with the driver code in the application processor, which assumes a particular physical orientation in its calculations. ### Power Supply -Power to the micro:bit can be provided by 3 sources: USB, the battery connector, or the 3V pad -on the edge connector. +Power to the micro:bit can be provided by 3 sources: USB, the battery connector, or the 3V pad on the edge connector. -For powering via USB, the KL26 interface processor has an on-board regulator that brings the external -USB voltage into the correct range for the micro:bit board. +For powering via USB, 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. +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 ICs on the board. Please check the datasheets for the -appropriate ICs for their maximum tolerable voltages. +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 ICs on the board. Please check the datasheets for the appropriate ICs for their maximum tolerable voltages. @@ -155,26 +137,21 @@ The edge connector is the main interface to external components attached to the 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. They -provide a weak pull-up to the supply, providing a default high input. The user touching the GND -pad and a given pin 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'. +10Mohm weak pull-up resistors are fitted on P0, P1 and P2 for use in touch sensing mode. They provide a weak pull-up to the supply, providing a default high input. The user touching the GND pad and a given pin 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 on 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. +Guard pins are provided on 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. +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 V2 board revision has a notched edge connector to make it easier to connect crocodile clips or wire. This does not affect compatibility with existing peripherals using edge connector sockets. ### Dimensions -The specific dminensions of the board are -- 51.60mm(w) 42.00mm(h) 11.65mm(d) +The specific dimensions of the board are: + +- 51.60mm(w) 42.00mm(h) 11.65mm(d) - JST connector to board 5.50mm - button depth to board 4.55mm - V2 speaker depth to board 3.00mm diff --git a/latest-revision/README.MD b/latest-revision/README.MD index 55a459f..cc225fc 100644 --- a/latest-revision/README.MD +++ b/latest-revision/README.MD @@ -1,4 +1,3 @@ ## Latest revision (Temp) -This folder will exist until general announcement at which point -the guidance articles within will migrate to support.microbit.org. \ No newline at end of file +This folder will exist until general announcement at which point the guidance articles within will migrate to support.microbit.org. \ No newline at end of file diff --git a/latest-revision/latest-revision-accessories.md b/latest-revision/latest-revision-accessories.md index dd95a6d..7a13861 100644 --- a/latest-revision/latest-revision-accessories.md +++ b/latest-revision/latest-revision-accessories.md @@ -15,11 +15,11 @@ lang: en ## Overview -Thanks for your continuing support of the micro:bit. The breadth and diversity of accessories available for the micro:bit is a great strength and we’ve worked extremely hard to make the latest revision of the micro:bit work as smoothly as possible with as many accessories as possible. +Thanks for your continuing support of the micro:bit. The breadth and diversity of accessories available for the micro:bit is a great strength and we've worked extremely hard to make the latest revision of the micro:bit work as smoothly as possible with as many accessories as possible. This article provides information to help you continue to support the 5 million existing micro:bits in the world and the latest board revision with the exciting new features of a speaker and microphone. -If you’d like to keep up to date with technical information about the device, please sign up to our [DAL, Devices and Editors mailing list](http://eepurl.com/dyRx-v) which provides information on hardware revisions, or key low-level software changes as early as possible. +If you'd like to keep up to date with technical information about the device, please sign up to our [DAL, Devices and Editors mailing list](http://eepurl.com/dyRx-v) which provides information on hardware revisions, or key low-level software changes as early as possible. ### MakeCode Arcade Microsoft Research are designing a reference design for [MakeCode Arcade](https://arcade.makecode.com/) accessories that allow the latest revision of the micro:bit to be used as an Arcade platform. This will include a number of options for the size, quality and cost of the extensions allowing a range of unique designs. The Foundation are working closely with Microsoft on the specification and will not approve extensions or add to the website any accessories for the micro:bit that are specifically for MakeCode Arcade but do not follow this specification, as it risks too much fragmentation and complexity for our users. diff --git a/latest-revision/latest-revision-announcement.md b/latest-revision/latest-revision-announcement.md index 1fd953c..39468d5 100644 --- a/latest-revision/latest-revision-announcement.md +++ b/latest-revision/latest-revision-announcement.md @@ -8,14 +8,13 @@ ref: latest-revision-announcement lang: en --- -Today we’re [announcing a new version of the BBC micro:bit](https://microbit.org/new-microbit/), adding a speaker, a microphone and the CPU power to run AI and Machine Learning workloads. With these additional capabilities, we are opening up the world of AI and ML to the same collaborative design and innovation that led to the original micro:bit’s success. - +Today we're [announcing a new version of the BBC micro:bit](https://microbit.org/new-microbit/), adding a speaker, a microphone and the CPU power to run AI and Machine Learning workloads. With these additional capabilities, we are opening up the world of AI and ML to the same collaborative design and innovation that led to the original micro:bit's success. This article is a more technical companion to the [news over at microbit.org](https://microbit.org/new-microbit/). ![micro:bit v2 image](/docs/latest-revision/assets/blog/microbit-v2-tech-site.png){: width="600"} -Although the latest micro:bit isn’t available to buy yet, we’re talking about it now because the micro:bit isn’t about one organisation, or the official editors, or even one device. +Although the latest micro:bit isn't available to buy yet, we're talking about it now because the micro:bit isn't about one organisation, or the official editors, or even one device. The micro:bit stands out as unique because of the collaborative way in which it was developed. [It is a tool carefully engineered by an interdisciplinary partnership](https://microbit.org/impact/case-studies/milestones-for-the-bbc-microbit/) of organizations to engage a diverse range of students and meet the needs of teachers and learners in the classroom. @@ -25,22 +24,20 @@ By making affordable, developer-quality hardware and creating elegant and simple # Working in partnership - The many voices that have come together to create the micro:bit experience are key to its success in attracting a diverse range of people to engage with and embrace technology. -It’s in that same spirit of partnership and collaboration that we’ve worked to evolve the device and create the [latest micro:bit](/latest-revision/), laying the foundations for years more digital exploration while maintaining the stability and reliability that have helped people around the world depend on the device as a core part of their teaching. - -At the Micro:bit Educational Foundation we are working with Lancaster University, Microsoft, NXP, and MicroPython to ensure that the core micro:bit experience is as creative, compelling and consistent as it’s ever been. But launching a new micro:bit wouldn't be complete without the input of the incredible community of editor authors, accessory providers, content authors and supporters of micro:bit. +It's in that same spirit of partnership and collaboration that we've worked to evolve the device and create the [latest micro:bit](/latest-revision/), laying the foundations for years more digital exploration while maintaining the stability and reliability that have helped people around the world depend on the device as a core part of their teaching. +At the Micro:bit Educational Foundation we are working with Lancaster University, Microsoft, NXP, and MicroPython to ensure that the core micro:bit experience is as creative, compelling and consistent as it's ever been. But launching a new micro:bit wouldn't be complete without the input of the incredible community of editor authors, accessory providers, content authors and supporters of micro:bit. -# We’re building this together, not alone +# We're building this together, not alone ![A wall of micro:bit accessories](/docs/latest-revision/assets/blog/accessory-wall-bett.jpg){: width="600"} *The wall of accessories displayed at BETT* We recognise and support the huge contribution the wider micro:bit ecosystem makes to our community, and so we are making available all [key technical information about the new micro:bit](/latest-revision), and open source tools to make it easy to support in advance of the device being available to users. -We’ve compiled all this information on an updated version of tech.microbit.org, including details of how to get advanced access to a device if you need one to test or develop something. +We've compiled all this information on an updated version of tech.microbit.org, including details of how to get advanced access to a device if you need one to test or develop something. - [All the technical details about the latest micro:bit and how to use it](/latest-revision) @@ -49,62 +46,54 @@ We’ve compiled all this information on an updated version of tech.microbit.org - [content authors](/latest-revision/content/) - [editor developers](/latest-revision/editors/) - - # Creating code for the latest micro:bit -The latest micro:bit supports all features of the original version so there are many cases where a user won’t need to distinguish between the devices; every tutorial or programme that already exists today is supported on the latest hardware. However, as the machine code that runs on the two devices is different, the latest micro:bit supports a new kind of hex. We’re calling it ‘[universal hex](/software/hex-format/)’: this contains the machine code for both versions of the micro:bit. Thanks to the fantastic support of NXP who have worked on [DAPLink](https://github.com/ARMmbed/DAPLink), the Arm project that enables the micro:bit USB interface, the latest micro:bit is able to choose which code it should use from the universal hex. The files are designed so the original micro:bits do not need any update to use them. +The latest micro:bit supports all features of the original version so there are many cases where a user won't need to distinguish between the devices; every tutorial or programme that already exists today is supported on the latest hardware. However, as the machine code that runs on the two devices is different, the latest micro:bit supports a new kind of hex. We're calling it ‘[universal hex](/software/hex-format/)': this contains the machine code for both versions of the micro:bit. Thanks to the fantastic support of NXP who have worked on [DAPLink](https://github.com/ARMmbed/DAPLink), the Arm project that enables the micro:bit USB interface, the latest micro:bit is able to choose which code it should use from the universal hex. The files are designed so the original micro:bits do not need any update to use them. ![Creation of a Universal Hex](/docs/latest-revision/assets/blog/uhex2.png) -To make the experience of developing programs for these universal hexes as seamless as possible we’ve deepened our collaboration with Arm, Lancaster University and [Microsoft Research](https://www.microsoft.com/en-us/research/project/the-bbc-microbit-and-microsoft/), who were [co-creators of the original micro:bit,](https://www.lancaster.ac.uk/news/articles/2016/lancaster-university-helps-bbc-get-kids-coding/). Because of the open source nature of [Lancaster’s CODAL](https://github.com/lancaster-university/codal), the evolution of the original microbit-dal, we had a ready platform to make the latest micro:bit work. We have also included a full compatibility layer for [microbit-dal](https://github.com/lancaster-university/microbit-dal), so that existing projects and environments can be easily recompiled to work on the latest board. On top of the careful compatibility work there’s plenty of exciting new features designed for the latest hardware, like an advanced SoundExpressions synthesiser and audio pipeline architecture. +To make the experience of developing programs for these universal hexes as seamless as possible we've deepened our collaboration with Arm, Lancaster University and [Microsoft Research](https://www.microsoft.com/en-us/research/project/the-bbc-microbit-and-microsoft/), who were [co-creators of the original micro:bit,](https://www.lancaster.ac.uk/news/articles/2016/lancaster-university-helps-bbc-get-kids-coding/). Because of the open source nature of [Lancaster's CODAL](https://github.com/lancaster-university/codal), the evolution of the original microbit-dal, we had a ready platform to make the latest micro:bit work. We have also included a full compatibility layer for [microbit-dal](https://github.com/lancaster-university/microbit-dal), so that existing projects and environments can be easily recompiled to work on the latest board. On top of the careful compatibility work there's plenty of exciting new features designed for the latest hardware, like an advanced SoundExpressions synthesiser and audio pipeline architecture. ![micro:bit Software Architecture with CODAL](/docs/latest-revision/assets/blog/software-overview-v2.svg){: width="600"} -MakeCode, MicroPython and Scratch are using CODAL to support the new device, and we recommend that anyone building software to run on the micro:bit do the same to ensure consistent experience across micro:bit editors. This will also ensure that as new features get added they can be incorporated easily and made available to users (it’s easy to forget that micro:bit radio wasn’t in the original micro:bit release!) +MakeCode, MicroPython and Scratch are using CODAL to support the new device, and we recommend that anyone building software to run on the micro:bit do the same to ensure consistent experience across micro:bit editors. This will also ensure that as new features get added they can be incorporated easily and made available to users (it's easy to forget that micro:bit radio wasn't in the original micro:bit release!) # Raising the roof - -When it launched in 2015, one of the key goals of the original micro:bit was to create something that was highly capable but with an instant interactivity and ease of access that engaged new audiences. We’ve always aimed for a “low floor and a high ceiling”: it must be super easy to get started, and you shouldn’t hit any barriers as your projects get more complex and grow beyond the device itself. +When it launched in 2015, one of the key goals of the original micro:bit was to create something that was highly capable but with an instant interactivity and ease of access that engaged new audiences. We've always aimed for a “low floor and a high ceiling”: it must be super easy to get started, and you shouldn't hit any barriers as your projects get more complex and grow beyond the device itself. Part of ensuring this was putting the same hardware that real developers were using at the time into the hands of students. This is what has enabled some of the more incredible uses of the micro:bit: [Handwriting recognition using an optical mouse sensor](https://www.cs.ox.ac.uk/teaching/studentprojects/630.html); [use in a BLE mesh](https://docs.zephyrproject.org/latest/samples/bluetooth/mesh_demo/README.html), a [presentation remote](https://os.mbed.com/teams/microbit/code/microbit_presenter/), or a [custom piece of assistive technology.](https://hackaday.io/project/26143-handshake) ![Creation of a Universal Hex](/docs/latest-revision/assets/blog/nrf52833.jpg){: width="600"} - -With the latest micro:bit, we’re doing this again: the [nRF52833](https://www.nordicsemi.com/Products/Low-power-short-range-wireless/nRF52833) is a modern, exciting part recently released by Nordic, and being used across the industry for new designs. It’s capable of running machine learning workloads, and so opens up a new realm of possibilities, both for applications of the device, but especially for helping to expose and demonstrate what machine learning really is: not magic, but sufficiently advanced application of technology. +With the latest micro:bit, we're doing this again: the [nRF52833](https://www.nordicsemi.com/Products/Low-power-short-range-wireless/nRF52833) is a modern, exciting part recently released by Nordic, and being used across the industry for new designs. It's capable of running machine learning workloads, and so opens up a new realm of possibilities, both for applications of the device, but especially for helping to expose and demonstrate what machine learning really is: not magic, but sufficiently advanced application of technology. The original micro:bit elegantly demonstrated the technology in a phone (the screen, buttons, wireless communication, motion sensors, all driven by a processor) and helped young people feel confident that they could understand and control these devices. The new BBC micro:bit extends the capabilities of the hardware to include making and responding to sound, helping demystify the latest wave of consumer technologies including AI smart speakers and digital assistants. - - # New creative possibilities -Music and sound on the micro:bit were pioneered in MicroPython as part of the original community effort around the BBC micro:bit – not least thanks to Nicholas Tollervey and Mark Shannon for introducing things like the [speech synthesizer](https://www.nordicsemi.com/Products/Low-power-short-range-wireless/nRF52833)! Now with the addition of a speaker to the latest micro:bit it is really coming into its own. If you connect headphones or an amplified speaker, you get even better quality sound. Just as the 5x5 display on the micro:bit is perfect for getting started, but a colour LCD is still a welcome way to extend your projects, the sound driver written by Lancaster University is capable of reproducing high quality sound on the edge connector. We don’t expect to see the end of crocodile clips connecting headphone jack sockets just yet! +Music and sound on the micro:bit were pioneered in MicroPython as part of the original community effort around the BBC micro:bit – not least thanks to Nicholas Tollervey and Mark Shannon for introducing things like the [speech synthesizer](https://www.nordicsemi.com/Products/Low-power-short-range-wireless/nRF52833)! Now with the addition of a speaker to the latest micro:bit it is really coming into its own. If you connect headphones or an amplified speaker, you get even better quality sound. Just as the 5x5 display on the micro:bit is perfect for getting started, but a colour LCD is still a welcome way to extend your projects, the sound driver written by Lancaster University is capable of reproducing high quality sound on the edge connector. We don't expect to see the end of crocodile clips connecting headphone jack sockets just yet! ![micro:bit guitar](/docs/latest-revision/assets/blog/microbit-guitar.jpg){: width="600"} + +But beyond music, sound is the way many of us communicate. Our voice and our accent is part of our identity and personality. When adding ‘sound' as a feature of the micro:bit we wanted to make sure we gave it a personality too. The careful thought put into the visual and structural elements of the micro:bit, led by Technology Will Save Us in 2015 showed how paying careful attention to design of a device had a huge impact its approachability, and the ease with which people could make an emotional connection to hardware. The sounds for the micro:bit learn from this, and are there to make the micro:bit's voice friendly and approachable. We've been working on a synthesiser to make these amazing sounds, with lots of input from a sound designer to tune it and make it useful. -But beyond music, sound is the way many of us communicate. Our voice and our accent is part of our identity and personality. When adding ‘sound’ as a feature of the micro:bit we wanted to make sure we gave it a personality too. The careful thought put into the visual and structural elements of the micro:bit, led by Technology Will Save Us in 2015 showed how paying careful attention to design of a device had a huge impact its approachability, and the ease with which people could make an emotional connection to hardware. The sounds for the micro:bit learn from this, and are there to make the micro:bit’s voice friendly and approachable. We’ve been working on a synthesiser to make these amazing sounds, with lots of input from a sound designer to tune it and make it useful. - -The microphone, like the microphones on a smart speaker or digital assistant, allows the device to respond to sound and sense the noise around the micro:bit. Paired with the greater capability of the new micro:bit this is opening up fantastic potential around AI and machine learning with sound. Exemplifying the thought given to educational environments, the microphone’s dedicated ‘operating’ indicator doesn’t interfere with the visual design of the board when off, but makes it clear when the microphone is on and sensing sound. This allows teachers to engage with students about privacy issues and the impact of listening devices. - +The microphone, like the microphones on a smart speaker or digital assistant, allows the device to respond to sound and sense the noise around the micro:bit. Paired with the greater capability of the new micro:bit this is opening up fantastic potential around AI and machine learning with sound. Exemplifying the thought given to educational environments, the microphone's dedicated ‘operating' indicator doesn't interfere with the visual design of the board when off, but makes it clear when the microphone is on and sensing sound. This allows teachers to engage with students about privacy issues and the impact of listening devices. # Exploring AI and ML ![Tensorflow Logo](/docs/latest-revision/assets/blog/tensorflow-logo.png){: width="300"} -Within days of getting a device, Gordon Williams, lead developer of [Espruino](https://www.espruino.com/) had the micro:bit supported in their online platform. This allowed JavaScript programs to run on the device, including Espruino’s gesture recognition libraries that were originally designed for bangle.js and use Tensorflow Lite. Unlike the "gestures" you might be used to on the micro:bit, like "shake", this demo allows you to train a machine learning model to recognise any gestures you can collect data for - it takes recordings of the gestures being performed, and builds a model that can recognise them. This means you can have much more complex, subtle gestures, and even customise them for yourself or something you’ve attached the micro:bit to. +Within days of getting a device, Gordon Williams, lead developer of [Espruino](https://www.espruino.com/) had the micro:bit supported in their online platform. This allowed JavaScript programs to run on the device, including Espruino's gesture recognition libraries that were originally designed for bangle.js and use Tensorflow Lite. Unlike the "gestures" you might be used to on the micro:bit, like "shake", this demo allows you to train a machine learning model to recognise any gestures you can collect data for - it takes recordings of the gestures being performed, and builds a model that can recognise them. This means you can have much more complex, subtle gestures, and even customise them for yourself or something you've attached the micro:bit to. [Edge Impulse](https://www.edgeimpulse.com/), working similarly fast, took a video recording of each member of the micro:bit team saying “micro:bit” three times (what better way to conclude the weekly team meeting?) and used the Edge Impulse cloud service to create a model that could recognise the word “micro:bit” being said. [You can read more about this demo here](https://www.edgeimpulse.com/blog/voice-activated-microbit), but it clearly shows the possibility of training micro:bits to recognise unique sounds! - + ![Edge Impulse visualisation](/docs/latest-revision/assets/blog/edge-impulse.png) -# What’s next? +# What's next? + +There's much more about the new device to explain and explore, and we'll be expanding on the technical documentation as well as the available code over the next few days (weeks, months and years, too, I'm sure!) Much of the magic of the micro:bit is in the seamless way that all the features are easily accessible and can co-exist: you can use capacitive touch, and the microphone, and the edge connector, and still go into low power sleep, and there's lots to share about how that's been made possible. As CODAL grows for micro:bit v2 we expect to provide the same easy composition for the core aspects of machine learning and sound. + +With so much speculation and often misunderstanding about the possibilities, risks and complexities of AI/ML we believe that the micro:bit device can bring the same transformative simplicity to the teaching of these concepts that it brought to physical computing and computational thinking. This isn't something we can do overnight though. Now the device is launched we're starting the process of collaboration with universities, industry, schools and makers to make this transformational experience a reality. The demos we have today show just some of what the new hardware can do. We're confident that the latest micro:bit will empower young people to understand and eventually re-shape the inner workings of the intelligent systems and algorithms that have an increasing impact on their lives. - -There’s much more about the new device to explain and explore, and we’ll be expanding on the technical documentation as well as the available code over the next few days (weeks, months and years, too, I’m sure!) Much of the magic of the micro:bit is in the seamless way that all the features are easily accessible and can co-exist: you can use capacitive touch, and the microphone, and the edge connector, and still go into low power sleep, and there’s lots to share about how that’s been made possible. As CODAL grows for micro:bit v2 we expect to provide the same easy composition for the core aspects of machine learning and sound. - -With so much speculation and often misunderstanding about the possibilities, risks and complexities of AI/ML we believe that the micro:bit device can bring the same transformative simplicity to the teaching of these concepts that it brought to physical computing and computational thinking. This isn’t something we can do overnight though. Now the device is launched we’re starting the process of collaboration with universities, industry, schools and makers to make this transformational experience a reality. The demos we have today show just some of what the new hardware can do. We’re confident that the latest micro:bit will empower young people to understand and eventually re-shape the inner workings of the intelligent systems and algorithms that have an increasing impact on their lives. - Now is the time to come and engage again with micro:bit and help build the next phase of the project with us. - + diff --git a/latest-revision/latest-revision-content.md b/latest-revision/latest-revision-content.md index bfdfe0b..078549e 100644 --- a/latest-revision/latest-revision-content.md +++ b/latest-revision/latest-revision-content.md @@ -15,9 +15,9 @@ lang: en ## Overview -Thank you, content producers for your support of the micro:bit - without people writing amazing resources and showing the world creative ways to use technology, micro:bit wouldn’t be nearly as exciting for people all around the world to use. +Thank you, content producers for your support of the micro:bit - without people writing amazing resources and showing the world creative ways to use technology, micro:bit wouldn't be nearly as exciting for people all around the world to use. -If you’d like to keep up to date with technical information about the device, please sign up to our [DAL, Devices and Editors mailing list](http://eepurl.com/dyRx-v) which provides information on hardware revisions, or key low-level software changes as early as possible. +If you'd like to keep up to date with technical information about the device, please sign up to our [DAL, Devices and Editors mailing list](http://eepurl.com/dyRx-v) which provides information on hardware revisions, or key low-level software changes as early as possible. ---------- diff --git a/latest-revision/latest-revision-editors.md b/latest-revision/latest-revision-editors.md index 1f3732f..8870709 100644 --- a/latest-revision/latest-revision-editors.md +++ b/latest-revision/latest-revision-editors.md @@ -34,8 +34,7 @@ Your tools are some of the most direct ways that users experience the micro:bit. ## If you're using the micro:bit DAL/Runtime -The most important change here is that the latest board revision runtime is based on [CODAL](https://lancaster-university.github.io/codal/) -and no longer makes use of Arm Mbed. +The most important change here is that the latest board revision runtime is based on [CODAL](https://lancaster-university.github.io/codal/) and no longer makes use of Arm Mbed. | V2 | v1 diff --git a/latest-revision/latest-revision-main.md b/latest-revision/latest-revision-main.md index 336c72a..08c3b4c 100644 --- a/latest-revision/latest-revision-main.md +++ b/latest-revision/latest-revision-main.md @@ -12,13 +12,13 @@ lang: en * TOC {:toc} -The [**latest revision**](./announcement/) of the BBC micro:bit is designed to be completely familiar to anyone who has used the original device. It’s the same size, shape, looks very similar, and works in the same way. Every program that could run on a micro:bit version 1 can be re-built to run on the latest revision. +The [**latest revision**](./announcement/) of the BBC micro:bit is designed to be completely familiar to anyone who has used the original device. It's the same size, shape, looks very similar, and works in the same way. Every program that could run on a micro:bit version 1 can be re-built to run on the latest revision. The editors will support both versions simultaneously for features common to both boards, for example the motion sensor, LEDs, buttons etc. The latest revision builds upon the current micro:bit experience by refining the board and adding widely requested sound making and sensing capabilities. -Amongst the micro:bit features, ‘sound’ is in a unique position of being already present in the editors, but not on the board, so it is already familiar to teachers, yet the speaker and microphone on the board are transformative in the kinds of applications people can build. +Amongst the micro:bit features, ‘sound' is in a unique position of being already present in the editors, but not on the board, so it is already familiar to teachers, yet the speaker and microphone on the board are transformative in the kinds of applications people can build. ### Features @@ -194,7 +194,7 @@ If you attempt to use an old .hex file without updating it, the micro:bit will d ## How do I get a device to test? -If you haven’t already received a device, but would like one in order to test/develop an accessory or editor please contact us at [support@microbit.org](mailto:support@microbit.org?subject=Request%20for%20the%20latest%20micro%3Abit&body=Name%3A%0D%0A%0D%0AAddress%3A%0D%0A%0D%0AContact%20number%3A) +If you haven't already received a device, but would like one in order to test/develop an accessory or editor please contact us at [support@microbit.org](mailto:support@microbit.org?subject=Request%20for%20the%20latest%20micro%3Abit&body=Name%3A%0D%0A%0D%0AAddress%3A%0D%0A%0D%0AContact%20number%3A) ## How do I find out more about the hardware and software updates? diff --git a/projects.md b/projects.md index cfc080d..c3f5dff 100644 --- a/projects.md +++ b/projects.md @@ -11,7 +11,7 @@ lang: en This page collates technical projects, research and development that have been done on/with the BBC micro:bit in universities, labs, clubs and schools around the world. It has been created by the micro:bit community, and you are welcome to submit any of your own work to it by [submitting a project template](https://github.com/microbit-foundation/dev-docs/issues/new?template=labs.md) -If you’d like to see [research about the impact of micro:bit, head over to our main site](https://microbit.org/research/). +If you'd like to see [research about the impact of micro:bit, head over to our main site](https://microbit.org/research/). --- diff --git a/software/runtime.md b/software/runtime.md index e4e6b09..89d380c 100644 --- a/software/runtime.md +++ b/software/runtime.md @@ -68,7 +68,7 @@ Firstly, you should get yourself into a situation where you can build the micro: If you would have a feature request, or would like to get involved in the micro:bit runtime development, visit the [list of open issues](https://github.com/lancaster-university/microbit-dal/issues) and raise a new issue if it isn't already in there. -You can also join the [microbit developer community on Slack](/community) if you'd like to discuss the micro:bit runtime and its components. +You can also join the [micro:bit developer community on Slack](/community) if you'd like to discuss the micro:bit runtime and its components. If you think you've found a bug in the DAL, please [log a new issue in the GitHub DAL repository](https://github.com/lancaster-university/microbit-dal/issues/new) From c5f0fbe3400befb678c5317041a41155e39aee49 Mon Sep 17 00:00:00 2001 From: Phil Howard Date: Wed, 14 Oct 2020 20:48:09 +0100 Subject: [PATCH 20/21] Rounded-rectangle pads --- accessories/making-accessories.md | 10 +++++----- hardware/powersupply.md | 6 +++--- latest-revision/latest-revision-accessories.md | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/accessories/making-accessories.md b/accessories/making-accessories.md index 3d85d26..923b9b1 100644 --- a/accessories/making-accessories.md +++ b/accessories/making-accessories.md @@ -30,15 +30,15 @@ The edge connector on the V2 board revision is backwards ## Battery Pads -There are two elongated pads on the back of the micro:bit. These allow you to connect a battery holder directly, instead of via the JST connector. +There are two rounded-rectangle pads on the back of the micro:bit. These allow you to connect a battery holder directly, instead of via the JST connector. -![Picture of the two elongated pads](/docs/accessories/assets/making-accessories-d7c25.png) +![Picture of the two rounded-rectangle pads](/docs/accessories/assets/making-accessories-d7c25.png) ### V2 revision In the V2 board revision, the 3V lozenge is connected to the 3V ring on the edge connector. -- If you make an accessory that uses the elongated pads, it must be protected from reverse charging when the board is powered by USB, battery or edge connector. -- You can now source power from the elongated pads if you are making an accessory. They are consistent with the power architecture of the edge connector. +- If you make an accessory that uses the rounded-rectangle pads, it must be protected from reverse charging when the board is powered by USB, battery or edge connector. +- You can now source power from the rounded-rectangle pads if you are making an accessory. They are consistent with the power architecture of the edge connector. -Due to the addition of a speaker, current accessories that use the elongated pads to power the micro:bit will no longer fit. +Due to the addition of a speaker, current accessories that use the rounded-rectangle pads to power the micro:bit will no longer fit. diff --git a/hardware/powersupply.md b/hardware/powersupply.md index 223c590..8be999c 100644 --- a/hardware/powersupply.md +++ b/hardware/powersupply.md @@ -17,7 +17,7 @@ Power to the micro:bit may be provided via: - USB connection via the interface chip (which has an on-board regulator) - A battery plugged into the JST connector - The 3V and GND pins on the edge connector -- The two elongated pads on the rear right of the board +- The two rounded-rectangle pads on the rear right of the board Power from the micro:bit can be provided by the 3V and GND pins to small external circuits. @@ -85,9 +85,9 @@ There is further information about the [battery connection and use](https://supp ### 3V Ring Powering The micro:bit may be powered from the 3V/GND rings on the edge connector. -There are also two elongated pads on the far right of the back of the PCB that can be used to supply power (e.g. solderable pads for a 2xAAA holder that has wires or pins at one edge). [The topmost pad is 0V and the bottom most pad is 3V](../../accessories/making-accessories/#battery-pads). +There are also two rounded-rectangle pads on the far right of the back of the PCB that can be used to supply power (e.g. solderable pads for a 2xAAA holder that has wires or pins at one edge). [The topmost pad is 0V and the bottom most pad is 3V](../../accessories/making-accessories/#battery-pads). -When powering from the 3V ring or the elongated pads on the PCB, you should take appropriate best practice precautions: +When powering from the 3V ring or the rounded-rectangle pads on the PCB, you should take appropriate best practice precautions: 1. Fit an external protection diode (preferably with a low Vf rating) to prevent damage due to the power supply being connected the wrong way round. diff --git a/latest-revision/latest-revision-accessories.md b/latest-revision/latest-revision-accessories.md index 7a13861..664aa24 100644 --- a/latest-revision/latest-revision-accessories.md +++ b/latest-revision/latest-revision-accessories.md @@ -78,9 +78,9 @@ Whereas on previous revisions, the I2C bus was shared between the motion sensor ### Power -The micro:bit can now be powered from the two losenge shaped pads on the rear of the board and the 3V/GND pins. +The micro:bit can now be powered from the two rounded-rectangle pads on the rear of the board and the 3V/GND pins. -If you use the losenge pads, you must diode (or otherwise) protect themselves from the micro:bit having power via another source. This was still necessary on the previous revision when the board was powered from battery, but is now true for USB and edge-connector power also. +If you use the rounded-rectangle pads, you must diode (or otherwise) protect themselves from the micro:bit having power via another source. This was still necessary on the previous revision when the board was powered from battery, but is now true for USB and edge-connector power also. The nRF52 supplies 300mA to drive the board. 110mA is reserved for powering on-board components. **190mA** is then available for accessories. From 73903fcd4e1fe6fd726ac386020d5a6d74d6d68e Mon Sep 17 00:00:00 2001 From: Phil Howard Date: Wed, 14 Oct 2020 20:48:36 +0100 Subject: [PATCH 21/21] Tidy issue templates --- .github/ISSUE_TEMPLATE/bug.md | 4 +++- .github/ISSUE_TEMPLATE/labs.md | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug.md b/.github/ISSUE_TEMPLATE/bug.md index 9bc2e9d..3239215 100644 --- a/.github/ISSUE_TEMPLATE/bug.md +++ b/.github/ISSUE_TEMPLATE/bug.md @@ -8,11 +8,13 @@ about: Create a github issue to fix an error in the docs --- ## Description + A clear and concise description of what the error is. +## Expected Behaviour -## Expected behavior A clear and concise description of what you expected to see/read ## Screenshots + If applicable, add screenshots to help explain the issue \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/labs.md b/.github/ISSUE_TEMPLATE/labs.md index 536398f..4165998 100644 --- a/.github/ISSUE_TEMPLATE/labs.md +++ b/.github/ISSUE_TEMPLATE/labs.md @@ -7,9 +7,10 @@ about: Create a github issue to add your research or project to tech.microbit.or --- -Edit as neccessary +Edit as necessary ### Example Project + ![Image](https://images.unsplash.com/photo-1552581234-26160f608093?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1050&q=80){:style="max-width: 50%;"} **Project abstract:** A brief summary of the project to help people reading this to understand it.