diff --git a/.github/ISSUE_TEMPLATE/bug.md b/.github/ISSUE_TEMPLATE/bug.md index 9bc2e9d..f44727a 100644 --- a/.github/ISSUE_TEMPLATE/bug.md +++ b/.github/ISSUE_TEMPLATE/bug.md @@ -11,7 +11,7 @@ about: Create a github issue to fix an error in the docs A clear and concise description of what the error is. -## Expected behavior +## Expected behaviour A clear and concise description of what you expected to see/read ## Screenshots diff --git a/.github/ISSUE_TEMPLATE/labs.md b/.github/ISSUE_TEMPLATE/labs.md index 536398f..4d44221 100644 --- a/.github/ISSUE_TEMPLATE/labs.md +++ b/.github/ISSUE_TEMPLATE/labs.md @@ -7,7 +7,7 @@ about: Create a github issue to add your research or project to tech.microbit.or --- -Edit as neccessary +Edit as necessary ### Example Project ![Image](https://images.unsplash.com/photo-1552581234-26160f608093?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1050&q=80){:style="max-width: 50%;"} diff --git a/bluetooth/apps-and-examples.md b/bluetooth/apps-and-examples.md index 04ebf65..81c963e 100644 --- a/bluetooth/apps-and-examples.md +++ b/bluetooth/apps-and-examples.md @@ -17,7 +17,7 @@ Below is a curated list of some Bluetooth applications you might like to read ab ## Applications, tools and examples -- [Android App](https://play.google.com/store/apps/details?id=com.samsung.microbit) faciliates [pairing and flashing programs to the micro:bit](https://support.microbit.org/en/support/solutions/articles/19000051025-pairing-and-flashing-code-via-bluetooth) +- [Android App](https://play.google.com/store/apps/details?id=com.samsung.microbit) facilitates [pairing and flashing programs to the micro:bit](https://support.microbit.org/en/support/solutions/articles/19000051025-pairing-and-flashing-code-via-bluetooth) - [iOS App](https://apps.apple.com/gb/app/micro-bit/id1092687276)faciliates [pairing and flashing programs to the micro:bit](https://support.microbit.org/en/support/solutions/articles/19000051025-pairing-and-flashing-code-via-bluetooth) @@ -35,7 +35,7 @@ Below is a curated list of some Bluetooth applications you might like to read ab - [Kitronik Move](https://play.google.com/store/apps/details?id=com.kitronik.blemove) - Android app that presents a D-Pad interface to control a micro:bit over Bluetooth LE. -- [Workbench](https://edu.workbencheducation.com/partners/microbit) is amulti-device coding canvas for block-based programming that connects with BLE devices via Chrome Web Bluetooth. +- [Workbench](https://edu.workbencheducation.com/partners/microbit) is a multi-device coding canvas for block-based programming that connects with BLE devices via Chrome Web Bluetooth. - [microBit.js](https://github.com/antefact/microBit.js) - JavaScript library to interact with BBC micro:bit using web bluetooth API. @@ -45,7 +45,7 @@ Below is a curated list of some Bluetooth applications you might like to read ab - [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) - Multi-player 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. diff --git a/bluetooth/index.md b/bluetooth/index.md index 2d98b1f..d616579 100644 --- a/bluetooth/index.md +++ b/bluetooth/index.md @@ -11,7 +11,7 @@ lang: en ## Overview -The micro:bit processor has an on board [Bluetooth](http://blog.bluetooth.com/a-developers-guide-to-bluetooth/) transceiver. This is combined with a PCB trace aerial and other minor components alongside a software stack that gives the micro:bit a certified and credible Bluetooth capability. +The micro:bit processor has an on-board [Bluetooth](http://blog.bluetooth.com/a-developers-guide-to-bluetooth/) transceiver. This is combined with a PCB trace aerial and other minor components alongside a software stack that gives the micro:bit a certified and credible Bluetooth capability. ## Bluetooth software stack @@ -34,7 +34,7 @@ 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) +- [Android App](https://play.google.com/store/apps/details?id=com.samsung.microbit) facilitates [pairing and flashing programs to the micro:bit](https://support.microbit.org/en/support/solutions/articles/19000051025-pairing-and-flashing-code-via-bluetooth) - [iOS App](https://apps.apple.com/gb/app/micro-bit/id1092687276)faciliates [pairing and flashing programs to the micro:bit](https://support.microbit.org/en/support/solutions/articles/19000051025-pairing-and-flashing-code-via-bluetooth) - [Swift Playgrounds](https://github.com/microbit-foundation/microbit-swift-playgrounds) contains a Playground Book available in the Swift app and a micro:bit Swift API to develop further resources Scratch. diff --git a/bluetooth/profile.md b/bluetooth/profile.md index 32b32e9..0236a67 100644 --- a/bluetooth/profile.md +++ b/bluetooth/profile.md @@ -32,7 +32,7 @@ There are also some example programs in the [microbit-samples](https://github.co [bluetooth-eddystone-url]https://github.com/lancaster-university/microbit-samples/tree/master/source/examples/bluetooth-eddystone-url [bluetooth-uart]https://github.com/lancaster-university/microbit-samples/tree/master/source/examples/bluetooth-uart -The micro:bit has a Bluetooth 4.1 stack with Bluetooth Low Energy (BLE) and supports the [GAP Perhipheral Role](https://bluetooth-developer.blogspot.com/2016/07/microbit-and-bluetooth-roles.html). +The micro:bit has a Bluetooth 4.1 stack with Bluetooth Low Energy (BLE) and supports the [GAP Peripheral Role](https://bluetooth-developer.blogspot.com/2016/07/microbit-and-bluetooth-roles.html). As per all Bluetooth, it operates in the ISM (Industrial Scientific Medical) band and this starts at **2.4GHz and ends at 2.41GHz**. BLE divides the frequency band into 50 x 2MHz bands of which 40 are used. These are called **channels** and numbered **0 to 39**. diff --git a/community/slack.md b/community/slack.md index 527df34..99ae49b 100644 --- a/community/slack.md +++ b/community/slack.md @@ -27,7 +27,7 @@ In addition to our regular [Micro:bit Educational Foundation newsletter](https:/ Please note that Slack complements, but does not replace [micro:bit help & support](http://support.microbit.org, where you can search for help and ask the team questions. -Slack operates it's own [privacy policy](https://slack.com/privacy-policy), so make sure you have read and you agree with this before signing up. +Slack operate their own [privacy policy](https://slack.com/privacy-policy), so make sure you have read and you agree with this before signing up. If you'd like to join the slack channel, please fill in the form below. This form collects your email address and system metadata, in accordance with the [privacy policy of Freshdesk](https://www.freshworks.com/privacy/) our support system. We only use this to process an invite to Slack. after which the ticket is closed off and archived. If you wish, you can always [deactivate your slack account at a later date.](https://get.slack.help/hc/en-us/articles/203953146-Deactivate-your-Slack-account)Freshdesk is currently working on the ability to [remove your own data.](https://support.freshdesk.com/support/discussions/topics/14331?page=1). In the meantime, please notify help@microbit.org if you wish to have your email address removed from the Freshdesk system diff --git a/hardware/1-3-revision.md b/hardware/1-3-revision.md index 51f236e..97aa4a9 100644 --- a/hardware/1-3-revision.md +++ b/hardware/1-3-revision.md @@ -23,7 +23,7 @@ lang: en ## Getting Started With the micro:bit Hardware -The micro:bit hardware is based on the Arm-Mbed platform. It has an application processor with lots of on-chip perhipherals. Some off-chip peripherals are connected to this chip. +The micro:bit hardware is based on the Arm-Mbed platform. It has an application processor with lots of on-chip peripherals. Some off-chip peripherals are connected to this chip. There is an interface processor connected to the application processor, and it is the interface processors job to manage communications over the USB and to support the drag-and-drop code-flashing process. The interface processor does not connect to any of the micro:bit peripherals. @@ -37,8 +37,8 @@ Two key pieces of information to help understand the internals of the micro:bit ### nRF51 Application Processor -The nRF51 application processor is where user programs run. A single, complete application including user code, runtime code and bluetooth stack is loaded and run directly from on chip flash memory. All user accessible GPIO pins are provided by this processor. -There is an onboard 2.4GHz radio engine used to provide Bluetooth capabilities via an off-chip aerial. +The nRF51 application processor is where user programs run. A single, complete application including user code, runtime code and bluetooth stack is loaded and run directly from on-chip flash memory. All user accessible GPIO pins are provided by this processor. +There is an on-board 2.4GHz radio engine used to provide Bluetooth capabilities via an off-chip aerial. | item | details | --- | --- @@ -52,7 +52,7 @@ There is an onboard 2.4GHz radio engine used to provide Bluetooth capabilities v ### 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. +The on-board 2.4GHz transceiver supports Bluetooth communications via the Nordic S110 SoftDevice, which provides a fully qualified Bluetooth low energy stack. This allows the micro:bit to communicate with a wide range of Bluetooth devices, including smartphones and tablets. | item | details @@ -69,7 +69,7 @@ This allows the micro:bit to communicate with a wide range of Bluetooth devices, ### Low Level Radio Communications -The on board 2.4GHz transciever supports a number of other radio communications standards, on which we build the microbit-radio protocol +The on-board 2.4GHz transciever supports a number of other radio communications standards, on which we build the microbit-radio protocol This protocol provides a very simple small-packet broadcast radio interface between other devices that support it, such as other micro:bit devices. The 'radio' interface that appears in a number of the languages on the micro:bit is built on top of this protocol. Additionally, the micro:bit runtime software adds a 'group code' to each data payload, allowing for simple user managed device addressing and filtering to take place. @@ -91,7 +91,7 @@ Additionally, the micro:bit runtime software adds a 'group code' to each data pa The two buttons on the front of the micro:bit, and the 1 button on the back, are tact momentary push to make buttons. The back button is connected to the KL26 interface processor and to the nRF51 processor for system reset purposes. This means that the application will reset regardless of if it is powered from USB or from battery. Front buttons A and B can be programmed in the user application for any purpose. -A and B are debounced by software, which also includes short press, long press, and 'both A+B' press detection. Buttons operate in a typical inverted electrical mode, where a pullup resistor ensures a logical '1' when the button is released, and a logical '0' when the button is pressed. +A and B are debounced by software, which also includes short press, long press, and 'both A+B' press detection. Buttons operate in a typical inverted electrical mode, where a pull-up resistor ensures a logical '1' when the button is released, and a logical '0' when the button is pressed. Both A and B buttons are connected to GPIO pins that are also accessible on the micro:bit edge connector. | item | details @@ -109,7 +109,7 @@ This LED matrix is also used to sense ambient light, by repeatedly switching som | item | details | --- | --- -| Type | minature surface mount red LED +| Type | miniature surface mount red LED | Physical structure | 5x5 matrix | Electrical structure | 3x9 | Intensity control | 10 steps @@ -121,7 +121,7 @@ This LED matrix is also used to sense ambient light, by repeatedly switching som ### Accelerometer The accelerometer is a separate chip that provides 3-axis sensing. -It also includes some on board gesture detection (such as fall detection) in hardware, and additional gesture sensing (e.g. logo-up, logo-down, shake) via software algorithms. +It also includes some on-board gesture detection (such as fall detection) in hardware, and additional gesture sensing (e.g. logo-up, logo-down, shake) via software algorithms. It is connected to the application processor via the I2C bus. | item | details @@ -136,7 +136,7 @@ It is connected to the application processor via the I2C bus. ### Magnetometer The magnetometer is a separate chip that provides magnetic field strength sensing. -A software algorithm in the standard runtime uses the on board accelerometer to turn these readings into a board orientation independent compass reading. +A software algorithm in the standard runtime uses the on-board accelerometer to turn these readings into a board orientation independent compass reading. The compass must be calibrated before use, and the calibration process is automatically initiated by the runtime software. This device is connected to the application processor via the I2C bus. @@ -149,7 +149,7 @@ This device is connected to the application processor via the I2C bus. ### Temperature Sensing -The nRF51 application processor has an on board core temperature sensor. +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. | item | details @@ -162,15 +162,15 @@ This is exposed via the standard runtime software, and provides an estimate of a ### General Purpose Input/Output Pins -The edge connector brings out many of the GPIO circuits of the application processor. Some of these circuits are shared with other functions of the micro:bit, but many of these extra circuits can be re-allocated to general purpose use if some software features are turned off. Note: the nRF51 data sheet states that GPIO pins may be in std-drive (0.5mA) and high-drive (5mA) mode, with a maximum of 3 pins in high-drive mode at any one time. +The edge connector brings out many of the GPIO circuits of the application processor. Some of these circuits are shared with other functions of the micro:bit, but many of these extra circuits can be re-allocated to general purpose use if some software features are turned off. Note: the nRF51 datasheet states that GPIO pins may be in std-drive (0.5mA) and high-drive (5mA) mode, with a maximum of 3 pins in high-drive mode at any one time. | item | details | --- | --- | Rings | 3 large IO rings and two large power rings, 4mm plug and crocodile clip compatible | GPIO features | 19 assignable GPIO pins -|| 2 are assigned to the on board I2C interface +|| 2 are assigned to the on-board I2C interface || 6 are used for display or light sensing feature -|| 2 are used for on board button detection +|| 2 are used for on-board button detection || 1 is reserved for an accessibility interface || 19 may be assigned as digital input or digital output || 19 may be assigned for up to 3 simultaneous PWM channels @@ -192,7 +192,7 @@ Power to the micro:bit may be provided via the USB connection, via the interface | --- | --- | Operating range | 1.8V .. 3.6V | USB current | 120mA max -| Onboard Peripherals budget | 30mA +| On-board Peripherals budget | 30mA | Battery connector | JST X2B-PH-SM4-TB | Battery current | TBC | Max current provided via edge connector | 90mA @@ -214,7 +214,7 @@ The interface chip handles the USB connection, and is used for flashing new code ### USB Communications -The micro:bit has an on board USB communications stack, that is built into the firmware of the interface chip. This stack provides the ability to drag and drop files onto the MICROBIT drive in order to load code into the application processor. It also allows serial data to be streamed to and from the micro:bit application processor over USB to an external host computer, and supports the CMSIS-DAP protocol for host debugging of application programs. +The micro:bit has an on-board USB communications stack, that is built into the firmware of the interface chip. This stack provides the ability to drag and drop files onto the MICROBIT drive in order to load code into the application processor. It also allows serial data to be streamed to and from the micro:bit application processor over USB to an external host computer, and supports the CMSIS-DAP protocol for host debugging of application programs. | item | details | --- | --- @@ -227,7 +227,7 @@ The micro:bit has an on board USB communications stack, that is built into the f ### 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. +The interface processor can be used with special host tools to debug code that is running on the application processor. It connects to the application processor via 4 signal wires. The KL26 interface processor code can also be debugged via its integral SWD software debug interface, for example to load initial bootloader code into this processor at manufacturing time, or to recover a lost bootloader. | item | details | --- | --- @@ -254,7 +254,7 @@ We have some [nice 2D and 3D CAD drawings and models of the micro:bit](https://g - [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 datasheet](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) diff --git a/hardware/1-5-revision.md b/hardware/1-5-revision.md index e8bea5a..ea5edf1 100644 --- a/hardware/1-5-revision.md +++ b/hardware/1-5-revision.md @@ -21,7 +21,7 @@ lang: en ## Getting Started With the micro:bit Hardware The micro:bit hardware is based on the Arm-Mbed platform. -It has an application processor with lots of on-chip perhipherals. +It has an application processor with lots of on-chip peripherals. Some off-chip peripherals are connected to this chip. There is an interface processor connected to the application processor, and it is the interface processors job to manage communications over the USB and to support the drag-and-drop code-flashing process. The interface processor does not connect to any of the micro:bit peripherals. @@ -37,9 +37,9 @@ Two key pieces of information to help understand the internals of the micro:bit ### 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. +A single, complete application including user code, runtime code and bluetooth stack is loaded and run directly from on-chip flash memory. All user accessible GPIO pins are provided by this processor. -There is an onboard 2.4GHz radio engine used to provide Bluetooth capabilities via an off-chip aerial. +There is an on-board 2.4GHz radio engine used to provide Bluetooth capabilities via an off-chip aerial. | item | details | --- | --- @@ -53,7 +53,7 @@ There is an onboard 2.4GHz radio engine used to provide Bluetooth capabilities v ### 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. +The on-board 2.4GHz transceiver supports Bluetooth communications via the Nordic S110 SoftDevice, which provides a fully qualified Bluetooth low energy stack. This allows the micro:bit to communicate with a wide range of Bluetooth devices, including smartphones and tablets. | item | details @@ -70,7 +70,7 @@ This allows the micro:bit to communicate with a wide range of Bluetooth devices, ### Low Level Radio Communications -The on board 2.4GHz transciever supports a number of other radio communications standards, including the proprietary Nordic Gazell protocol. +The on-board 2.4GHz transceiver supports a number of other radio communications standards, including the proprietary Nordic Gazell protocol. This protocol provides a very simple small-packet broadcast radio interface between other devices that support this proprietary protocol, such as other micro:bit devices. The 'radio' interface that appears in a number of the languages on the micro:bit is built on top of this Gazell protocol. Additionally, the micro:bit runtime software adds a 'group code' to each data payload, allowing for simple user managed device addressing and filtering to take place. @@ -92,7 +92,7 @@ Additionally, the micro:bit runtime software adds a 'group code' to each data pa The two buttons on the front of the micro:bit, and the 1 button on the back, are tact momentary push to make buttons. The back button is connected to the KL26 interface processor and to the nRF51 processor for system reset purposes. This means that the application will reset regardless of if it is powered from USB or from battery. Front buttons A and B can be programmed in the user application for any purpose. -A and B are debounced by software, which also includes short press, long press, and 'both A+B' press detection. Buttons operate in a typical inverted electrical mode, where a pullup resistor ensures a logical '1' when the button is released, and a logical '0' when the button is pressed. +A and B are debounced by software, which also includes short press, long press, and 'both A+B' press detection. Buttons operate in a typical inverted electrical mode, where a pull-up resistor ensures a logical '1' when the button is released, and a logical '0' when the button is pressed. Both A and B buttons are connected to GPIO pins that are also accessible on the micro:bit edge connector. | item | details @@ -110,7 +110,7 @@ This LED matrix is also used to sense ambient light, by repeatedly switching som | item | details | --- | --- -| Type | minature surface mount red LED +| Type | miniature surface mount red LED | Physical structure | 5x5 matrix | Electrical structure | 3x9 | Intensity control | 10 steps @@ -122,8 +122,8 @@ This LED matrix is also used to sense ambient light, by repeatedly switching som ### Motion sensor The 1.5 micro:bit variant has a combined accelerometer and magnetometer chip that provides 3-axis sensing and magnetic field strength sensing. -It also includes some on board gesture detection (such as fall detection) in hardware, and additional gesture sensing (e.g. logo-up, logo-down, shake) via software algorithms. -A software algorithm in the standard runtime uses the on board accelerometer to turn readings into a board orientation independent compass reading. +It also includes some on-board gesture detection (such as fall detection) in hardware, and additional gesture sensing (e.g. logo-up, logo-down, shake) via software algorithms. +A software algorithm in the standard runtime uses the on-board accelerometer to turn readings into a board orientation independent compass reading. The compass must be calibrated before use, and the calibration process is automatically initiated by the runtime software. This device is connected to the application processor via the I2C bus. @@ -132,14 +132,14 @@ The v1.5 micro:bit has a footprint for two different motion sensors: one made by | item | details | --- | --- | Model | [LSM303GR](https://www.st.com/en/mems-and-sensors/lsm303agr.html) -| Features | 3 magnetic field and 3 acceleration axis , 2/4/8/16g ranges +| Features | 3 magnetic field and 3 acceleration axes , 2/4/8/16g ranges | Resolution | 8/10/12 bits | On board gestures | 'freefall' | Other gestures | Other gestures are implemented by software algorithms in the runtime. ### Temperature Sensing -The nRF51 application processor has an on board core temperature sensor. +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. | item | details @@ -152,15 +152,15 @@ This is exposed via the standard runtime software, and provides an estimate of a ### General Purpose Input/Output Pins -The edge connector brings out many of the GPIO circuits of the application processor. Some of these circuits are shared with other functions of the micro:bit, but many of these extra circuits can be re-allocated to general purpose use if some software features are turned off. Note: the nRF51 data sheet states that GPIO pins may be in std-drive (0.5mA) and high-drive (5mA) mode, with a maximum of 3 pins in high-drive mode at any one time. +The edge connector brings out many of the GPIO circuits of the application processor. Some of these circuits are shared with other functions of the micro:bit, but many of these extra circuits can be re-allocated to general purpose use if some software features are turned off. Note: the nRF51 datasheet states that GPIO pins may be in std-drive (0.5mA) and high-drive (5mA) mode, with a maximum of 3 pins in high-drive mode at any one time. | item | details | --- | --- | Rings | 3 large IO rings and two large power rings, 4mm plug and crocodile clip compatible | GPIO features | 19 assignable GPIO pins -|| 2 are assigned to the on board I2C interface +|| 2 are assigned to the on-board I2C interface || 6 are used for display or light sensing feature -|| 2 are used for on board button detection +|| 2 are used for on-board button detection || 1 is reserved for an accessibility interface || 19 may be assigned as digital input or digital output || 19 may be assigned for up to 3 simultaneous PWM channels @@ -181,7 +181,7 @@ Power to the micro:bit may be provided via the USB connection, via the interface | --- | --- | Operating range | 1.8V .. 3.6V | USB current | 120mA max -| Onboard Peripherals budget | 30mA +| On-board Peripherals budget | 30mA | Battery connector | JST X2B-PH-SM4-TB | Battery current | TBC | Max current provided via edge connector | 90mA @@ -199,11 +199,11 @@ The interface chip handles the USB connection, and is used for flashing new code | RAM | 16KB | Speed | [16Mhz (crystal)](https://github.com/Armmbed/DAPLink/blob/f499eb6ec4a847a2b78831fe1acc856fd8eb2f28/source/hic_hal/freescale/kl26z/MKL26Z4/system_MKL26Z4.c#L69) 48MHz (max) | 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) +| More Info | [DAPLink](../../software/daplink-interface/), [KL26 reference manual](https://www.nxp.com/docs/en/reference-manual/KL26P121M48SF4RM.pdf) [KL26Z datasheet](http://www.nxp.com/docs/pcn_attachments/16440_KL26P64M48SF5_Rev.4.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 MICROBIT drive in order to load code into the application processor. It also allows serial data to be streamed to and from the micro:bit application processor over USB to an external host computer, and supports the CMSIS-DAP protocol for host debugging of application programs. +The micro:bit has an on-board USB communications stack, that is built into the firmware of the interface chip. This stack provides the ability to drag and drop files onto the MICROBIT drive in order to load code into the application processor. It also allows serial data to be streamed to and from the micro:bit application processor over USB to an external host computer, and supports the CMSIS-DAP protocol for host debugging of application programs. | item | details | --- | --- @@ -216,7 +216,7 @@ The micro:bit has an on board USB communications stack, that is built into the f ### 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. +The interface processor can be used with special host tools to debug code that is running on the application processor. It connects to the application processor via 4 signal wires. The KL26 interface processor code can also be debugged via its integral SWD software debug interface, for example to load initial bootloader code into this processor at manufacturing time, or to recover a lost bootloader. | item | details | --- | --- diff --git a/hardware/edgeconnector.md b/hardware/edgeconnector.md index 5ed8132..71f7e0e 100644 --- a/hardware/edgeconnector.md +++ b/hardware/edgeconnector.md @@ -149,7 +149,7 @@ This table shows various data about each of the pins on the micro:bit edge conne 1. RINGs for 0, 1, 2, 3V and GND are also connected to the respective reverse side rings on the edge connector. -2. The 3V and GND rings have guard strips either side of the big rings, to avoid any degradation of device performance due to slipping crocodile clip connections. Care should be taken on rings 0, 1 and 2 to avoid shorting crocodile clips against adjacent pins, which could cause some slight interference with the pattern currently displayed on the LED matrix, or introduce some innaccuracies in the light sensing readings. +2. The 3V and GND rings have guard strips either side of the big rings, to avoid any degradation of device performance due to slipping crocodile clip connections. Care should be taken on rings 0, 1 and 2 to avoid shorting crocodile clips against adjacent pins, which could cause some slight interference with the pattern currently displayed on the LED matrix, or introduce some inaccuracies in the light sensing readings. 3. The DAL DynamicPWM driver (and the underlying Nordic timer peripherals) dictate that PWM can only be active on 3 pins simultaneously. Any attempt to allocate a 4th pin for PWM use, will disable one of the existing PWM pins. @@ -157,7 +157,7 @@ This table shows various data about each of the pins on the micro:bit edge conne 5. Functions in brackets should be used with caution, as other features of the device may become unstable, degraded or non operational, if their normal use is not disabled in the software first. -6. The source file for [the pinout table](/docs/hardware/pinmap.csv) is held in CSV format. You can load this into a spreadsheet and sort and filter it in any way that makes sense to you. There is also a [zipped Python script](/docs/hardware/csv2md.zip) in this folder that you can download to re-generate the markdown table version of the pinmap used on this page, from the .csv file. +6. The source file for [the pinout table](/docs/hardware/pinmap.csv) is held in CSV format. You can load this into a spreadsheet and sort and filter it in any way that makes sense to you. There is also a [zipped Python script](/docs/hardware/csv2md.zip) in this folder that you can download to re-generate the markdown table version of the pin map used on this page, from the .csv file. 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. @@ -167,7 +167,7 @@ Pins that are marked with brackets around functions, require the default functio ### 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)`. +These pins are coupled to the LED matrix display, and also its 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. @@ -177,13 +177,13 @@ These pins are assigned to the two on-board buttons. In their default setup with Buttons are hooked into the system timer in their constructor for regular debouncing. However, if you want to completely remove this feature and use the physical pins for other purposes, you can `delete uBit.buttonA`, it will call the C++ destructor and de-register the button instance from the system timer, effectively disabling all DAL activity with that pin. It is then possible to use a `MicroBitPin` instance around the physical pin name to control it directly without interference from the DAL. -Be aware though, that there are 10K external pullup resistors fitted to the micro:bit board. +Be aware though, that there are 10K external pull-up resistors fitted to the micro:bit board. ### 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. +These pins are allocated to the I2C bus, which is used by both the on-board motion sensor. It is strongly suggested that you avoid using these pins for any function other than I2C. -It is possible to disable the DAL services that use these pins as the I2C bus, but the motion sensor device will still be connected to the bus, and may try to interpret the signals as data payloads, which could create some undesirable side effects on the SDA and interrupt pins. There are 4K7 pullups fitted to both pins on the board, so the best use for these two signals is to add other I2C devices. +It is possible to disable the DAL services that use these pins as the I2C bus, but the motion sensor device will still be connected to the bus, and may try to interpret the signals as data payloads, which could create some undesirable side effects on the SDA and interrupt pins. There are 4K7 pull-ups fitted to both pins on the board, so the best use for these two signals is to add other I2C devices. 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. @@ -219,7 +219,7 @@ NOTE 2: A common way that the maximum pin voltages can be exceeded, is to attach NOTE 3: 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. -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. +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 @@ -279,4 +279,4 @@ Can you help to find or design a better connection solution to the micro:bit edg - [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 resources or 3D printed designs diff --git a/hardware/i2c-shared.md b/hardware/i2c-shared.md index 977e45a..0dce422 100644 --- a/hardware/i2c-shared.md +++ b/hardware/i2c-shared.md @@ -1,9 +1,9 @@ --- layout: i2c order: -title: I2c shared bus -heading: I2c information for shared bus -description: I2c information for shared bus +title: I2C shared bus +heading: I2C information for shared bus +description: I2C information for shared bus permalink: /hardware/i2c-shared/ ref: i2c-shared lang: en @@ -15,9 +15,9 @@ 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 diagram -![i2c block](/docs/hardware/assets/i2c-block.svg) +![I2C block](/docs/hardware/assets/i2c-block.svg) ### Table of addresses used @@ -27,19 +27,19 @@ The v1.5 micro:bit has a footprint for two different motion sensors: one made by | micro:bit v1.5 variant 1 (LSM303AGR) | 0x19 (0x32/0x33) | 0x1E (0x3C/0x3D) | | micro:bit v1.5 variant 2 (FXOS8700CQ) | 0x1F (0x3E/0x3F) | 0x1F (0x3E/0x3F) | -Overall, this means 0x1D, 0x0E (from v1.3), 0x1F and 0x19 (for the revision) are reserved for onboard use. +Overall, this means 0x1D, 0x0E (from v1.3), 0x1F and 0x19 (for the revision) are reserved for on-board 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. +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 | +| 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: +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. diff --git a/hardware/i2c.md b/hardware/i2c.md index eec709f..3898d49 100644 --- a/hardware/i2c.md +++ b/hardware/i2c.md @@ -1,25 +1,25 @@ --- layout: i2c order: -title: I2c int/ext bus -heading: I2c information for internal and external bus -description: I2c information for internal and external bus +title: I2C int/ext bus +heading: I2C information for internal and external bus +description: I2C information for internal and external bus permalink: /hardware/i2c/ ref: i2c lang: en --- -## Use of the I2c bus +## Use of the I2C bus -The I2c bus for the latest revision of the micro:bit seperates the I2c lines into Internal and External use. The [previous revisions share the I2C bus](../i2c-shared/) with the Edge connector and nRF chip. +The I2C bus for the latest revision of the micro:bit separates the I2C lines into Internal and External use. The [previous revisions share the I2C bus](../i2c-shared/) with the Edge connector and nRF chip. The internal lines run to the Nordic chip and communicate with the motion sensor and KL27 interface. The external lines run to the edge connector and can be used for accessories. -### I2c block diagram +### I2C block diagram -![i2c block](/docs/hardware/assets/i2c-block.svg) +![I2C block](/docs/hardware/assets/i2c-block.svg) ### Table of addresses used @@ -28,19 +28,19 @@ The external lines run to the edge connector and can be used for accessories. | motion sensor variant 1 (LSM303AGR) | 0x19 (0x32/0x33) | 0x1E (0x3C/0x3D) | TBC | motion sensor variant 2 (FXOS8700CQ) | 0x1F (0x3E/0x3F) | 0x1F (0x3E/0x3F) | TBC -This means 0x1E, 0x1F and 0x19 are reserved for onboard use. +This means 0x1E, 0x1F and 0x19 are reserved for on-board 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. +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 | +| 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: +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. diff --git a/hardware/index.md b/hardware/index.md index 9eb21dc..18a232f 100644 --- a/hardware/index.md +++ b/hardware/index.md @@ -24,9 +24,9 @@ lang: en ## Getting Started With the micro:bit Hardware -The micro:bit is a Single Board Computer (SBC) that contains an application processor with a variety of on-chip perhipherals.Other peripherals are connected to this chip. +The micro:bit is a Single Board Computer (SBC) that contains an application processor with a variety of on-chip peripherals.Other peripherals are connected to this chip. -An interface processor is connected to the application processer and manages communications via the USB interface, including the drag-and-drop code flashing process. The interface processor does not connect to any of the micro:bit peripherals. +An interface processor is connected to the application processor and manages communications via the USB interface, including the drag-and-drop code flashing process. The interface processor does not connect to any of the micro:bit peripherals. Two key pieces of information to help understand the internals of the micro:bit are: @@ -39,9 +39,9 @@ Two key pieces of information to help understand the internals of the micro:bit ### nRF52 Application Processor The nRF52 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. +A single, complete application including user code, runtime code and Bluetooth stack is loaded and run directly from on-chip flash memory. All user accessible GPIO pins are provided by this processor. -There is an onboard 2.4GHz radio peripheral used to provide Bluetooth and custom radio capabilities via an off-chip aerial. +There is an on-board 2.4GHz radio peripheral used to provide Bluetooth and custom radio capabilities via an off-chip aerial. | item | details | --- | --- @@ -55,7 +55,7 @@ There is an onboard 2.4GHz radio peripheral used to provide Bluetooth and custom ### 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. +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. This allows the micro:bit to communicate with a wide range of Bluetooth devices, including smartphones and tablets. | item | details @@ -72,7 +72,7 @@ This allows the micro:bit to communicate with a wide range of Bluetooth devices, ### Low level radio communications -The on board 2.4GHz transciever supports a number of other radio communications standards, on which we build the microbit-radio protocol +The on-board 2.4GHz transceiver supports a number of other radio communications standards, on which we build the microbit-radio protocol This protocol provides a very simple small-packet broadcast radio interface between other devices that support it, such as other micro:bit devices. The 'radio' interface that appears in a number of the languages on the micro:bit is built on top of this protocol. Additionally, the micro:bit runtime software adds a 'group code' to each data payload, allowing for simple user managed device addressing and filtering to take place. @@ -94,7 +94,7 @@ Additionally, the micro:bit runtime software adds a 'group code' to each data pa 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. Front buttons A and B can be programmed in the user application for any purpose. -A and B are debounced by software, which also includes short press, long press, and 'both A+B' press detection. Buttons operate in a typical inverted electrical mode, where a pullup resistor ensures a logical '1' when the button is released, and a logical '0' when the button is pressed. +A and B are debounced by software, which also includes short press, long press, and 'both A+B' press detection. Buttons operate in a typical inverted electrical mode, where a pull-up resistor ensures a logical '1' when the button is released, and a logical '0' when the button is pressed. Both A and B buttons are connected to GPIO pins that are also accessible on the micro:bit edge connector. | item | details @@ -112,7 +112,7 @@ This LED matrix is also used to sense ambient light, by repeatedly switching som | item | details | --- | --- -| Type | minature surface mount red LED +| Type | miniature surface mount red LED | Physical structure | 5x5 matrix | Electrical structure | 5x5 | Intensity control | Software controlled up to 255 steps @@ -123,8 +123,8 @@ This LED matrix is also used to sense ambient light, by repeatedly switching som ### Motion sensor The micro:bit has a combined accelerometer and magnetometer chip that provides 3-axis sensing and magnetic field strength sensing. -It also includes some on board gesture detection (such as fall detection) in hardware, and additional gesture sensing (e.g. logo-up, logo-down, shake) via software algorithms. -A software algorithm in the standard runtime uses the on board accelerometer to turn readings into a board orientation independent compass reading. +It also includes some on-board gesture detection (such as fall detection) in hardware, and additional gesture sensing (e.g. logo-up, logo-down, shake) via software algorithms. +A software algorithm in the standard runtime uses the on-board accelerometer to turn readings into a board orientation independent compass reading. The compass must be calibrated before use, and the calibration process is automatically initiated by the runtime software. This device is connected to the application processor via the I2C bus. @@ -133,14 +133,14 @@ The micro:bit has a footprint for two different motion sensors: one made by ST ( | item | details | --- | --- | Model | [LSM303AGR](https://www.st.com/en/mems-and-sensors/lsm303agr.html) -| Features | 3 magnetic field and 3 acceleration axis , 2/4/8/16g ranges +| Features | 3 magnetic field and 3 acceleration axes , 2/4/8/16g ranges | Resolution | 8/10/12 bits | On board gestures | 'freefall' | Other gestures | Other gestures are implemented by software algorithms in the runtime. ### Temperature sensing -The NRF52 application processor has an on board core temperature sensor. +The NRF52 application processor has an on-board core temperature sensor. This is exposed via the standard runtime software, and provides an estimate of ambient temperature. @@ -154,7 +154,7 @@ temperature. ### Speaker -In addition to outputing sound via PWM on the pins, the micro:bit has a PCB mounted magnetic speaker to which sound output is mirrored. +In addition to outputting sound via PWM on the pins, the micro:bit has a PCB mounted magnetic speaker to which sound output is mirrored. | item | details | --- | --- @@ -165,14 +165,14 @@ In addition to outputing sound via PWM on the pins, the micro:bit has a PCB moun ### Microphone -An on board MEMs microphone provides a sound input to the micro:bit and a built in LED indicator on the front of the board shows the user when this is powered. +An on-board MEMs microphone provides a sound input to the micro:bit and a built in LED indicator on the front of the board shows the user when this is powered. The microphone has an external bias circuit of 33K:1K (power to ground) and is AC-coupled to the microphone input pin. | item | details | --- | --- | Type | Knowles SPU0410LR5H-QB-7 MEMS -| Sensitvity | -38dB ±3dB @ 94dB SPL +| Sensitivity | -38dB ±3dB @ 94dB SPL | SNR | 63dB | AOP | 118db SPL | Frequency range | 100Hz ~ 80kHz @@ -189,7 +189,7 @@ The edge connector brings out many of the GPIO circuits of the application proce | GPIO features | 19 assignable GPIO pins || 2 are dedicated to the external I2C interface || 6 are used for display or light sensing feature -|| 2 are used for on board button detection +|| 2 are used for on-board button detection || 1 is reserved for an accessibility interface || 19 may be assigned as digital input or digital output || 19 may be assigned for up to 3 simultaneous PWM channels @@ -210,7 +210,7 @@ Power to the micro:bit may be provided via 5V on the USB connector, or via a 3V | --- | --- | Operating range | 1.8V .. 3.6V | Operating current (USB and battery) | 300mA max -| Onboard Peripherals budget | 90mA +| On-board Peripherals budget | 90mA | Battery connector | JST X2B-PH-SM4-TB | Max current provided via edge connector | 190mA | More Info | [Power supply](./powersupply) @@ -227,11 +227,11 @@ The interface chip handles the USB connection, and is used for flashing new code | RAM | 16KB | Speed | 48MHz | 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) +| More Info | [DAPLink](/software/daplink-interface/), [KL27 reference manual](https://www.nxp.com/docs/en/reference-manual/KL27P64M48SF6RM.pdf) [KL27 datasheet](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 +The micro:bit has an on-board USB communications stack, that is built into the firmware of the interface chip. This stack provides the ability to drag and drop files onto the MICROBIT drive in order to load code into the application processor. It also allows serial data to be streamed to and from the micro:bit application processor over USB to an external host computer, and supports the CMSIS-DAP protocol for host debugging of application programs. | item | details @@ -245,7 +245,7 @@ MICROBIT drive in order to load code into the application processor. It also all ### 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. +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 debugged via it's integral SWD software debug interface, for example to load initial bootloader code into this processor at manufacturing time, or to recover a lost bootloader. | item | details | --- | --- diff --git a/hardware/power-consumption.md b/hardware/power-consumption.md index a2b272b..8654fc6 100644 --- a/hardware/power-consumption.md +++ b/hardware/power-consumption.md @@ -21,7 +21,7 @@ Board is fully operational. The nRF52 and KL27 will try and conserve power if th Put the nRF52 to sleep when instructed by CODAL. Wake when USB is connected, reset is pressed or instructed to by CODAL. -On USB - Press and hold power/reset for 5 seconds to enter sleep. The micro:bit power LED will dim from bright red to off. It will then flash on/off, showing you that it is still connnected to the power source. Press power/reset to wake up. +On USB - Press and hold power/reset for 5 seconds to enter sleep. The micro:bit power LED will dim from bright red to off. It will then flash on/off, showing you that it is still connected to the power source. Press power/reset to wake up. Removing the USB power cable and re-adding it will also wake the micro:bit @@ -35,6 +35,6 @@ 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. +The LED display on the V2 board revision is also brighter than previous revisions, so when using at full brightness you will notice faster battery drain than an equivalent program on a v1 board. See our tips on [prolonging battery life](https://support.microbit.org/en/support/solutions/articles/19000087231-prolonging-battery-life) \ No newline at end of file diff --git a/hardware/powersupply.md b/hardware/powersupply.md index 409f469..eb1986f 100644 --- a/hardware/powersupply.md +++ b/hardware/powersupply.md @@ -16,15 +16,15 @@ Power to the micro:bit may be provided via: - USB connection via the interface chip (which has an on-board regulator) - A battery plugged into the JST connector. - The 3V and GND pins on the Edge Connector -- The two losenge shaped pads on the rear right of the board +- The two lozenge shaped pads on the rear right of the board Power from the micro:bit can be provided by the 3V and GND pins to small external circuits. 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 its 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. @@ -32,7 +32,7 @@ It's is important to stay within the design parameters of the board: ## 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. +As taken from each of the chip datasheets, it can be seen that different devices have slightly different operating voltage ranges and absolute maximum voltages. Manufacturers state the operating voltage range as well as the absolute maximum tolerable by the device. You should never exceed the operating voltage range of any of the devices. ### v1 revision @@ -64,10 +64,10 @@ This table implies an operating voltage range of the micro:bit device as a whole When powered from USB, the KL26 v1 interface chip's on-board regulator is used to provide 3.3V to the rest of the board. The latest revision V2 has a seperate regulator on the board. -The [KL26 data sheet](http://www.nxp.com/docs/pcn_attachments/16440_KL26P64M48SF5_Rev.4.pdf)v1 section 3.8.2, Table 30. "USB VREG electrical specifications" indicates the maximum current from the regulated supply is 120mA. Some of this current is required to run on-board devices, such as the KL26 itself, the nRF application processor, the motion sensor, and the LED display. When Bluetooth is enabled, the current consumption of the nRF increases slightly. You should budget your current requirements for anything you attach to the micro:bit v1 to not exceed about -90mA to give enough safe headroom for worst case with all on board peripherals in use. +The [KL26 datasheet](http://www.nxp.com/docs/pcn_attachments/16440_KL26P64M48SF5_Rev.4.pdf)v1 section 3.8.2, Table 30. "USB VREG electrical specifications" indicates the maximum current from the regulated supply is 120mA. Some of this current is required to run on-board devices, such as the KL26 itself, the nRF application processor, the motion sensor, and the LED display. When Bluetooth is enabled, the current consumption of the nRF increases slightly. You should budget your current requirements for anything you attach to the micro:bit v1 to not exceed about +90mA to give enough safe headroom for worst case with all on-board peripherals in use. -This means that if you require more than 90mA from the edge connector, (e.g. driving lots of NeoPixels or a small motor) these should have power supplied to them externally. You can back-power the micro:bit via it's 3V pad, but please be sure to use a properly regulated supply and a protection diode, as explained below, so that your micro:bit always has a supply within the operating range of all the on board peripherals and the supplies are not able to power each other. +This means that if you require more than 90mA from the edge connector, (e.g. driving lots of NeoPixels or a small motor) these should have power supplied to them externally. You can back-power the micro:bit via its 3V pad, but please be sure to use a properly regulated supply and a protection diode, as explained below, so that your micro:bit always has a supply within the operating range of all the on-board peripherals and the supplies are not able to power each other. It is advised that you do not power the micro:bit from USB battery packs. This is because some makes and models of USB battery packs can generate out of range voltages when they are not suitably loaded that could damage your micro:bit (i.e. when a small current is drawn). Also, some USB battery packs will switch off automatically when the current drawn from them is too low. @@ -76,16 +76,16 @@ Also, some USB battery packs will switch off automatically when the current draw When powered from a battery plugged into the top battery connector, the KL26 interface chip is not powered up, and the System LED will not be turned on. If your code does not display anything on the display, this might look like the micro:bit is not working, but it is. -Because the nRF51 chip is powered almost directly (there is only one BAT60 diode between the supply and the nRF51 power rails), a fully charged **LiPoly battery** that is specced to reach 4.2V **will be give greater than the [3.6V maximum that the nRF51 can withstand**](#key-voltages) +Because the nRF51 chip is powered almost directly (there is only one BAT60 diode between the supply and the nRF51 power rails), a fully charged **LiPoly battery** that is specified to reach 4.2V **will be give greater than the [3.6V maximum that the nRF51 can withstand**](#key-voltages) There is further information about the [battery connection and use](https://support.microbit.org/solution/articles/19000013982-how-do-i-power-my-micro-bit-/en) in our knowledgebase ### 3V Ring Powering The micro:bit may be powered from the 3V/GND rings on the edge connector. -There are also two losenge shaped pads on the far right of the back of the PCB that can be used to supply power (e.g. solderable pads for a 2xAAA holder that has wires or pins at one edge). [The topmost losenge is 0V and the bottom most losenge is 3V](../../accessories/making-accessories/#battery-pads). +There are also two lozenge shaped pads on the far right of the back of the PCB that can be used to supply power (e.g. solderable pads for a 2xAAA holder that has wires or pins at one edge). [The topmost lozenge is 0V and the bottom most lozenge is 3V](../../accessories/making-accessories/#battery-pads). -When powering from the 3V ring or the losenge on the PCB, you should take appropriate best practice precautions: +When powering from the 3V ring or the lozenge on the PCB, you should take appropriate best practice precautions: 1. Fit an external protection diode (preferably with a low Vf rating) to prevent damage due to the power supply being connected the wrong way round. @@ -95,7 +95,7 @@ When powering from the 3V ring or the losenge on the PCB, you should take approp The [schematic](/hardware/schematic/) shows the architecture of the power supply. Key points to note are that there are two BAT60A diodes, one from the 3.3V supply from the KL26/27 interface chip, and one from the external battery connector. -Note that the 3V ring on the edge connector is V_TGT, which is the raw supply provided to all on board chips, so this is why extra care should be taken when connecting directly to the 3V ring or the 3V losenge. +Note that the 3V ring on the edge connector is V_TGT, which is the raw supply provided to all on-board chips, so this is why extra care should be taken when connecting directly to the 3V ring or the 3V lozenge. The BAT60A devices have a low Vf rating, you can read about this in the [BAT60A datasheet](http://www.infineon.com/dgdl/Infineon-BAT60ASERIES-DS-v01_01-en.pdf?fileId=db3a304313d846880113def70c9304a9) diff --git a/hardware/schematic.md b/hardware/schematic.md index 5b0841b..f88d001 100644 --- a/hardware/schematic.md +++ b/hardware/schematic.md @@ -70,10 +70,10 @@ Below, we've extracted some useful details about the hardware that anyone implem ### LEDS -The LED matrix is physically layed out as a 5x5. On the V2 board this is implemeted as a 5x5 matrix, but in the v1, this is implemented as a scanned matrix of 9x3 (i.e. 9 colums by 3 rows). Row 2 Col 8, and Row 2 Col 9 are not used. +The LED matrix is physically laid out as a 5x5. On the V2 board this is implemented as a 5x5 matrix, but in the v1, this is implemented as a scanned matrix of 9x3 (i.e. 9 columns by 3 rows). Row 2 Col 8, and Row 2 Col 9 are not used. The LED matrix is driven via a high-speed multiplex generated by application processor software. -This software also uses the LED Row and Col pins to implement the light sensing feature, as such you may see a difference in sensitivity between borad revisions. +This software also uses the LED Row and Col pins to implement the light sensing feature, as such you may see a difference in sensitivity between board revisions. Some of the Columns appear on the edge connector, so if you want to use extra GPIO pins, you have to disable the display in software. ### Interface @@ -88,13 +88,13 @@ This processor does not have any connection to the GPIO pins on the micro:bit. ### Sensors -There is one combined motion sensor IC on the micro:bit, that contains an accelerometer and a magnetometer. The accelerometer measures acceleration in 3 axies, and the magnetometer can be used as a compass, as well as a magnetic field detector. +There is one combined motion sensor IC on the micro:bit, that contains an accelerometer and a magnetometer. The accelerometer measures acceleration in 3 axes, and the magnetometer can be used as a compass, as well as a magnetic field detector. -The device is connected to the application processor [I2c bus](../i2c/), and for the v1 revision this [I2c bus is also shared](../i2c-shared/) to two pins on the edge connector. I2C pullup resistors are pre-fitted on the board. +The device is connected to the application processor [I2C bus](../i2c/), and for the v1 revision this [I2C bus is also shared](../i2c-shared/) to two pins on the edge connector. I2C pull-up resistors are pre-fitted on the board. The magnetometer can generate one processor interrupt for the application processor, and the accelerometer can generate two different processor interrupts for the application processor. -Note, the physical orientation of this IC is important for binary compatibility with the driver code in the application processor, which assumes a particular physical orientation in it's calculations. +Note, the physical orientation of this IC is important for binary compatibility with the driver code in the application processor, which assumes a particular physical orientation in its calculations. ### Power Supply @@ -104,7 +104,7 @@ For USB powering, the KL26 interface processor has an on-board regulator that br A low-Vf diode (in this case about 0.23V max) is used to switch between sources. The diode prevents back-powering of any source from any other source. -Care should be taken if powering the micro:bit from the 3V pad on the edge connector, as the trace from that pad is connected directly to the IC's on the board. Please check the datasheets for the appropriate IC's for their maximum tolerable voltages. +Care should be taken if powering the micro:bit from the 3V pad on the edge connector, as the trace from that pad is connected directly to the ICs on the board. Please check the datasheets for the appropriate ICs for their maximum tolerable voltages. ### Application Processor @@ -124,7 +124,7 @@ The nRF52V2 features additional NFC functionality on P0. The edge connector is the main interface to external components attached to the micro:bit. -This interface has a range of digital, analog, touch, pwm, and serial communications interfaces. +This interface has a range of digital, analog, touch, PWM, and serial communications interfaces. 10Mohm weak pull-up resistors are fitted on P0 P1 and P2 for use in touch sensing mode, where they provide a weak pull-up to the supply providing a default high input and the user touching the GND pad pulls the pin down towards 0V, providing a low input. When in non touch modes, these pads have stronger internal pull-downs enabled in the software, so that the default input state when not connected is 'low'. @@ -138,9 +138,9 @@ The V2 board revision has a notched edge connector to ma ### Dimensions -The specific dminensions of the board are: +The specific dimensions of the board are: -- 51.60mm(w) 42.00mm(h) 11.65mm(d) +- 51.60mm(w) 42.00mm(h) 11.65mm(d) - JST connector to board 5.50mm - button depth to board 4.55mm - V2 speaker depth to board 3.00mm @@ -153,7 +153,7 @@ The following image of the V2 revision is taken from the - [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 datasheet](https://www.nxp.com/docs/en/data-sheet/KL27P64M48SF6.pdf) - [KL26 datasheet](http://www.nxp.com/webapp/search.partparamdetail.framework?PART_NUMBER=MKL26Z128VFM4) diff --git a/index.md b/index.md index 76a8f83..1351125 100644 --- a/index.md +++ b/index.md @@ -10,7 +10,7 @@ post_filter: featured ## The micro:bit developer community site -This site aims to sit between a community wiki and a technical data sheet for the micro:bit. +This site aims to sit between a community wiki and a technical datasheet for the micro:bit. The content is available to [edit on Github](http://github.com/microbit-foundation/dev-docs) and is [openly licensed through Creative Commons](https://github.com/microbit-foundation/dev-docs/blob/master/LICENSE.MD). The site is maintained by the Micro:bit Educational Foundation in order to document the hardware and software that make the micro:bit work the way it does. diff --git a/latest-revision/latest-revision-accessories.md b/latest-revision/latest-revision-accessories.md index d49aea3..f2389c8 100644 --- a/latest-revision/latest-revision-accessories.md +++ b/latest-revision/latest-revision-accessories.md @@ -29,7 +29,7 @@ Microsoft Research are designing a reference design for [MakeCode Arcade](https: Accessories that make use of the [large ring pins,](http://tech.microbit.org/hardware/edgeconnector/) should be unaffected by this revision. -The edge connector should be completley compatible electrically; The latest revision has one additional non-shared GPIO, all other pins and pin modes are compatible. +The edge connector should be completely compatible electrically; The latest revision has one additional non-shared GPIO, all other pins and pin modes are compatible. There are inevitably small layout differences in the placement of the components, and the possible implications of these is covered below. @@ -55,7 +55,7 @@ Further details including an [assembly diagram](../../hardware/schematic/#dimens 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. +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 on-board speaker. This will need to be done in software; extensions for MakeCode and objects for the Python Editor will support this. ### Microphone @@ -63,17 +63,17 @@ The on-board microphone is also rear-mounted, but has a sound input hole on the ### 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. +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 resistive 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 that you test your software packages with both board revisions in case any threshold tweaks are necessary. ## 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. +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 dedicated external i2c lines from the nRF52 to use with accessories. These are the addresses used by the micro:bit. | | accelerometer | magnetometer (compass) | | ------------------------------------ | ---------------- | ---------------------- | @@ -82,15 +82,15 @@ Whereas on previous revisions, the I2C bus was shared between the motion sensor ### Power -The micro:bit can now be powered from the two losenge shaped pads on the rear of the board and the 3V/GND pins. +The micro:bit can now be powered from the two lozenge 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. +If you use the lozenge pads, you must diode (or otherwise) protect themselves from the micro:bit having power via another source. This was still necessary on the previous revision when the board was powered from battery, but is now true for USB and edge-connector power also. The nRF52 supplies 300mA to drive the board. 110mA is reserved for powering on-board components. **190mA** is then available for accessories. ### 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 publicly 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 diff --git a/latest-revision/latest-revision-content.md b/latest-revision/latest-revision-content.md index fe7b757..9377c66 100644 --- a/latest-revision/latest-revision-content.md +++ b/latest-revision/latest-revision-content.md @@ -23,7 +23,7 @@ If you’d like to keep up to date with technical information about the device, ## Updating .hex files -The editors and apps are being updated over the coming weeks and are currrently in beta. +The editors and apps are being updated over the coming weeks and are currently in beta. When they are released, you should update any compiled .hex files that you host as part of your resources. To do this, simply drag and drop them into the editor in which they were created and then download the .hex file. diff --git a/latest-revision/latest-revision-editors.md b/latest-revision/latest-revision-editors.md index 081e015..c0beebb 100644 --- a/latest-revision/latest-revision-editors.md +++ b/latest-revision/latest-revision-editors.md @@ -83,7 +83,7 @@ For example, if you do not yet support the microphone on the latest board revisi #### MicroPython -In the case of editors that use MicroPython, we propose the following approach which we introduced for the motion sensor update and beleive still works. +In the case of editors that use MicroPython, we propose the following approach which we introduced for the motion sensor update and believe still works. If an unknown micro:bit version is detected, but that micro:bit already contains MicroPython at a newer version than the one the editor knows about use the serial port to flash just the python script to the [filesystem](https://bbcmicrobitmicropython.readthedocs.io/en/latest/filesystem.html) diff --git a/latest-revision/latest-revision-main.md b/latest-revision/latest-revision-main.md index 62fd82e..207b0b4 100644 --- a/latest-revision/latest-revision-main.md +++ b/latest-revision/latest-revision-main.md @@ -74,7 +74,7 @@ These pages provide further guidance on the updates for different audiences. ## Universal Editors & Universal Hex Files -In an effort to ensure the greatest degree of continuity for teachers, users will not need to select which version of the device they have before using MakeCode or the Python Editor. Instead, the editors will suport a new format called “universal hex” which can run on both micro:bit V1 and micro:bit V2 (more below) +In an effort to ensure the greatest degree of continuity for teachers, users will not need to select which version of the device they have before using MakeCode or the Python Editor. Instead, the editors will support a new format called “universal hex” which can run on both micro:bit V1 and micro:bit V2 (more below) This means that you can use MakeCode or the online Python Editor as you always have, to use all of the features that are common to both version of the BBC micro:bit: Display, buttons, motion sensing, gestures like shake, light sensing, and even the Music blocks. @@ -102,7 +102,7 @@ When they are finalised, we will notify people via the [DAL, Editors and Devices | API | Blocks | Status | GitHub Issues | | --------------------------------------------------- | -------------------- | --------------------- | ------------- | | On loud/quiet sound `input.onSound(SoundType.Loud)` - Triggers after a transition from quiet-loud/loud-quiet, so 'on quiet' will trigger after a loud sound but not continuously | ![on loud sound](/docs/latest-revision/assets/makecode-blocks/loudsound.png){: width="125"} | ✅ | | -| Set pin touch type `pins.touchSetType(TouchTarget.P0, TouchType.Resistive)`- capacitive/resisitive - Logo is capacative, large pins are resistive by default. | ![set touch type](/docs/latest-revision/assets/makecode-blocks/pin-mode.png){: width="650"} | ✅ | | +| Set pin touch type `pins.touchSetType(TouchTarget.P0, TouchType.Resistive)`- capacitive/resistive - Logo is capacitive, large pins are resistive by default. | ![set touch type](/docs/latest-revision/assets/makecode-blocks/pin-mode.png){: width="650"} | ✅ | | | On Logo pressed `input.onLogoPressed()` | ![logo pressed](/docs/latest-revision/assets/makecode-blocks/onLogoPressed.png){: width="125"} | ✅ | | | On logo released `input.onLogoReleased()` | ![logo released](/docs/latest-revision/assets/makecode-blocks/onLogoReleased.png){: width="125"} | ✅ | | | Logo is pressed `input.logoIsPressed()` | ![logo is pressed](/docs/latest-revision/assets/makecode-blocks/logoIsPressed.png){: width="150"} | ✅ | | @@ -136,7 +136,7 @@ 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 +### MakeCode You can use the latest board revision in the beta editor [https://makecode.microbit.org/beta](https://makecode.microbit.org/beta) diff --git a/software/hex-format.md b/software/hex-format.md index 936a358..35f85dc 100644 --- a/software/hex-format.md +++ b/software/hex-format.md @@ -36,7 +36,7 @@ There may be cases where it is not possible to support both boards, for example 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. -{% include alert-info.html content="We are currently working on a web based and CLI tool to generate Univeral Hex files and will publish information on usage here when this is ready. In the meantime, please [get in contact](mailto:support@microbit.org) if you require further information" %} +{% include alert-info.html content="We are currently working on a web based and CLI tool to generate Universal Hex files and will publish information on usage here when this is ready. In the meantime, please [get in contact](mailto:support@microbit.org) if you require further information" %} [Download standalone error hex](/docs/software/assets/stand-alone-error-v1.hex){: .btn.sm-btn download} diff --git a/software/in_browser_compiler.md b/software/in_browser_compiler.md index 63dab1f..0b9db01 100644 --- a/software/in_browser_compiler.md +++ b/software/in_browser_compiler.md @@ -43,7 +43,7 @@ There is a pre-compiled copy of the runtime (DAL+Mbed) that gets loaded when you MakeCode supports two-way conversion of code, so you can write code as blocks and see what the generated code looks like in Javascript/MakeCode Python. You can also write Javascript/MakeCode Python code, and if possible, MakeCode will convert this back into blocks automatically. -Makecode also allows you to [write your own block types](https://makecode.com/extensions) and [publish them as Extensions](https://makecode.microbit.org/extensions). +MakeCode also allows you to [write your own block types](https://makecode.com/extensions) and [publish them as Extensions](https://makecode.microbit.org/extensions). The Python web editor does not use the in-browser compiler. It only sits inside the frame of the website, but it gains access to the save and import functionality for saving and loading scripts to local files, and to and from a cloud store. diff --git a/software/index.md b/software/index.md index 6bfc8d4..84b6aa9 100644 --- a/software/index.md +++ b/software/index.md @@ -39,7 +39,7 @@ The 'high level' programming languages for the micro:bit break down into two bro *C/C++, while certainly compiled, is not considered a high-level language in this context* -In order to ensure that the micro:bit online code editors could scale to support 1M deployed boards, Microsoft built [Makecode](https://makecode.microbit.org), an in-browser-compiler written in TypeScript. +In order to ensure that the micro:bit online code editors could scale to support 1M deployed boards, Microsoft built [MakeCode](https://makecode.microbit.org), an in-browser-compiler written in TypeScript. This process is explained in full in the [In browser compiler](/software/in_browser_compiler) page, and in fantastic detail at [TouchDevelop in 208 bits](https://www.touchdevelop.com/docs/touch-develop-in-208-bits). @@ -118,8 +118,8 @@ When you write an application for your micro:bit, other pieces of software are j - [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. diff --git a/software/interface.md b/software/interface.md index 44b73ca..fe8cb2f 100644 --- a/software/interface.md +++ b/software/interface.md @@ -44,11 +44,11 @@ This software provides four USB endpoints that have specific purposes: - MSC - USB mass storage device for drag-and-drop programming of the target MCU's flash memory. -- CDC - serial passthrough from the target MCU to the PC. This is how messages get from the code you write onto the PC. +- CDC - serial pass-through from the target MCU to the PC. This is how messages get from the code you write onto the PC. - HID - CMSIS-DAP compliant debug channel - this is useful if you want to use advanced debuggers like GDB or Keil to understand what's happening (or not happening!) on your micro:bit. -- WebUSB - faciliates communicating witht the device via a WebUSB capable browser. +- WebUSB - facilitates communicating with the device via a WebUSB capable browser. The DAPLink software and interface chip are part of the [Arm Mbed HDK](https://developer.mbed.org/handbook/mbed-HDK) and the [Mbed Enabled program](https://www.mbed.com/en/about-mbed/mbed-enabled/) @@ -118,7 +118,7 @@ You will need to register for and download the [**Bootloader Host Application (b ### 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. +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 square) as you insert the USB cable into the device. ![TP1](/docs/software/assets/TP1.png){: width: 300px} diff --git a/software/makecode.md b/software/makecode.md index 948c818..d0f0b40 100644 --- a/software/makecode.md +++ b/software/makecode.md @@ -22,7 +22,7 @@ The source code for MakeCode for micro:bit target can be found at [github.com/Mi This target depends on several other repositories: - the PXT framework -- common APIs accross various MakeCode editors +- common APIs across various MakeCode editors - basic wrapper around the DAL - the micro:bit DAL @@ -41,7 +41,7 @@ An app is available for [Windows 10](https://www.microsoft.com/en-gb/p/makecode- ## 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) +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 documentation and a [video tutorial on YouTube](https://www.youtube.com/watch?v=ztrm4XehfGo&list=PLMMBk9hE-SepwjCAK7cY-jvq6KeQKda8x) ## Tutorial authoring diff --git a/software/micropython.md b/software/micropython.md index 2e5ec00..7bccb31 100644 --- a/software/micropython.md +++ b/software/micropython.md @@ -3,7 +3,7 @@ layout: page order: title: MicroPython on the micro:bit heading: MicroPython -description: MicroPython is a reimplemation of Python 3 that can be used with the BBC micro:bit +description: MicroPython is a reimplementation of Python 3 that can be used with the BBC micro:bit permalink: /software/micropython/ ref: software lang: en @@ -26,7 +26,7 @@ There are many ways to use MicroPython on the micro:bit. You can use: A utility for flashing the BBC micro:bit with Python scripts and the MicroPython runtime. You pronounce the name of this utility “micro-flash”. ;-) It provides two services: - - A library of functions to programatically create a hex file and flash it onto a BBC micro:bit. + - A library of functions to programmatically create a hex file and flash it onto a BBC micro:bit. - A command line utility called uflash that will flash Python scripts onto a BBC micro:bit. - [microFS](https://microfs.readthedocs.io/en/latest/) @@ -48,7 +48,7 @@ MicroPython is just as easy to learn as the other programming languages but diff v1 The Bluetooth stack is not enabled inside MicroPython because of memory constraints. However MicroPython uses the Bluetooth radio hardware with its own simple yet powerful `radio` module. The protocol for the `radio` module is a lot more beginner friendly than Bluetooth yet allows users to create efficient yet effective wireless networks of micro:bit devices. Conceptually it works in the same way as walkie-talkies: anyone broadcasting on a certain channel can be heard by anyone listening on the same channel (and there are a large selection of channels to tune into). That's it! -Finally, and perhaps most importantly, by learning MicroPython you're learning how to use Python - one of the world's most popular professional programming languages. You inadvertantly use Python *every day* when you use YouTube, Google, Facebook, Instagram, DropBox and a plethora of other online services. +Finally, and perhaps most importantly, by learning MicroPython you're learning how to use Python - one of the world's most popular professional programming languages. You inadvertently use Python *every day* when you use YouTube, Google, Facebook, Instagram, DropBox and a plethora of other online services. These skills are valuable: Python programmers are in demand. ### The MicroPython Software @@ -93,7 +93,7 @@ The Python bytecode is given to the Python virtual machine to run and so your pr All of the above happens in the blink of an eye. -The Python virtual machine built into MicroPython is itself compiled from C++ code. It reads Python bytecodes and interprets them one at a time, calling into lower level C++ functions to make each one perform it's unique purpose. By using a bytecode interpreter, MicroPython implements a virtual machine with it's own virtual instruction set. +The Python virtual machine built into MicroPython is itself compiled from C++ code. It reads Python bytecodes and interprets them one at a time, calling into lower level C++ functions to make each one perform its unique purpose. By using a bytecode interpreter, MicroPython implements a virtual machine with its own virtual instruction set. It is virtual, because these instructions are not "baked in" to the hardware, but they are implemented in software. This is what allows MicroPython to be easily 'ported' onto different computer systems with different processors. ### Code Editors and Tools diff --git a/software/other-languages.md b/software/other-languages.md index 7e2c847..41912d3 100644 --- a/software/other-languages.md +++ b/software/other-languages.md @@ -11,13 +11,13 @@ 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. +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. 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! +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 its implementation must be complete enough to display a heart on the display! Please format the addition using this template: diff --git a/software/python-editor.md b/software/python-editor.md index a321e8e..c8d8070 100644 --- a/software/python-editor.md +++ b/software/python-editor.md @@ -21,7 +21,7 @@ The Python editor is based upon the [Ace editor](http://ace.c9.io) and includes 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. +The micro:bit target depends a closed source versioning repository that facilitates releases at `/v/`, for example the beta editor https://python.microbit.org/v/beta and previous releases. ### Offline diff --git a/software/runtime.md b/software/runtime.md index 59a9784..25fb1a5 100644 --- a/software/runtime.md +++ b/software/runtime.md @@ -29,7 +29,7 @@ When writing C/C++ code for the micro:bit, use of the micro:bit runtime is highl ### The micro:bit runtime Device Abstraction Layer (DAL) - V1 -The micro:bit runtime provides a [Device Abstraction Layer (DAL)](https://lancaster-university.github.io/microbit-docs/), that is built using Arm Mbed. Lancaster University has written this runtime for the micro:bit v1 as part of its ongoing efforts to support the adoption of Computer Science in schools. It provides a useful set of functions for higher level languages to consume, and make programming the micro:bit in C or C++ easier. Many of the 'blocks' you use in Makecode are directly calling functions provided by the DAL. The micro:bit runtime DAL is written in C/C++ and builds on the Arm Mbed HAL. +The micro:bit runtime provides a [Device Abstraction Layer (DAL)](https://lancaster-university.github.io/microbit-docs/), that is built using Arm Mbed. Lancaster University has written this runtime for the micro:bit v1 as part of its ongoing efforts to support the adoption of Computer Science in schools. It provides a useful set of functions for higher level languages to consume, and make programming the micro:bit in C or C++ easier. Many of the 'blocks' you use in MakeCode are directly calling functions provided by the DAL. The micro:bit runtime DAL is written in C/C++ and builds on the Arm Mbed HAL. Key components of the micro:bit DAL are: @@ -41,12 +41,12 @@ Key components of the micro:bit DAL are: The micro:bit v1 can also be programmed using the Mbed HAL directly, for those developers seeking more low level access to the hardware. ### Component Oriented Device Abstraction Layer (CODAL)- V2 -The [Component Oriented Device Abstraction Layer (CODAL)](https://lancaster-university.github.io/codal/) is an evolution of the DAL runtime that abstracts each hardware component of the micro:bit as a software component. CODAL supports a range of devices and processors, inlcuding the micro:bit v2 device. +The [Component Oriented Device Abstraction Layer (CODAL)](https://lancaster-university.github.io/codal/) is an evolution of the DAL runtime that abstracts each hardware component of the micro:bit as a software component. CODAL supports a range of devices and processors, including the micro:bit v2 device. 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 non-pre-emptive 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. @@ -59,7 +59,7 @@ The [instructions for building CODAL](https://github.com/microbit-foundation/cod ### Contributing to the micro:bit Runtime -The micro:bit runtime is an open source project, distributed under the MIT license, and contributions and collaborations are very much welcomed from the micro:bit community. There are still many things that could be merged into the micro:bit runtime, and with Makecode moving forward and adding new features, things that go into the runtime can also be exposed to the higher level languages if they work well and prove useful for coding in education. +The micro:bit runtime is an open source project, distributed under the MIT license, and contributions and collaborations are very much welcomed from the micro:bit community. There are still many things that could be merged into the micro:bit runtime, and with MakeCode moving forward and adding new features, things that go into the runtime can also be exposed to the higher level languages if they work well and prove useful for coding in education. 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. @@ -91,13 +91,13 @@ Of particular interest are the Mbed BLE projects, many of which were developed o ### Online IDE -Mbed also provides an online C/C++ IDE with which you can program the micro:bit. To get started with this, please see the [micro:bit Platform Page](http://developer.mbed.org/platforms/Microbit) on the mbed site, where there's a getting started video. +Mbed also provides an online C/C++ IDE with which you can program the micro:bit. To get started with this, please see the [micro:bit Platform Page](http://developer.mbed.org/platforms/Microbit) on the Mbed site, where there's a getting started video. ### Mbed Source Code and Versions Used The Mbed repository for micro:bit is [https://github.com/lancaster-university/mbed-classic](https://github.com/lancaster-university/mbed-classic), this is a fork of Mbed OS 2 (classic) with changes and fixes needed for the micro:bit project. This is the version of Mbed used with the offline DAL toolchain, [Mbed Online Compiler](https://ide.mbed.com/compiler/), and the [online editors on microbit.org](https://microbit.org/code). -micro:bit was based on the well-established Mbed 2.0 SDK, with which mbed 5 is compatible. Work is ongoing to [bring the micro:bit runtime onto Mbed 5](https://github.com/lancaster-university/microbit-dal/issues/224). +micro:bit was based on the well-established Mbed 2.0 SDK, with which Mbed 5 is compatible. Work is ongoing to [bring the micro:bit runtime onto Mbed 5](https://github.com/lancaster-university/microbit-dal/issues/224). ## Nordic nRF5 SDK @@ -105,6 +105,6 @@ The Mbed abstraction for the Nordic chip is built on top of the Nordic nRF5 SDK Crucially, this includes Nordic's [Soft Device 110](https://www.nordicsemi.com/Software-and-Tools/Software/S110) v1 / [Soft Device 140](https://www.nordicsemi.com/Software-and-tools/Software/S140) V2, a binary object that gets included into any hex file for the micro:bit that manages control of the radio to allow the micro:bit to use the industry standard Bluetooth Low Energy protocols. -The SoftDevice runs on the same MCU as the user's code, and when using the mbed BLE APIs (that the micro:bit runtime also uses), calls are made into SoftDevice. SoftDevice also occupies the highest priority interrupts, so that user code can be pre-empted by SoftDevice when this is required for the radio to function properly. +The SoftDevice runs on the same MCU as the user's code, and when using the Mbed BLE APIs (that the micro:bit runtime also uses), calls are made into SoftDevice. SoftDevice also occupies the highest priority interrupts, so that user code can be pre-empted by SoftDevice when this is required for the radio to function properly. v1 only. Micro:bit programs use SoftDevice S110 by default, which only allows the device to be a [GAP Peripheral](http://bluetooth-mdw.blogspot.co.uk/2016/07/microbit-and-bluetooth-roles.html). It is possible to use [Soft Device S130](https://www.nordicsemi.com/Software-and-tools/Software/S130) with the micro:bit by compiling offline with Mbed, though that is beyond the scope of this documentation. diff --git a/software/testing.md b/software/testing.md index 0f5a5d6..9c4b3d0 100644 --- a/software/testing.md +++ b/software/testing.md @@ -18,7 +18,7 @@ This page details the ways in which you can test the micro:bit hardware with the ## Software -### Makecode Editor +### MakeCode Editor You can use the beta editor at [https://makecode.microbit.org/beta](https://makecode.microbit.org/beta) @@ -74,7 +74,7 @@ The [Mu](https://codewith.mu/) editor releases are available on the [Mu download 1. Flash the micro:bit with the version of MicroPython you want to test. 2. Click the **REPL** to communicate with the board directly via serial. -3. To download a python file to the microbit, Click on **Save** and then click on the **Files** button. +3. To download a python file to the micro:bit, Click on **Save** and then click on the **Files** button. 4. Copy `main.py` from the Files on your computer to the Files on your micro:bit ![Copy main.py](/docs/latest-revision/assets/copy-main-py-mu.gif){: width="600"}