diff --git a/README.md b/README.md index 0cc8087..695f7f9 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ [![License: CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) -# Microbit Developer Community Docs +## Microbit Developer Community Docs These docs form the content that is rendered into the [micro:bit Developer Commmunity site](http://tech.microbit.org) @@ -8,5 +8,6 @@ These docs form the content that is rendered into the [micro:bit Developer Commm These docs are made available under a Creative Commons license, to support the micro:bit community. Issues and Pull Requests are welcomed and encouraged. Please review the [Foundation community and brand guidelines](https://microbit.org/community/) and the [tech.microbit.org](http://tech.microbit.org) homepage for further details about contribution. -**Documentation development tools** +### Documentation development tools + - The docs are mostly written in [Markdown](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) diff --git a/accessories/making-accessories.md b/accessories/making-accessories.md index 1cdaf5d..e4b6bba 100644 --- a/accessories/making-accessories.md +++ b/accessories/making-accessories.md @@ -21,19 +21,20 @@ Many micro:bit accessories are designed to use an edge connector socket, so it i 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. -* Details of the [edge connector and pinout](/hardware/edgeconnector) -* Details about [powering things from the board](/hardware/powersupply) +- 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. - ![Picture of the two lozenges](/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. diff --git a/bluetooth/apps-and-examples.md b/bluetooth/apps-and-examples.md index e902df8..04ebf65 100644 --- a/bluetooth/apps-and-examples.md +++ b/bluetooth/apps-and-examples.md @@ -9,46 +9,46 @@ ref: bluetooth lang: en --- +## Overview + Bluetooth applications can run on a variety of devices, including but not limited to smart phones and tablets. You can also run Bluetooth enabled applications on devices such as a Raspberry Pi. 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) faciliates [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) +- [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 +- [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](https://scratch.mit.edu/microbit) facilitates a connection to the micro:bit and uses display, buttons and motion sensor services. +- [Scratch](https://scratch.mit.edu/microbit) facilitates a connection to the micro:bit and uses display, buttons and motion sensor services. -[Bitty Software Apps](https://bittysoftware.blogspot.com/p/applications.html) +- [Bitty Software Apps](https://bittysoftware.blogspot.com/p/applications.html) -[micro:bit Blue App for Android](https://github.com/microbit-foundation/microbit-blue) +- [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 microbit](http://www.microbit-js.org/controlling-microbit-with-droidscript/) -[droidscript plugin](http://www.microbit-js.org/installing-the-microbit-plugin-for-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. +- [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 amulti-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. +- [microbit-web-bluetooth](https://github.com/thegecko/microbit-web-bluetooth) - Web Bluetooth library implementing the micro:bit Bluetooth Profile. -[microbit-web-components](https://github.com/thegecko/microbit-web-components) - Web Components for all the micro:bit features exposed via BLE. +- [microbit-web-components](https://github.com/thegecko/microbit-web-components) - Web Components for all the micro:bit features exposed via BLE. -[Gobot](https://gobot.io/documentation/platforms/microbit/) - Framework for the Go programming language to program devices in the real world. It can access the micro:bit via Bluetooth LE. +- [Gobot](https://gobot.io/documentation/platforms/microbit/) - Framework for the Go programming language to program devices in the real world. It can access the micro:bit via Bluetooth LE. -[micro:bit Slither](https://github.com/novucs/microbit-slither) - Multiplayer snake game on Android, controlled with micro:bits via Bluetooth. +- [micro:bit Slither](https://github.com/novucs/microbit-slither) - Multiplayer snake game on Android, controlled with micro:bits via Bluetooth. -[Serial Bluetooth Terminal](https://play.google.com/store/apps/details?id=de.kai_morich.serial_bluetooth_terminal)- Android app capable to send and receive micro:bit Bluetooth UART data. +- [Serial Bluetooth Terminal](https://play.google.com/store/apps/details?id=de.kai_morich.serial_bluetooth_terminal)- Android app capable to send and receive micro:bit Bluetooth UART data. -[Bluetooth Low Energy Remote Control for Spotify](https://www.hackster.io/josejuansanchez/bluetooth-low-energy-remote-control-for-spotify-3438d1) - This project allows you to configure your micro:bit to work as a Bluetooth Low Energy remote control for Spotify on macOS. +- [Bluetooth Low Energy Remote Control for Spotify](https://www.hackster.io/josejuansanchez/bluetooth-low-energy-remote-control-for-spotify-3438d1) - This project allows you to configure your micro:bit to work as a Bluetooth Low Energy remote control for Spotify on macOS. -[Musical Instrument Controller](https://phwallen.github.io/microbit-music-controller/) - A micro:bit instrument that communities with an iPad via Bluetooth into MIDI controller app that can play music via GarageBand. \ No newline at end of file +- [Musical Instrument Controller](https://phwallen.github.io/microbit-music-controller/) - A micro:bit instrument that communities with an iPad via Bluetooth into MIDI controller app that can play music via GarageBand. \ No newline at end of file diff --git a/bluetooth/index.md b/bluetooth/index.md index 8e39b09..2d98b1f 100644 --- a/bluetooth/index.md +++ b/bluetooth/index.md @@ -8,16 +8,18 @@ permalink: /bluetooth/ ref: bluetooth lang: en --- -# Overview + +## 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. ## 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. ## micro:bit Bluetooth Features @@ -32,13 +34,11 @@ The processor also has a number of non-bluetooth proprietary modes of operation, ## 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) -[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 +- [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) +- [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) - +## Further information +- [Bluetooth Specification](https://www.bluetooth.com/specifications/adopted-specifications) diff --git a/bluetooth/profile.md b/bluetooth/profile.md index e3dffba..32b32e9 100644 --- a/bluetooth/profile.md +++ b/bluetooth/profile.md @@ -15,7 +15,6 @@ The micro:bit supports Bluetooth via a single BBC micro:bit profile which was cu 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 The BBC micro:bit [Bluetooth profile is defined in the DAL](https://lancaster-university.github.io/microbit-docs/ble/profile/) @@ -46,20 +45,18 @@ Data transfer rates will only be a few 100K per second at best and it very much 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. 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 +- [Martin Woolley's Bluetooth Blog](https://bluetooth-developer.blogspot.com/) has a range of information on using Bluetooth with micro:bit -[BittySoftware](https://bittysoftware.blogspot.com) has a range of Bluetooth enabled software for the micro:bit +- [BittySoftware](https://bittysoftware.blogspot.com) has a range of Bluetooth enabled software for the micro:bit -[Original micro:bit "Out of the Box" experience](https://support.microbit.org/a/solutions/articles/19000021613), including some of the attributes in the Bluetooth Profile +- [Original micro:bit "Out of the Box" experience](https://support.microbit.org/a/solutions/articles/19000021613), including some of the attributes in the Bluetooth Profile -[Full profile with the display unused](https://lancaster-university.github.io/microbit-docs/resources/microbit-1_4_17_pwr0.zip). If you want to write to the display over bluetooth then you should use this file instead of the 'Out of the Box' hex, which uses the display. +- [Full profile with the display unused](https://lancaster-university.github.io/microbit-docs/resources/microbit-1_4_17_pwr0.zip). If you want to write to the display over bluetooth then you should use this file instead of the 'Out of the Box' hex, which uses the display. diff --git a/community/slack.md b/community/slack.md index 775038b..527df34 100644 --- a/community/slack.md +++ b/community/slack.md @@ -39,8 +39,11 @@ 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 diff --git a/hardware/1-3-revision.md b/hardware/1-3-revision.md index a2efb86..51f236e 100644 --- a/hardware/1-3-revision.md +++ b/hardware/1-3-revision.md @@ -17,9 +17,9 @@ 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 @@ -29,12 +29,9 @@ 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 [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 shows 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. ## Hardware Description @@ -53,7 +50,6 @@ There is an onboard 2.4GHz radio engine used to provide Bluetooth capabilities v | Debug | SWD, jlink/OB | More Info | [here](/software) - ### Bluetooth Wireless Communication The on board 2.4GHz transciever supports Bluetooth communications via the Nordic S110 SoftDevice, which provides a fully qualified Bluetooth low energy stack. @@ -71,7 +67,6 @@ This allows the micro:bit to communicate with a wide range of Bluetooth devices, | Profiles | 1 [BBC micro:bit profile](https://lancaster-university.github.io/microbit-docs/ble/profile/) | More Info | [here](/bluetooth) - ### 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 @@ -91,7 +86,6 @@ Additionally, the micro:bit runtime software adds a 'group code' to each data pa | Payload size | 32 (standard) 255 (if reconfigured) | More Info | [Micro:bit Radio](https://lancaster-university.github.io/microbit-docs/ubit/radio) - ### 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. @@ -106,7 +100,6 @@ Both A and B buttons are connected to GPIO pins that are also accessible on the | Debounce | (A & B) software debounced, 54ms period | Pullup | (A & B) external 4K7, (System) 10K - ### Display The display is a 5x5 array of LEDs. @@ -140,7 +133,6 @@ It is connected to the application processor via the I2C bus. | On board gestures | 'freefall' | Other gestures | Other gestures are implemented by software algorithms in the runtime. - ### Magnetometer The magnetometer is a separate chip that provides magnetic field strength sensing. @@ -155,7 +147,6 @@ This device is connected to the application processor via the I2C bus. | Full Scale range | 1000uT | Sensitivity | 0.10uT - ### Temperature Sensing The nRF51 application processor has an on board core temperature sensor. @@ -193,7 +184,6 @@ The edge connector brings out many of the GPIO circuits of the application proce | 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. @@ -208,7 +198,6 @@ Power to the micro:bit may be provided via the USB connection, via the interface | Max current provided via edge connector | 90mA | More Info | [here](../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. @@ -223,7 +212,6 @@ The interface chip handles the USB connection, and is used for flashing new code | Debug capabilities | SWD | More Info | [here](/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. @@ -237,7 +225,6 @@ The micro:bit has an on board USB communications stack, that is built into the f | | [Communications Device Class (CDC)](https://en.wikipedia.org/wiki/USB_communications_device_class) | More Info | [here](/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 debuged via it's integral SWD software debug interface, for example to load initial bootloader code into this processor at manufacturing time, or to recover a lost bootloader. @@ -257,33 +244,32 @@ We have some [nice 2D and 3D CAD drawings and models of the micro:bit](https://g | Dimensions | 5cm(w) 4cm(h) | Weight | 5g +## Further information -### Links - -[Schematic](../schematic) +- [Schematic](../schematic) -[Reference Design](../reference-design) +- [Reference Design](../reference-design) -[Nordic NRF51 datasheet](http://infocenter.nordicsemi.com/pdf/nRF51822_PS_v3.1.pdf) +- [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 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) +- [Freescale KL26 data sheet](http://www.nxp.com/docs/pcn_attachments/16440_KL26P64M48SF5_Rev.4.pdf) -[Freescale MMA8652 accelerometer datasheet](http://cache.freescale.com/files/sensors/doc/data_sheet/MMA8652FC.pdf) +- [Freescale MMA8652 accelerometer datasheet](http://cache.freescale.com/files/sensors/doc/data_sheet/MMA8652FC.pdf) -[Freescale MAG3110 magnetometer datasheet](http://cache.freescale.com/files/sensors/doc/data_sheet/MAG3110.pdf) +- [Freescale MAG3110 magnetometer datasheet](http://cache.freescale.com/files/sensors/doc/data_sheet/MAG3110.pdf) -[Technical Specifications 1](http://www.bbc.co.uk/mediacentre/mediapacks/microbit/specs) +- [Technical Specifications 1](http://www.bbc.co.uk/mediacentre/mediapacks/microbit/specs) -[Technical Specifications 2](http://www.bbc.co.uk/mediacentre/mediapacks/microbit/thebbcmicrobit) +- [Technical Specifications 2](http://www.bbc.co.uk/mediacentre/mediapacks/microbit/thebbcmicrobit) -[Safety Advice](https://www.microbit.org/safety-advice) +- [Safety Advice](https://www.microbit.org/safety-advice) -[I2C specification](https://www.nxp.com/docs/en/user-guide/UM10204.pdf) +- [I2C specification](https://www.nxp.com/docs/en/user-guide/UM10204.pdf) -[SPI 'specification'](https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus) +- [SPI 'specification'](https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus) -[Arm Mbed overview](https://www.mbed.com/en/about-mbed/what-mbed/) +- [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) +- [Fritzing diagram, contributed by Kok Ho Huen](/docs/hardware/assets/Microbit.fzpz.zip) diff --git a/hardware/1-5-revision.md b/hardware/1-5-revision.md index 47b28cd..e8bea5a 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,7 +18,7 @@ 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 perhipherals. @@ -28,14 +28,13 @@ 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 shows 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, and is designed to be 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. @@ -52,8 +51,7 @@ There is an onboard 2.4GHz radio engine used to provide Bluetooth capabilities v | Debug | SWD, jlink/OB | 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 transciever supports Bluetooth communications via the Nordic S110 SoftDevice, which provides a fully qualified Bluetooth low energy stack. This allows the micro:bit to communicate with a wide range of Bluetooth devices, including smartphones and tablets. @@ -70,8 +68,7 @@ This allows the micro:bit to communicate with a wide range of Bluetooth devices, | Profiles | [BBC micro:bit profile](https://lancaster-university.github.io/microbit-docs/ble/profile/) | More Info | [Bluetooth](../../bluetooth) - -## Low Level Radio Communications +### Low Level Radio Communications The on board 2.4GHz transciever supports a number of other radio communications standards, including the proprietary Nordic Gazell protocol. This protocol provides a very simple small-packet broadcast radio interface between other devices that support this proprietary protocol, such as other micro:bit devices. @@ -90,8 +87,7 @@ Additionally, the micro:bit runtime software adds a 'group code' to each data pa | Payload size | 32 (standard) 255 (if reconfigured) | 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. @@ -105,8 +101,7 @@ Both A and B buttons are connected to GPIO pins that are also accessible on the | Debounce | (A & B) software debounced, 54ms period | Pullup | (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. @@ -124,7 +119,7 @@ This LED matrix is also used to sense ambient light, by repeatedly switching som | 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. @@ -142,7 +137,7 @@ 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. @@ -155,7 +150,7 @@ This is exposed via the standard runtime software, and provides an estimate of a | 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. 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. @@ -178,8 +173,7 @@ The edge connector brings out many of the GPIO circuits of the application proce | Pitch | 1.27mm, 80 way double sided. | 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. @@ -193,8 +187,7 @@ Power to the micro:bit may be provided via the USB connection, via the interface | Max current provided via edge connector | 90mA | 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. @@ -208,8 +201,7 @@ The interface chip handles the USB connection, and is used for flashing new code | Debug capabilities | SWD | 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 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. @@ -222,8 +214,7 @@ The micro:bit has an on board USB communications stack, that is built into the f | | [Communications Device Class (CDC)](https://en.wikipedia.org/wiki/USB_communications_device_class) | 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 debuged via it's integral SWD software debug interface, for example to load initial bootloader code into this processor at manufacturing time, or to recover a lost bootloader. @@ -233,7 +224,7 @@ The interface processor can be used with special host tools to debug code that i | 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. @@ -242,13 +233,12 @@ We have some [nice 2D and 3D CAD drawings and models of the micro:bit](https://g | Dimensions | 5cm(w) 4cm(h) | Weight | 5g +## Further information -# Links - -[BBC Technical Specifications](http://www.bbc.co.uk/mediacentre/mediapacks/microbit/specs) +- [BBC Technical Specifications](http://www.bbc.co.uk/mediacentre/mediapacks/microbit/specs) -[I2C specification](http://cache.nxp.com/documents/user_manual/UM10204.pdf) +- [I2C specification](http://cache.nxp.com/documents/user_manual/UM10204.pdf) -[SPI 'specification'](https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus) +- [SPI 'specification'](https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus) -[Fritzing diagram, contributed by Kok Ho Huen](/docs/hardware/assets/Microbit.fzpz.zip) +- [Fritzing diagram, contributed by Kok Ho Huen](/docs/hardware/assets/Microbit.fzpz.zip) diff --git a/hardware/edgeconnector.md b/hardware/edgeconnector.md index 838b021..5ed8132 100644 --- a/hardware/edgeconnector.md +++ b/hardware/edgeconnector.md @@ -25,7 +25,6 @@ There are a number of external PCB connectors for purchase with an 80w 1.27mm pi Only the pins on the front are connected to signals. The back rings are connected to the front rings, but the back small strips are unconnected. - ## Edge Connector Pins The diagrams below show the assignation of the micro:bit pins. On the V2 board revision @@ -36,6 +35,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 @@ -145,8 +145,7 @@ This table shows various data about each of the pins on the micro:bit edge conne | dir | the startup conditions (direction) when the micro:bit boots: Input or Output | pull? | pull up or down resistors. e10Mu means an external 10Mohm pullup, i12Kd means an internal 12K pull down. - -Notes +#### Notes 1. RINGs for 0, 1, 2, 3V and GND are also connected to the respective reverse side rings on the edge connector. @@ -162,18 +161,17 @@ Notes 7. The pin marked 'ACCESSIBILITY' is used to enable/disable an on-board accessibility mode, and should not be used for anything else (even though it can be used as a GPIO for testing). Future versions of the official micro:bit editors may remove the ability to write to this pin. - ## Uncoupling Default Functionality Pins that are marked with brackets around functions, require the default functionality for that pin to be disabled, before other functions can be used. -**pins: P3, P4, P6, P7, P9, P10** +### pins: P3, P4, P6, P7, P9, P10 These pins are coupled to the LED matrix display, and also it's associated ambient light sensing mode. To disable the display driver feature (which will automatically disable the light sensing feature) call the DAL function `display.enable(false)`. To turn the display driver back on again later, call the DAL function `display.enable(true)`. Note also that the LED 3x9 matrix connects LEDs with associated resistors across these pins, so you should take that into account when designing circuits to use these pins for other purposes. -**pins: P5, P11** +### pins: P5, P11 These pins are assigned to the two on-board buttons. In their default setup with all the standard high level languages, there is a global uBit instance containing: `uBit.buttonA`, `uBit.buttonB` and `uBit.buttonAB`. @@ -181,8 +179,7 @@ Buttons are hooked into the system timer in their constructor for regular deboun Be aware though, that there are 10K external pullup resistors fitted to the micro:bit board. - -**pins: P19, P20** +### pins: P19, P20 These pins are allocated to the I2C bus, which is used by both the onboard motion sensor. It is strongly suggested that you avoid using these pins for any function other than I2C. @@ -190,15 +187,14 @@ It is possible to disable the DAL services that use these pins as the I2C bus, b The main reason you might choose to use these pins for other purposes would be if you were designing your own micro:bit variant without any I2C devices, and then it would free up two more pins for other purposes. - ## Power Supply Capabilities There is a dedicated page on [power supply capabilities and parameters](/hardware/powersupply), which better defines how you can use the GND and 3V rings - ## GPIO Capabilities ### NRF51 + These key GPIO parameters are transcribed directly from Section 6, 7 and 8 of the [nRF51822 Datasheet](https://infocenter.nordicsemi.com/pdf/nRF51822_PS_v3.1.pdf), and provided here as a handy reference. | KEY | Description | section | Min | Max | @@ -217,7 +213,6 @@ These key GPIO parameters are transcribed directly from Section 6, 7 and 8 of th | RPU | Pull up resistance | 8.23 | 11K | 16K | | RPD | Pull down resistance | 8.23 | 11K | 16K | - NOTE 1: The maximum number of pins configured as high-drive (5mA) at any one time is 3 pins. NOTE 2: A common way that the maximum pin voltages can be exceeded, is to attach an inductive load such as a speaker, motor, or piezo sounder directly to the pin. These devices often have significant back-EMF when energised, and will generate voltages that exceed the maximum specifications of the GPIO pins, and may cause premature device failure. @@ -227,6 +222,7 @@ NOTE 3: The pin marked 'ACCESSIBILITY' is used to enable/disable an on-board acc NOTE 4: The BBC suggest in the safety guide, that the maximum current you can draw from the whole edge connector at any one time is v190mA. This is set based on the 30mA budget for on board peripherals, and the fact that the on board regulator of the KL26 when powered from USB is rated at a maximum of 120mA. On the latest board revision the maximum current is V2270mA, though it is possible that the on-board mic and speaker can draw more current, so this value is TBC. ### NRF52 + These key GPIO parameters are transcribed directly from Section 6, 7 and 8 of the [nRF52833 Datasheet](https://infocenter.nordicsemi.com/pdf/nRF52833_PS_v1.2.pdf), and provided here as a handy reference. | KEY | Description | section | Min | Max | @@ -263,6 +259,7 @@ There are also some nice ideas that have surfaced in the community such as using Can you help to find or design a better connection solution to the micro:bit edge connector? Share your designs and discoveries with us! ## Edge Connnectors for the BBC micro:bit + [Add your connector to our list](http://github.com/microbit-foundation/dev-docs/edit/master/hardware/edgeconnector.md){: .btn.sm-btn} | Supplier | Product @@ -270,17 +267,16 @@ Can you help to find or design a better connection solution to the micro:bit edg |[4UCon](http://www.4uconnector.com/online/index.asp)| [4UCon connector](https://cdn.shopify.com/s/files/1/2311/3697/files/1944_Drawing.pdf?3325) |[Cyclonn](http://www.dgyuliang.net)| [Cylconn 90 degree connector](http://www.dgyuliang.net/d/file/Produtcs/Customized%20Connector/MICRO%20BIT%20Connector/84a0fe06b4296135d64139b5b4297ef3.pdf), [Cylconn 180 degree connector](http://www.dgyuliang.net/d/file/Produtcs/Customized%20Connector/MICRO%20BIT%20Connector/0d43030af84ade6fc3f00e242079c055.pdf) - ## Further information -[micro:bit schematics](../schematic) +- [micro:bit schematics](../schematic) -[micro:bit CAD resources (Kitronik)](https://www.kitronik.co.uk/blog/bbc-microbit-cad-resources/) +- [micro:bit CAD resources (Kitronik)](https://www.kitronik.co.uk/blog/bbc-microbit-cad-resources/) -[Eagle libraries for the micro:bit edge connector](https://github.com/proto-pic/micro-bit-eagle-libraries) +- [Eagle libraries for the micro:bit edge connector](https://github.com/proto-pic/micro-bit-eagle-libraries) -[KiCad component and footprint library](https://github.com/anthonykirby/kicad_microbit_connector) +- [KiCad component and footprint library](https://github.com/anthonykirby/kicad_microbit_connector) -[2D CAD drawing](https://www.kitronik.co.uk/pdf/bbc_microbit_mechanical_datasheet_V2.pdf) This drawing has all the key micro:bit dimensions, including the pin spacing of the various pins of the edge connector on the micro:bit board. +- [2D CAD drawing](https://www.kitronik.co.uk/pdf/bbc_microbit_mechanical_datasheet_V2.pdf) This drawing has all the key micro:bit dimensions, including the pin spacing of the various pins of the edge connector on the micro:bit board. -[Kitronik BBC micro:bit CAD Resources](https://kitronik.co.uk/blogs/resources/bbc-microbit-cad-resources) This page contains a range of resources that can be used to create online reources or 3D printed designs +- [Kitronik BBC micro:bit CAD Resources](https://kitronik.co.uk/blogs/resources/bbc-microbit-cad-resources) This page contains a range of resources that can be used to create online reources or 3D printed designs diff --git a/hardware/i2c-shared.md b/hardware/i2c-shared.md index 196229b..977e45a 100644 --- a/hardware/i2c-shared.md +++ b/hardware/i2c-shared.md @@ -16,8 +16,8 @@ The motion sensors on the board are on the same I2C bus as the edge connector I2 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) ### i2c block diagram -![i2c block](/docs/hardware/assets/i2c-block.svg) +![i2c block](/docs/hardware/assets/i2c-block.svg) ### Table of addresses used @@ -30,16 +30,18 @@ The v1.5 micro:bit has a footprint for two different motion sensors: one made by Overall, this means 0x1D, 0x0E (from v1.3), 0x1F and 0x19 (for the revision) are reserved for onboard use. ### Table of address used by micro:bit accessories (please edit) + If you make an accessory for the micro:bit, please help us by editing the table below and sharing the details of the i2c addresses you use. | accessory name | organisation | i2c address(es) used | |----------------|--------------|-----------------------| | eg [banana-bit]()|eg Banana enterprises | eg 0x76, 0x29 | - ### Acceptable capacitance for I2C accessories In our recent testing for the motion sensor change, we found that a 10nF cap connected SCL-GND slowed down the i2c bus, but it continued to operate. Separately, capacitance was added to SDA until it ceased operation: + - 100KHz continued with 1nF but failed with 2nF. - 400kHz continued with 150pF but failed with 180pF. + No difference was seen between the revisions. diff --git a/hardware/i2c.md b/hardware/i2c.md index 642b198..eec709f 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 @@ -30,18 +31,20 @@ The external lines run to the edge connector and can be used for accessories. This means 0x1E, 0x1F and 0x19 are reserved for onboard use. ### Table of address used by micro:bit accessories (please edit) + If you make an accessory for the micro:bit, please help us by editing the table below and sharing the details of the i2c addresses you use. | accessory name | organisation | i2c address(es) used | |----------------|--------------|-----------------------| | [EDU:BIT](https://www.cytron.io/p-edubit)| Cytron Technologies | 0x08 (0x10/0x11) | - ### Acceptable capacitance for I2C accessories In our recent testing for the motion sensor change, we found that a 10nF cap connected SCL-GND slowed down the i2c bus, but it continued to operate. Separately, capacitance was added to SDA until it ceased operation: + - 100KHz continued with 1nF but failed with 2nF. - 400kHz continued with 150pF but failed with 180pF. + No difference was seen between the revisions. ## Notes diff --git a/hardware/index.md b/hardware/index.md index e2ec62a..9eb21dc 100644 --- a/hardware/index.md +++ b/hardware/index.md @@ -10,6 +10,7 @@ lang: en --- ## Overview + {:notoc} * TOC @@ -17,8 +18,8 @@ lang: en ![Board overview 2.0](/docs/hardware/assets/microbit-overview-2.png) +## Hardware block diagram -### Hardware block diagram ![2.0 block](/docs/hardware/assets/v2-block.svg) ## Getting Started With the micro:bit Hardware @@ -29,10 +30,9 @@ An interface processor is connected to the application processer and manages com 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 [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 shows 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. ## Hardware Description @@ -53,7 +53,6 @@ There is an onboard 2.4GHz radio peripheral used to provide Bluetooth and custom | Debug | [SWD](https://infocenter.nordicsemi.com/index.jsp?topic=%2Fps_nrf52833%2Fdif.html), [J-Link/OB](https://www.segger.com/products/debug-probes/j-link/models/j-link-lite/j-link-lite-cortex-m/) | More Info | [Software](../software), [NRF52 datasheet](https://infocenter.nordicsemi.com/index.jsp?topic=%2Fstruct_nrf52%2Fstruct%2Fnrf52833.html&cp=3_1) - ### Bluetooth Wireless Communication The on board 2.4GHz supports Bluetooth communications via the [Nordic S140 SoftDevice](https://www.nordicsemi.com/Software-and-Tools/Software/S140), which provides a fully qualified Bluetooth low energy stack. @@ -71,7 +70,6 @@ This allows the micro:bit to communicate with a wide range of Bluetooth devices, | 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 transciever supports a number of other radio communications standards, on which we build the microbit-radio protocol @@ -91,7 +89,6 @@ Additionally, the micro:bit runtime software adds a 'group code' to each data pa | Payload size | 32 (standard) 255 (if reconfigured) | More Info | [Micro:bit Radio](https://lancaster-university.github.io/microbit-docs/ubit/radio) - ### Buttons The two buttons on the front of the micro:bit, and the one button on the back, are tact momentary push-to-make buttons. The back button is connected to the KL27 interface processor and to the NRF52 processor for system reset purposes. This means that the application will reset regardless of if it is powered from USB or from battery. @@ -106,7 +103,6 @@ Both A and B buttons are connected to GPIO pins that are also accessible on the | Debounce | (A & B) software debounced, 54ms period | Pullup | (A & B) external 4K7, (System) 10K - ### Display The display is a 5x5 array of LEDs. @@ -206,7 +202,6 @@ The edge connector brings out many of the GPIO circuits of the application proce | Pitch | 1.27mm, 80 way double sided. | Pads| 5 pads, with 4mm holes - ### Power supply Power to the micro:bit may be provided via 5V on the USB connector, or via a 3V battery plugged into the JST connector. It is also possible (with care) to power the micro:bit from the 3V /GND rings on the edge connector. The 3V /GND rings at the bottom can be used to supply power to external circuits. The board uses an LDO specified up to 300mA, with thermal cut-out for short circuit protection. @@ -220,7 +215,6 @@ Power to the micro:bit may be provided via 5V on the USB connector, or via a 3V | Max current provided via edge connector | 190mA | 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. @@ -235,7 +229,6 @@ The interface chip handles the USB connection, and is used for flashing new code | Debug capabilities | SWD | More Info | [DAPLink](/software/daplink-interface/), [KL27 reference manual](https://www.nxp.com/docs/en/reference-manual/KL27P64M48SF6RM.pdf) [KL27 data sheet](https://www.nxp.com/docs/en/data-sheet/KL27P64M48SF6.pdf) - ### 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 @@ -250,7 +243,6 @@ MICROBIT drive in order to load code into the application processor. It also all | | [Communications Device Class (CDC)](https://en.wikipedia.org/wiki/USB_communications_device_class) | 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 KL27 interface processor code can also be debuged via it's integral SWD software debug interface, for example to load initial bootloader code into this processor at manufacturing time, or to recover a lost bootloader. @@ -270,13 +262,12 @@ We have some [nice 2D and 3D CAD drawings and models of the micro:bit](https://g | Dimensions | 51.60mm(w) 42.00mm(h) 11.65mm(d), button depth to board 4.55mm, speaker depth to board 3.00mm, JST connector to board 5.50mm | Weight | TBC +## Further information -### Links - -[BBC Technical Specifications](http://www.bbc.co.uk/mediacentre/mediapacks/microbit/specs) +- [BBC Technical Specifications](http://www.bbc.co.uk/mediacentre/mediapacks/microbit/specs) -[I2C specification](https://www.nxp.com/docs/en/user-guide/UM10204.pdf) +- [I2C specification](https://www.nxp.com/docs/en/user-guide/UM10204.pdf) -[SPI 'specification'](https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus) +- [SPI 'specification'](https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus) -[Fritzing diagram, contributed by Kok Ho Huen](/docs/hardware/assets/Microbit.fzpz.zip) +- [Fritzing diagram, contributed by Kok Ho Huen](/docs/hardware/assets/Microbit.fzpz.zip) diff --git a/hardware/power-consumption.md b/hardware/power-consumption.md index 37802c0..a2b272b 100644 --- a/hardware/power-consumption.md +++ b/hardware/power-consumption.md @@ -10,23 +10,31 @@ 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. -**Awake** Board is fully operational. The nRF52 and KL27 will try and conserve power if they can. Power LED is lit. +### Awake + +Board is fully operational. The nRF52 and KL27 will try and conserve power if they can. Power LED is lit. + +### Sleep -**Sleep** Put the nRF52 to sleep when instructed by CODAL. Wake when USB is connected, reset is pressed or instructed to by CODAL. +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. Removing the USB power cable and re-adding it will also wake the micro:bit -**Power off** Power off the device. Triggered by pressing and holding the reset button. +### 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. ## 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 diff --git a/hardware/powersupply.md b/hardware/powersupply.md index 523d5cb..409f469 100644 --- a/hardware/powersupply.md +++ b/hardware/powersupply.md @@ -9,7 +9,6 @@ ref: hardware lang: en --- - ## Overview Power to the micro:bit may be provided via: @@ -23,15 +22,15 @@ Power from the micro:bit can be provided by the 3V and GND pins to small externa It's 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 it's on chip regulator to provide power, and 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 plugged into the edge connector. +- 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 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. +- When powered from a battery, the KL chip is not powered up and the USB Indicator LED will not light up. -* A low-Vf diode is used to switch between sources. The diode prevents back-powering of any source from any other source and means you can have a USB cable and battery pack connected simultaneously. +- A low-Vf diode is used to switch between sources. The diode prevents back-powering of any source from any other source and means you can have a USB cable and battery pack connected simultaneously. -### Key Voltages +## Key Voltages As taken from each of the chip data sheets, 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 the operating voltage range of any of the devices. @@ -92,7 +91,6 @@ When powering from the 3V ring or the losenge on the PCB, you should take approp 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. diff --git a/hardware/reference-design.md b/hardware/reference-design.md index a4c876d..1739aff 100644 --- a/hardware/reference-design.md +++ b/hardware/reference-design.md @@ -25,19 +25,19 @@ Furthermore, the micro:bit has a built in programmer and debugger, which is impo ## Reference Design Features -* **100% binary compatible with the micro:bit, including all the same hardware features: 3xbuttons, 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 -* Standard 2.54mm pitch connector for - * all the micro:bit edge connector pins - * 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) -* 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)) +- **100% binary compatible with the micro:bit, including all the same hardware features: 3xbuttons, 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 +- Standard 2.54mm pitch connector for + - all the micro:bit edge connector pins + - 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) +- 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. @@ -103,9 +103,9 @@ The reference design uses the same ICs as the micro:bit itself, so to avoid dupl The reference design is provided in formats that can be loaded and used in: -* [Altium](http://www.altium.com/) -* [Eagle Express/Maker/Educational](http://cadsoft.io/pricing/) -* [KiCad EDA](http://kicad-pcb.org/) +- [Altium](http://www.altium.com/) +- [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. diff --git a/hardware/schematic.md b/hardware/schematic.md index 60ad469..5b0841b 100644 --- a/hardware/schematic.md +++ b/hardware/schematic.md @@ -25,7 +25,8 @@ If you're looking to make something of your own based on the micro:bit, you migh - [v1.5](https://github.com/bbcmicrobit/hardware/blob/master/V1.5/SCH_BBC-Microbit_V1.5.PDF) - [V2 TBC](#) -### V2 pinmap +## 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 | @@ -63,12 +64,10 @@ Whilst we work on the publication of the schematic for the latest revision, here | P0.31 | COL3 | N | P3 | | P0.30 | COL5 | N | P10 | - ## Key Features Below, 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. @@ -77,7 +76,6 @@ The LED matrix is driven via a high-speed multiplex generated by application pro 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. - ### 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. @@ -98,8 +96,6 @@ The magnetometer can generate one processor interrupt for the application proces 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. - - ### Power Supply Power to the micro:bit can be provided by 3 sources: The USB, the battery connector, and the 3V pad on the edge connector. @@ -110,8 +106,6 @@ A low-Vf diode (in this case about 0.23V max) is used to switch between sources. 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. - - ### Application Processor The main application processor runs both the runtime code and user code, as a single binary image. @@ -126,10 +120,8 @@ All [bluetooth](../../bluetooth) features are provided by a SoftDevice stack loa The nRF52V2 features additional NFC functionality on P0.09(NFC1) and P0.10(NFC2) that is disabled by default, but can be configured using the [nRF5SDK](https://www.nordicsemi.com/Software-and-Tools/Software/nRF5-SDK). - ### Edge Connector - 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. @@ -145,7 +137,9 @@ A number of pins have alternate assigned functions for use by the micro:bit, man 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. ### Dimensions -The specific dminensions of the board are + +The specific dminensions 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 @@ -155,34 +149,34 @@ The following image of the V2 revision is taken from the ![micro:bit assembly](/docs/hardware/assets/microbit-v2-assembly.png) -### Further information +## Further information -[micro:bit V2 assembly diagram](/docs/hardware/assets/Microbit_V2_Assembly.pdf) +- [micro:bit V2 assembly diagram](/docs/hardware/assets/Microbit_V2_Assembly.pdf) -[KL27 data sheet](https://www.nxp.com/docs/en/data-sheet/KL27P64M48SF6.pdf) +- [KL27 data sheet](https://www.nxp.com/docs/en/data-sheet/KL27P64M48SF6.pdf) -[KL26 datasheet](http://www.nxp.com/webapp/search.partparamdetail.framework?PART_NUMBER=MKL26Z128VFM4) +- [KL26 datasheet](http://www.nxp.com/webapp/search.partparamdetail.framework?PART_NUMBER=MKL26Z128VFM4) -[nRF52833 datasheet](https://infocenter.nordicsemi.com/index.jsp?topic=%2Fstruct_nrf52%2Fstruct%2Fnrf52833.html&cp=3_1) +- [nRF52833 datasheet](https://infocenter.nordicsemi.com/index.jsp?topic=%2Fstruct_nrf52%2Fstruct%2Fnrf52833.html&cp=3_1) -[nRF51822 datasheet](https://www.nordicsemi.com/eng/Products/Bluetooth-low-energy/nRF51822) +- [nRF51822 datasheet](https://www.nordicsemi.com/eng/Products/Bluetooth-low-energy/nRF51822) -[LSM303AGR datasheet](https://www.st.com/resource/en/datasheet/lsm303agr.pdf) +- [LSM303AGR datasheet](https://www.st.com/resource/en/datasheet/lsm303agr.pdf) -[FXOS8700 datasheet](https://www.nxp.com/docs/en/data-sheet/FXOS8700CQ.pdf) +- [FXOS8700 datasheet](https://www.nxp.com/docs/en/data-sheet/FXOS8700CQ.pdf) -[MAG3110 datasheet](http://www.nxp.com/products/sensors/magnetometers/sample-data-sets-for-inertial-and-magnetic-sensors/high-accuracy-3d-magnetometer:MAG3110) +- [MAG3110 datasheet](http://www.nxp.com/products/sensors/magnetometers/sample-data-sets-for-inertial-and-magnetic-sensors/high-accuracy-3d-magnetometer:MAG3110) -[MMA8653FC datasheet](http://www.nxp.com/products/sensors/accelerometers/3-axis-accelerometers/2g-4g-8g-low-g-10-bit-digital-accelerometer:MMA8653FC) +- [MMA8653FC datasheet](http://www.nxp.com/products/sensors/accelerometers/3-axis-accelerometers/2g-4g-8g-low-g-10-bit-digital-accelerometer:MMA8653FC) -[PRT5xx datasheet](https://assets.nexperia.com/documents/data-sheet/PRTR5V0U2F_PRTR5V0U2K.pdf) +- [PRT5xx datasheet](https://assets.nexperia.com/documents/data-sheet/PRTR5V0U2F_PRTR5V0U2K.pdf) -[BAT60A datasheet](http://www.infineon.com/dgdl/Infineon-BAT60ASERIES-DS-v01_01-en.pdf?fileId=db3a304313d846880113def70c9304a9) +- [BAT60A datasheet](http://www.infineon.com/dgdl/Infineon-BAT60ASERIES-DS-v01_01-en.pdf?fileId=db3a304313d846880113def70c9304a9) -[CON1 datasheet](https://uk.farnell.com/jst-japan-solderless-terminals/s2b-ph-sm4-tb-lf-sn/connector-header-smt-r-a-2mm-2way/dp/9492615) +- [CON1 datasheet](https://uk.farnell.com/jst-japan-solderless-terminals/s2b-ph-sm4-tb-lf-sn/connector-header-smt-r-a-2mm-2way/dp/9492615) -[SWD Interface](http://www.arm.com/products/system-ip/debug-trace/coresight-soc-components/serial-wire-debug.php) +- [SWD Interface](http://www.arm.com/products/system-ip/debug-trace/coresight-soc-components/serial-wire-debug.php) -[USB Mass Storage Class](https://en.wikipedia.org/wiki/USB_mass_storage_device_class) +- [USB Mass Storage Class](https://en.wikipedia.org/wiki/USB_mass_storage_device_class) -[USB Communications Device Class](https://en.wikipedia.org/wiki/USB_communications_device_class) +- [USB Communications Device Class](https://en.wikipedia.org/wiki/USB_communications_device_class) diff --git a/index.md b/index.md index c72583a..76a8f83 100644 --- a/index.md +++ b/index.md @@ -24,17 +24,22 @@ The Micro:bit Educational Foundation aims to be a 'responsible downstream' to th 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. + * 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! diff --git a/latest-revision/latest-revision-accessories.md b/latest-revision/latest-revision-accessories.md index 01e0d94..d49aea3 100644 --- a/latest-revision/latest-revision-accessories.md +++ b/latest-revision/latest-revision-accessories.md @@ -21,7 +21,8 @@ This article provides information to help you continue to support the 5 million 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 +## 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. ---------- @@ -36,39 +37,42 @@ If you publish hex files for demonstrating your accessories, then please see our There are a few considerations for people who have made accessories. - ## Denoting compatibility The Foundation Brand Guidelines set out how to denote board compatibility for your accessory. An updated version will be published at https://microbit.org/brand-guidelines/. In the meantime, please [get in contact for an updated copy](mailto:support@microbit.org?subject=Request%20for%20access%20to%20brand%20book). - ## Board changes ### Dimensions - 51.60mm(w) 42.00mm(h) 11.65mm(d), button depth to board 4.55mm, speaker depth to board 3.00mm, JST connector to board 5.50mm - The overall depth of the board does not change as the JST connector is the deepest part. +51.60mm(w) 42.00mm(h) 11.65mm(d), button depth to board 4.55mm, speaker depth to board 3.00mm, JST connector to board 5.50mm - Further details including an [assembly diagram](../../hardware/schematic/#dimensions) are available on our schematic page. +The overall depth of the board does not change as the JST connector is the deepest part. + +Further details including an [assembly diagram](../../hardware/schematic/#dimensions) are available on our schematic page. ### Speaker + The obvious physical change is the addition of the speaker on the back of the board. The profile of the rear of the board does not change, it should still fit in accessories that make use of the edge connector, but if your accessory is mounted closer to the board than the depth of the current JST connector, you will need to check that it still fits the latest board revision and how it affects the use of the speaker. By default the micro:bit will output sound to **both** the edge connector pins and the on-board speaker. If your accessory makes use of a speaker, you may wish to disable the onboard speaker. This will need to be done in software; extensions for MakeCode and objects for the Python Editor will support this. ### Microphone + The on-board microphone is also rear-mounted, but has a sound input hole on the front of the board, alongside a microphone activity LED, which will be lit red when in use. If the micro:bit is mounted horizontally on your accessory, you may need to consider how this affects the response of the microphone and the visibility of the microphone LED ### Touch sensitive logo + The micro:bit logo is gold plated copper and responds to capacitive touch in the same way that the large pins do. In previous revisions, the micro:bit only supported resisitive touch. ### Antenna -The position of the antenna has altered so that it is on an angle and it has also been copper coated to make it more visible. It will still behave in the same way, but if your accessory makes use of radio or Bluetooth we suggest taht you test your software packages with both board revisions in case any threshold tweaks are neccssary. +The position of the antenna has altered so that it is on an angle and it has also been copper coated to make it more visible. It will still behave in the same way, but if your accessory makes use of radio or Bluetooth we suggest taht you test your software packages with both board revisions in case any threshold tweaks are neccssary. ## Hardware changes ### I2C bus + Whereas on previous revisions, the I2C bus was shared between the motion sensor chip and the edge connector, this is no longer the case. The latest revision has dedictated external i2c lines from the nRF52 to use with accessories. These are the addresses used by the micro:bit. | | accelerometer | magnetometer (compass) | @@ -76,8 +80,8 @@ Whereas on previous revisions, the I2C bus was shared between the motion sensor | motion sensor variant 1 (LSM303AGR) | 0x19 (0x32/0x33) | 0x1E (0x3C/0x3D) | | motion sensor variant 2 (FXOS8700CQ) | 0x1F (0x3E/0x3F) | 0x1F (0x3E/0x3F) | - ### 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. 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. @@ -85,12 +89,13 @@ If you use the losenge pads, you must diode (or otherwise) protect themselves fr The nRF52 supplies 300mA to drive the board. 110mA is reserved for powering on-board components. **190mA** is then available for accessories. ### Schematic -The schematic will be published on the tech site when the hardware is publically available. Please get in touch to [request early access to the V2 schematic](mailto:support@microbit.org?subject=Request%20for%20access%20to%20schematic&body=Name%3A%0D%0A%0D%0AGitHub%20ID%3A). +The schematic will be published on the tech site when the hardware is publically available. Please get in touch to [request early access to the V2 schematic](mailto:support@microbit.org?subject=Request%20for%20access%20to%20schematic&body=Name%3A%0D%0A%0D%0AGitHub%20ID%3A). ## Software changes ### MakeCode extensions + If your MakeCode extension makes use of Mbed or the DAL, you may need to revise them to be compatible with CODAL and both revisions of the board. The latest revision no longer makes use of mBED. If the extension is incompatible, the MakeCode editor will fail to compile the program. @@ -98,6 +103,7 @@ If the extension is incompatible, the MakeCode editor will fail to compile the p We are working behind the scenes on patching all MakeCode extensions that are currently incompatible. If we have not made contact or you wish to discuss any issues, please get in touch. ### Python modules + The additional memory available to the latest revision means that you have more space to create python modules to work with your accessories and the micro:bit. ## Hex file compatibility @@ -112,6 +118,7 @@ A clear indication that you are working with this format is that a compiled .hex 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. ### 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 diff --git a/latest-revision/latest-revision-announcement.md b/latest-revision/latest-revision-announcement.md index 1fd953c..f75b2f1 100644 --- a/latest-revision/latest-revision-announcement.md +++ b/latest-revision/latest-revision-announcement.md @@ -7,9 +7,10 @@ permalink: /latest-revision/announcement/ 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. +## micro:bit V2 + +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/). @@ -18,30 +19,27 @@ This article is a more technical companion to the [news over at microbit.org](ht 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. - + This innovative device is highly accessible, easy to program, instantly interactive, and beautiful. It kicked off a wave of innovation in educational technology. Five years after its launch, the micro:bit is one of the best-loved tools for teaching computational thinking for young people aged 8-15: five million micro:bits are now in use by an estimated 25 million teachers and students around the world. By making affordable, developer-quality hardware and creating elegant and simple ways for students to use it, we can help create a generation that understands how transformative technologies like AI and ML are shaping the world around them. -# Working in partnership +## 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. - -# 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) - Advice on supporting the device for: @@ -49,62 +47,52 @@ 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 +## 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. ![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. ![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!) -# Raising the roof +## 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. - + 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 +## 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! ![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. - + 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 +## 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. - + [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. - -Now is the time to come and engage again with micro:bit and help build the next phase of the project with us. - +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 769c634..fe7b757 100644 --- a/latest-revision/latest-revision-content.md +++ b/latest-revision/latest-revision-content.md @@ -19,10 +19,8 @@ Thank you, content producers for your support of the micro:bit - without people 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. - ---------- - ## Updating .hex files The editors and apps are being updated over the coming weeks and are currrently in beta. @@ -30,5 +28,6 @@ When they are released, you should update any compiled .hex files that you host To do this, simply drag and drop them into the editor in which they were created and then download the .hex file. -**Universal Hex** +### Universal Hex + Note that the updated file will be ~1.8Mb as opposed to ~700Kb in size. This increase in size means that the hex file can be used on any board revision and is called a **Universal Hex** file. \ No newline at end of file diff --git a/latest-revision/latest-revision-editors.md b/latest-revision/latest-revision-editors.md index d53e990..081e015 100644 --- a/latest-revision/latest-revision-editors.md +++ b/latest-revision/latest-revision-editors.md @@ -21,32 +21,33 @@ If you’d like to keep up to date with technical information about the device, 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) + - [microbit-dal](https://github.com/lancaster-university/microbit-dal) + - [CODAL](https://github.com/microbit-foundation/codal/) + - [microbit](https://github.com/lancaster-university/microbit) + - [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. - ## If you’re using the microbit 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. - | V2 | v1 | ---- | ---- |![Software Architectural Diagram v1](/docs/software/assets/software-overview-v2.svg) | ![Software Architectural Diagram V2](/docs/software/assets/software-overview.svg) - 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. +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 @@ -58,7 +59,6 @@ To support all revisions of the micro:bit, you will need to ensure you use the l [https://python.microbit.org/v/beta/](https://python.microbit.org/v/beta/) - ## 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. @@ -67,7 +67,6 @@ The BLE Profile for the micro:bit has also been update to ensure compatibility w 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 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. @@ -82,7 +81,8 @@ 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** +#### 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. 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) @@ -101,6 +101,7 @@ A clear indication that you are working with this format is that a compiled .hex 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. ### 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 diff --git a/latest-revision/latest-revision-main.md b/latest-revision/latest-revision-main.md index e75d8ba..62fd82e 100644 --- a/latest-revision/latest-revision-main.md +++ b/latest-revision/latest-revision-main.md @@ -20,7 +20,6 @@ The latest revision builds upon the current micro:bit experience by refining the 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 - On board speaker @@ -29,14 +28,12 @@ Amongst the micro:bit features, ‘sound’ is in a unique position of being alr - Built-in sleep/off mode that means the board can be powered-down with batteries connected - Discrete regulator that can supply up to 190mA of current to external accessories - ### Refinements - Notched edge connector. To make it easier to connect things like crocodile clips and conductive thread - Power LED indicator. In addition to the USB activity indicator, a power LED shows whether the micro:bit is powered on or off - Gold plated antenna. To easily identify the radio/Bluetooth component - ### Hardware specification Detailed breakdown on our [V2 hardware page](../hardware/) @@ -61,18 +58,19 @@ These pages provide further guidance on the updates for different audiences. ### [Guidance for content producers](./content/) - ## Comparison ### Feature comparison + ![Table of features](/docs/latest-revision/assets/comparison-table.png) ### Front + ![Comparison front](/docs/latest-revision/assets/comparison-front.png) ### Back -![Comparison back](/docs/latest-revision/assets/comparison-back.png) +![Comparison back](/docs/latest-revision/assets/comparison-back.png) ## Universal Editors & Universal Hex Files @@ -80,7 +78,6 @@ In an effort to ensure the greatest degree of continuity for teachers, users wil 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. - ## Feature availability These are the V2 features and whether we expect them to work as expected ✅ or not 🔴, or there are issues still to be fixed 🔶. @@ -139,25 +136,26 @@ To access the features of the latest revision only (eg. to output sound only on 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. - ### Makecode + You can use the latest board revision in the beta editor [https://makecode.microbit.org/beta](https://makecode.microbit.org/beta) -**Using the new features in MakeCode** +#### Using the new features in MakeCode An extension has been developed to include the microphone and logo touch features currently available. [https://github.com/microbit-foundation/pxt-microbit-v2-extension](https://github.com/microbit-foundation/pxt-microbit-v2-extension) - 1. Open [https://makecode.microbit.org/beta](https://makecode.microbit.org/beta) 2. Select Advanced > Add Extension and paste [https://github.com/microbit-foundation/pxt-microbit-v2-extension](https://github.com/microbit-foundation/pxt-microbit-v2-extension) into the search box. 3. Click on the extension to add it to the toolbox. -**V2 MakeCode APIs** +#### V2 MakeCode APIs + The Microphone and Logo touch features can be found in the Input menu The Speaker features can be found in the music menu ### Python + You can use the latest board revision and APIs in the Python beta editor: [https://python.microbit.org/v/beta](https://python.microbit.org/v/beta/) @@ -169,7 +167,6 @@ You can use the latest board revision and APIs in the Python beta editor: ![Copy main.py](/docs/latest-revision/assets/copy-main-py-mu.gif){: width="600"} - ## Universal Hex Format The editors and apps are compatible with and will let you download and flash a file to any micro:bit revision. This is called a **Universal Hex** file. 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. @@ -178,10 +175,9 @@ More information about this is available on our [hex format](../software/hex-for The Foundation has written a javascript library to generate these files - you do not need to re-implement any file generation. - ### Bluetooth BLE -A hex file that enables all micro:bit Bluetooth services is available to use for testing BLE. [Download the updated version of the BLE all services hex](/docs/latest-revision/assets/bluetooth-services.hex) +A hex file that enables all micro:bit Bluetooth services is available to use for testing BLE. [Download the updated version of the BLE all services hex](/docs/latest-revision/assets/bluetooth-services.hex) ## Will my saved hex files work with the new board? @@ -191,17 +187,14 @@ If you attempt to use an old .hex file without updating it, the micro:bit will d ![Compatibility error](/docs/software/assets/compat-error.gif) - ## 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) - ## How do I find out more about the hardware and software updates? Our [DAL, Devices and Editors mailing list](http://eepurl.com/dyRx-v) provides up to date information about the any technical changes regarding the micro:bit. - ## How do I feed back or raise issues? Any questions or issues should be reported via [micro:bit support](https://support.microbit.org/support/tickets/new). diff --git a/software/bitio.md b/software/bitio.md index d4df010..0501569 100644 --- a/software/bitio.md +++ b/software/bitio.md @@ -11,22 +11,26 @@ assigned-to: markw 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. -### Why would you use bitio? +## 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. ## 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) +- Sean M. Tracey has written a [Node Red wrapper for bitio](https://flows.nodered.org/node/node-red-contrib-bitio-wrapper) - - Giles Booth has created a [micro:bit controlled internet Radio](http://www.suppertime.co.uk/blogmywiki/2017/08/microbit-controlled-radio/) +- 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) diff --git a/software/hex-format.md b/software/hex-format.md index 4035479..936a358 100644 --- a/software/hex-format.md +++ b/software/hex-format.md @@ -11,6 +11,8 @@ assigned-to: markw review-with: carlospa --- +## Hex files + 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: @@ -27,6 +29,7 @@ A clear indication that you are working with this format is that a compiled .hex 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/). ### 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. @@ -46,7 +49,6 @@ These examples show the process of creating a Universal Hex. A V1 and V2 hex can |-----------------------------------------------------------|-----------------------------------------------------------| | ![Universal Hex error 2](/docs/software/assets/uhex2.png) | ![Universal Hex error 3](/docs/software/assets/uhex1.png) | - If you are building .hex files for both board variants, you will need to use the respective toolchains for the DALv1 and CODALv2. See more information on the [micro:bit runtime](../runtime/). ## Micropython diff --git a/software/in_browser_compiler.md b/software/in_browser_compiler.md index db267b2..63dab1f 100644 --- a/software/in_browser_compiler.md +++ b/software/in_browser_compiler.md @@ -9,7 +9,6 @@ ref: software lang: en --- - ## Overview There are a number of different code editors for the micro:bit. @@ -40,7 +39,6 @@ The above diagram shows an example of how blocks code is converted into a .hex f 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. @@ -51,7 +49,6 @@ The Python web editor does not use the in-browser compiler. It only sits inside Read more about how MicroPython works: [MicroPython on micro:bit](/software/micropython) - ## Contributions The MakeCode editor is [open source](https://github.com/Microsoft/pxt-microbit), so you can develop your own feature and you can [log issues](https://github.com/Microsoft/PXT-microbit/issues/new) for the dev team to look into. diff --git a/software/index.md b/software/index.md index 36ada57..6bfc8d4 100644 --- a/software/index.md +++ b/software/index.md @@ -31,9 +31,9 @@ There are actually two chips on the micro:bit, one that is running the **DAPlink 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 some other kind of 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 also allow you to program the micro:bit 'live' over USB by typing commands. ### Compiled languages @@ -59,28 +59,47 @@ There are a huge number of possible coding environments that you can use to prog Among the most popular are the official ones listed at http://microbit.org/code as well as the offline Mu editor. -Here's a non-exhaustive list of possible code editors for use with the micro:bit. *please add any you know about that are not here* - -* [MakeCode](https://makecode.microbit.org) -* [Python](https://python.microbit.org) -* [App Inventor](http://iot.appinventor.mit.edu/#/microbit/microbitintro) -* [Arduino IDE (C++)](https://learn.adafruit.com/use-micro-bit-with-arduino/overview) -* [Art:bit](https://kidscodejeunesse.org/artbit) -* [Bitty Software Applications](https://bittysoftware.blogspot.com/p/applications.html) -* [CodeMao](https://ide.codemao.cn/) -* [https://wood.codemao.cn/?editor_mode=1](https://wood.codemao.cn/?editor_mode=1) -* [Edublocks (Python with blocks)](https://app.edublocks.org/#MicroBit) -* [GNAT (Ada)](https://github.com/AdaCore/Ada_Drivers_Library/tree/master/examples/MicroBit) -* [Kittenblock](https://www.kittenbot.cc/pages/software) -* [Kodu](https://www.kodugamelab.com/resources/bbc-microbit/) -* [MATLAB & Simulink](https://uk.mathworks.com/academia/highschool/courseware/microbit.html) -* [Mbed Online Compiler](http://developer.mbed.org/platforms/Microbit) -* [mBlock 5](https://www.makeblock.com/software/mblock5) -* [MicroBlocks (beta)](http://microblocks.fun/) -* [Mind+](http://mindplus.cc/) -* [Mu offline Python editor](http://codewith.mu/) -* [PyCharm (with MicroPython plugin, can also flash to micro:bit)](https://plugins.jetbrains.com/plugin/9777-micropython) -* [Workbench](https://edu.workbencheducation.com/partners/microbit) +Here's a non-exhaustive list of possible code editors for use with the micro:bit: *please add any you know about that are not here* + +- [MakeCode](https://makecode.microbit.org) + +- [Python](https://python.microbit.org) + +- [App Inventor](http://iot.appinventor.mit.edu/#/microbit/microbitintro) + +- [Arduino IDE (C++)](https://learn.adafruit.com/use-micro-bit-with-arduino/overview) + +- [Art:bit](https://kidscodejeunesse.org/artbit) + +- [Bitty Software Applications](https://bittysoftware.blogspot.com/p/applications.html) + +- [CodeMao](https://ide.codemao.cn/) + +- [https://wood.codemao.cn/?editor_mode=1](https://wood.codemao.cn/?editor_mode=1) + +- [Edublocks (Python with blocks)](https://app.edublocks.org/#MicroBit) + +- [GNAT (Ada)](https://github.com/AdaCore/Ada_Drivers_Library/tree/master/examples/MicroBit) + +- [Kittenblock](https://www.kittenbot.cc/pages/software) + +- [Kodu](https://www.kodugamelab.com/resources/bbc-microbit/) + +- [MATLAB & Simulink](https://uk.mathworks.com/academia/highschool/courseware/microbit.html) + +- [Mbed Online Compiler](http://developer.mbed.org/platforms/Microbit) + +- [mBlock 5](https://www.makeblock.com/software/mblock5) + +- [MicroBlocks (beta)](http://microblocks.fun/) + +- [Mind+](http://mindplus.cc/) + +- [Mu offline Python editor](http://codewith.mu/) + +- [PyCharm (with MicroPython plugin, can also flash to micro:bit)](https://plugins.jetbrains.com/plugin/9777-micropython) + +- [Workbench](https://edu.workbencheducation.com/partners/microbit) ## From coding environment to micro:bit @@ -97,10 +116,10 @@ You can read more about [bluetooth flashing](/bluetooth/profile) or [bluetooth a When you write an application for your micro:bit, other pieces of software are joined together with your application to make up the final .hex file that is flashed. This code consists of various lower level software components, such as: -* [DAL/CODAL](./runtime/) (sometimes called the runtime), written in C++ by Lancaster University. The DAL abstracts the 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. +- [DAL/CODAL](./runtime/) (sometimes called the runtime), written in C++ by Lancaster University. The DAL abstracts the 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, the component provided by Nordic to assist programmers in using their hardware. +- [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. +- [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. diff --git a/software/interface.md b/software/interface.md index 598f662..44b73ca 100644 --- a/software/interface.md +++ b/software/interface.md @@ -23,17 +23,17 @@ The **Target MCU** is a **Nordic Semiconductor nRF52833** V2V2 device You will need to register for and download the [**Bootloader Host Application (blhost)**](https://www.nxp.com/design/software/development-software/mcuxpresso-software-and-tools-/mcuboot-mcu-bootloader-for-nxp-microcontrollers:MCUBOOT?&tab=Design_Tools_Tab) from NXP. IN the /bin folder you will find executables for your operating system. -**Enter bootloader mode** +### Enter bootloader mode To enter this mode we need to ground TP1 during board power up, this is the BOOTMODE pin in the KL27. To do that, connect with a wire (or something like a paper-clip) TP1 red circle) with any ground point (black sqaure) as you insert the USB cable into the device. ![TP1](/docs/software/assets/TP1.png){: width: 300px} -**Bootloader CLI tool** +### Bootloader CLI tool Run the bootloader tool on your OS. These instructions relate to the CLI, but the GUI settings would be broadly similar. diff --git a/software/makecode.md b/software/makecode.md index c591446..948c818 100644 --- a/software/makecode.md +++ b/software/makecode.md @@ -8,39 +8,49 @@ permalink: /software/makecode/ ref: makecode lang: en --- + ## Overview + [Microsoft MakeCode for micro:bit](htps://makecode.microbit.org) is a free, open source platform for creating projects with the BBC micro:bit. Connect colour-coded blocks that relate to hardware features and Computer Science fundamentals and switch between blocks, JavaScript and MakeCode Python views. A device simulator shows you what will happen on the physical device before you download your program. -### Source +## Source + The source code for MakeCode for micro:bit target can be found at [github.com/Microsoft/pxt-microbit](https://github.com/Microsoft/pxt-microbit) -This target depends on several other repositories +This target depends on several other repositories: - the PXT framework - common APIs accross various MakeCode editors - basic wrapper around the DAL - the micro:bit DAL -### App +## App + An app is available for [Windows 10](https://www.microsoft.com/en-gb/p/makecode-for-micro-bit/9pjc7sv48lcx?rtc=1&activetab=pivot:overviewtab) -### Offline +## Offline + An [offline version of the MakeCode editor](https://makecode.microbit.org/offline) is available for use in situations where there is limited or no internet connectivity. -### Documentation +## Documentation + - [MakeCode for micro:bit reference](https://makecode.microbit.org/reference) provides information and examples on using the blocks - [MakeCode Technical Docs](https://makecode.com/docs) for general development -### Extension authoring +## Extension authoring + The editor has built in support for [Github authoring](https://makecode.com/blog/github-packages). There is a written guide on [Creating Extensions](https://makecode.com/extensions/getting-started) within the reference documentatio and a [video tutorial on YouTube](https://www.youtube.com/watch?v=ztrm4XehfGo&list=PLMMBk9hE-SepwjCAK7cY-jvq6KeQKda8x) -### Tutorial authoring +## Tutorial authoring + Users can [publish their own tutorials](https://makecode.com/writing-docs/user-tutorials) for simple, guided steps on using MakeCode. Tutorials also support third party extensions. -### Community -There are a variety of ways to get involved and interact +## Community + +There are a variety of ways to get involved and interact: + - Join the [micro:bit developer community on Slack](../../community/) - Raise a [MakeCode issue or feature request](https://github.com/Microsoft/pxt-microbit/issues) - Ask the MakeCode development team on [MakeCode forum for micro:bit](https://forum.makecode.com/c/microbit/11) diff --git a/software/micropython.md b/software/micropython.md index 49c07f2..2e5ec00 100644 --- a/software/micropython.md +++ b/software/micropython.md @@ -9,7 +9,6 @@ ref: software lang: en --- - ## Overview MicroPython is a version of the popular Python programming language for devices like the micro:bit. It's free software: creating, maintaining and documenting MicroPython is the work of an international team of volunteers. @@ -21,9 +20,8 @@ There are many ways to use MicroPython on the micro:bit. You can use: 3. Your regular editor to create Python files and a suite of command line tools to interact with the device (for advanced users only). 5. One of the [third party editors](https://microbit.org/code/#other-editors) listed on the website. - - ## MicroPython Tools + - [uFlash](https://uflash.readthedocs.io/en/latest/) A utility for flashing the BBC micro:bit with Python scripts and the MicroPython runtime. You pronounce the name of this utility “micro-flash”. ;-) @@ -36,7 +34,6 @@ A simple command line tool and module for interacting with the limited file syst Finally, there are great [tutorials for MicroPython on the micro:bit](https://microbit-micropython.readthedocs.io/en/latest/tutorials/introduction.html). - ## What is MicroPython? MicroPython is just as easy to learn as the other programming languages but differs from them in several important respects: @@ -64,7 +61,6 @@ When MicroPython is loaded to the micro:bit in this way, it obviously doesn't ha More interesting still, if the .hex file you copied onto the device *does* contain some of your code, it's still possible to connect with the REPL and interact with your program. This is very useful for debugging purposes. - ### Adding a User Application to MicroPython Both the web hosted and the offline editor (Mu) have a copy of this MicroPython .hex file inside them, as a plain text file. @@ -81,7 +77,6 @@ As a result, Mu and the `uflash` command are able to retrieve your Python code f When you flash (i.e. copy) a .hex file into the micro:bit it reboots. MicroPython looks for your script in a special memory address. If it finds a script it'll attempt to run it. Your program will run all the while there is something to do, so it will keep going all the while your program loops around, or until an error occurs (at which time the program will stop and scroll a helpful error message on the device). - ### Is MicroPython Compiled or Interpreted? It's Both! Compilation is when code is turned into instructions the computer understands. @@ -127,47 +122,46 @@ Many people in the international Python community have contributed free-to-use r Tutorials and API documentation for developers can be [found here](https://microbit-micropython.readthedocs.io/en/latest/). - ### Logging an Issue with the Development Team -[Show open issues](https://github.com/bbcmicrobit/micropython/issues) +- [Show open issues](https://github.com/bbcmicrobit/micropython/issues) -[Log a new issue](https://github.com/bbcmicrobit/micropython/issues/new) +- [Log a new issue](https://github.com/bbcmicrobit/micropython/issues/new) -[Ask a question on the mailing list](https://mail.python.org/mailman/listinfo/microbit) (you must be a member of the mailing list before you can post to it). +- [Ask a question on the mailing list](https://mail.python.org/mailman/listinfo/microbit) (you must be a member of the mailing list before you can post to it). ### Source Code -[MicroPython on the micro:bit source code](https://github.com/bbcmicrobit/micropython) +- [MicroPython on the micro:bit source code](https://github.com/bbcmicrobit/micropython) -[Documentation source code](https://github.com/bbcmicrobit/micropython/tree/master/docs). +- [Documentation source code](https://github.com/bbcmicrobit/micropython/tree/master/docs). -[MicroPython source code](https://github.com/micropython/micropython). +- [MicroPython source code](https://github.com/micropython/micropython). -[Browser based editor](https://github.com/bbcmicrobit/PythonEditor) +- [Browser based editor](https://github.com/bbcmicrobit/PythonEditor) -[Mu source code](https://github.com/mu-editor) +- [Mu source code](https://github.com/mu-editor) -[uFlash](https://github.com/ntoll/uflash) +- [uFlash](https://github.com/ntoll/uflash) -[microfs](https://github.com/ntoll/microfs) +- [microfs](https://github.com/ntoll/microfs) ### Other Links -All development is covered by the Python Software Foundation's [code of conduct](https://www.python.org/psf/codeofconduct/). +- All development is covered by the Python Software Foundation's [code of conduct](https://www.python.org/psf/codeofconduct/). -The [Python Software Foundation](https://www.python.org/psf-landing/) represents, supports and coordinates the wider Python community. +- The [Python Software Foundation](https://www.python.org/psf-landing/) represents, supports and coordinates the wider Python community. -Learn how to [embed assembly language](http://docs.micropython.org/en/latest/pyboard/pyboard/tutorial/assembler.html) in your Python scripts (this feature is enabled for MicroPython on the micro:bit). +- Learn how to [embed assembly language](http://docs.micropython.org/en/latest/pyboard/pyboard/tutorial/assembler.html) in your Python scripts (this feature is enabled for MicroPython on the micro:bit). -Pycomic's [micro:bit image maker](https://pycomic.github.io/microbit.html) allows you to create images to use in documentation. +- Pycomic's [micro:bit image maker](https://pycomic.github.io/microbit.html) allows you to create images to use in documentation. -Lots of MicroPython / BBC micro:bit videos can be found on [this YouTube playlist](https://www.youtube.com/playlist?list=PLzCYc445IVNQimtxAlPpaFMtvv8qKSncK). +- Lots of MicroPython / BBC micro:bit videos can be found on [this YouTube playlist](https://www.youtube.com/playlist?list=PLzCYc445IVNQimtxAlPpaFMtvv8qKSncK). -The Python Software Foundation's description of their involvement in the project can be found in [this blog post](https://pyfound.blogspot.co.uk/2016/03/a-million-children.html). +- The Python Software Foundation's description of their involvement in the project can be found in [this blog post](https://pyfound.blogspot.co.uk/2016/03/a-million-children.html). -One of the contributors to the project [gave a keynote address](https://www.youtube.com/watch?v=JVaF6uZuSIU) to the 2016 European Python Programming conference (EuroPython). +- One of the contributors to the project [gave a keynote address](https://www.youtube.com/watch?v=JVaF6uZuSIU) to the 2016 European Python Programming conference (EuroPython). -A [CAS Chat](https://www.youtube.com/watch?v=zEqQq8K89Y4) about the micro:bit and MicroPython gives an interesting perspective of the wider project. +- A [CAS Chat](https://www.youtube.com/watch?v=zEqQq8K89Y4) about the micro:bit and MicroPython gives an interesting perspective of the wider project. -[CAS.TV MicroPython demo](https://www.youtube.com/watch?v=hUIObK3MHL8) media offset 23:53 +- [CAS.TV MicroPython demo](https://www.youtube.com/watch?v=hUIObK3MHL8) media offset 23:53 diff --git a/software/other-languages.md b/software/other-languages.md index 8c21085..7e2c847 100644 --- a/software/other-languages.md +++ b/software/other-languages.md @@ -9,7 +9,6 @@ ref: software lang: en --- - ## Overview Aside from the officially supported editors: [Makecode](https://makecode.microbit.org) and [Python](https://python.microbit.org) there are a number of different languages that include support for the micro:bit. @@ -17,6 +16,7 @@ Aside from the officially supported editors: [Makecode](https://makecode.microbi This resource aims to compile a list of these programming languages with a link to the documentation, plus an example program. ## Submissions + To add a new language to the page, [edit the page on Github](http://github.com/microbit-foundation/dev-docs/edit/master/software/other-languages.md). For a language to be accepted it's implementation must be complete enough to display a heart on the display! Please format the addition using this template: @@ -29,11 +29,9 @@ Please format the addition using this template: ### micro:bit heart -` +``` example code to show a heart on the display -` - - +``` ## Alternate Languages diff --git a/software/python-editor.md b/software/python-editor.md index 878ef43..a321e8e 100644 --- a/software/python-editor.md +++ b/software/python-editor.md @@ -8,7 +8,9 @@ permalink: /software/python-editor/ ref: python-editor lang: en --- + ## Overview + The [Python Editor](htps://python.microbit.org) is a free, browser based coding environment for creating [MicroPython](../micropython/) projects with the BBC micro:bit. Use common snippets of code, add/remove files and modules, and upload/download .hex or .py files. @@ -16,17 +18,21 @@ Use common snippets of code, add/remove files and modules, and upload/download . The Python editor is based upon the [Ace editor](http://ace.c9.io) and includes syntax highlighting, code folding and (semi) intelligent auto-indentation. ### Source + The upstream source code for the Python Editor can be found at [github.com/bbcmicrobit/PythonEditor](https://github.com/bbcmicrobit/PythonEditor) The micro:bit target depends a closed source versioner repository that facilitates releases at `/v/`, for example the beta editor https://python.microbit.org/v/beta and previous releases. ### Offline + It is possible to use the Python Editor offline to generate, upload and download .hex or .py files. However, refreshing the browser resets the editor. ### Mu + [Mu](http://codewith.mu/) is a third party Python editor, that provides a downloadable, offline coding experience for the micro:bit and includes features such as datalogging and code debugging. ### Documentation + - [MicroPython reference](https://microbit-micropython.readthedocs.io/en/v1.0.1/) provides information and examples on using the blocks - [Developer setup](https://github.com/bbcmicrobit/PythonEditor/blob/master/README.rst) - [Filesystem](https://github.com/bbcmicrobit/PythonEditor/blob/master/docs/filesystem.md) @@ -35,7 +41,9 @@ It is possible to use the Python Editor offline to generate, upload and download - [MakeCode Technical Docs](https://makecode.com/docs) for general development ### Community -There are a variety of ways to get involved and interact + +There are a variety of ways to get involved and interact: + - Join the [micro:bit developer community on Slack](../../community/) - Raise a [Python Editor issue or feature request](https://github.com/bbcmicrobit/PythonEditor/issues) - Ask a question on the [MicroPython forum for micro:bit](https://forum.micropython.org/viewforum.php?f=17&sid=de047c3e944921889becbc00f02a918f) diff --git a/software/readout_hex.md b/software/readout_hex.md index 287a455..f4a1372 100644 --- a/software/readout_hex.md +++ b/software/readout_hex.md @@ -11,7 +11,6 @@ assigned-to: markw review-with: jonnya --- - ## Overview There may be occasions when you want to take a look at the programming that is running on the micro:bit or if you have misplaced the original program. @@ -29,7 +28,6 @@ This tool has a range of features: You can download the [latest release of the uBitTool GUI Editor](https://github.com/carlosperate/ubittool/releases/) from the GitHub repository and there are [Instructions to read out the contents of a hex file](https://www.embeddedlog.com/ubittool/usage.html) on the website - ## py-ocd This method reads out the .hex file on the micro:bit to a file in your working directory. diff --git a/software/runtime.md b/software/runtime.md index 60ee720..59a9784 100644 --- a/software/runtime.md +++ b/software/runtime.md @@ -33,10 +33,10 @@ The micro:bit runtime provides a [Device Abstraction Layer (DAL)](https://lancas Key components of the micro:bit DAL are: -* a scheduler, that lets your micro:bit do more than one task at a time. -* an eventing system called the message bus, that lets you write reactive code. It can inform your program when things happen on your micro:bit - everything from a button click to a message being received on the radio. -* device drivers representing the major hardware blocks on the micro:bit, including the LED display, sensors, file system, radio and bluetooth profile. -* managed types that help keep your programs safe from the complexities of memory management. Originally implemented for higher level languages to exploit, they have also proven very useful for C/C++ programmers too. +- a scheduler, that lets your micro:bit do more than one task at a time. +- an eventing system called the message bus, that lets you write reactive code. It can inform your program when things happen on your micro:bit - everything from a button click to a message being received on the radio. +- device drivers representing the major hardware blocks on the micro:bit, including the LED display, sensors, file system, radio and bluetooth profile. +- managed types that help keep your programs safe from the complexities of memory management. Originally implemented for higher level languages to exploit, they have also proven very useful for C/C++ programmers too. The micro:bit v1 can also be programmed using the Mbed HAL directly, for those developers seeking more low level access to the hardware. @@ -45,11 +45,11 @@ The [Component Oriented Device Abstraction Layer (CODAL)](https://lancaster-univ Key components of micro:bit CODAL are: -* A unified eventing subsystem (common to all components) that provides a mechanism to map asynchronous hardware and software events to event handlers; -* A non-preemptive fiber scheduler that enables concurrency while minimizing the need for resource locking primitives. -* A simple memory management system based on reference counting to provide a basis for managed types. -* A set of drivers, that abstract microcontroller hardware components into higher level software components,each represented by a C++ class. -* A parameterized object model composed from these components that represents a physical device. +- A unified eventing subsystem (common to all components) that provides a mechanism to map asynchronous hardware and software events to event handlers; +- A non-preemptive fiber scheduler that enables concurrency while minimizing the need for resource locking primitives. +- A simple memory management system based on reference counting to provide a basis for managed types. +- A set of drivers, that abstract microcontroller hardware components into higher level software components,each represented by a C++ class. +- A parameterized object model composed from these components that represents a physical device. (Source: [MakeCode and CODAL - intuitive and efficient embedded systems programming for education](https://tech.microbit.org/projects/MakeCode-and-CODAL/)) @@ -63,7 +63,6 @@ The micro:bit runtime is an open source project, distributed under the MIT licen Firstly, you should get yourself into a situation where you can build the micro:bit runtime DAL. You can choose either an online build environment inside your web browser through Mbed.org, or an downloadable compiler. The [getting started docs] (https://lancaster-university.github.io/microbit-docs/#getting-started) guide you through this process. - ### Asking for features and reporting bugs 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. diff --git a/software/testing.md b/software/testing.md index a94c404..0f5a5d6 100644 --- a/software/testing.md +++ b/software/testing.md @@ -8,6 +8,7 @@ permalink: /software/beta/ ref: software lang: en --- + ## Overview * TOC