Micro Bit

BBC micro:bit v1（右）和v2（左）。

Micro Bit（也叫做BBC Micro Bit，或风格化为micro:bit）是基于ARM架构的单板电脑，由英国广播公司（BBC）设计，用于英国的计算机教育。

电路板大小为4cm×5cm，拥有1个ARM Cortex-M0处理器，内建加速度传感器和磁力传感器，通讯界面包括蓝牙和USB，可透过网页编程，直接把程式导入。显示屏由25个 (5*5) 红色LED组成，可以显示单色图案或动画。2个可编程按钮，可以用USB或者外部电池包来供电。设备输入和输出为环孔连接器和边缘连接器。

## 硬件

### v1

<image>

设备大小可描述为信用卡的一半大小，实测为43mm×52mm，它包括有:

- Nordic nRF51822 SoC – 16 MHz 32-bit ARM Cortex-M0微控制器，包含了256 KB闪存，16 KB静态内存，集成了2.4 GHz蓝牙低功耗协议栈和Nordic专有RF无线传输协议的模块，nRF51由于低功耗设计，不内置SysTick可编程间隔定时器。
- NXP/Freescale KL26Z MCU – 48 MHz 32-bit ARM Cortex-M0+核心微控制器，包含了全速USB 2.0 OTG控制器等。它担任串行及调试适配器，是在用户计算机和nRF51目标MCU之间的接口MCU，用户PC通过USB HID类连接经由接口MCU对目标MCU进行调试（JTAG-AP）和刷写程序（MEM-AP），并通过CDC类连接经由接口MCU与目标MCU进行串行通信。
- 三轴加速度传感器 – 经由I²C总线，v1.3*版是NXP/Freescale MMA8652，v1.5版是运动传感器ST LSM303AGR。
- 磁力传感器 – 经由I²C总线，可充当罗盘等，v1.3*版是NXP/Freescale MAG3110，v1.5版并入运动传感器ST LSM303AGR。
- 前面有由25个LED构成5×5矩阵的显示屏。
- 3个触觉按钮，前面2个为用户按钮A和B，背面1个为reset。
- 背面有MicroUSB连接器，和电池连接器。

I/O包括环孔连接器：3个GPIO（P0、P1、P2），1个电源正极（3V），1个接地即电源负极（GND），它们接纳鳄鱼夹或4mm香蕉插头；边缘连接器针脚（也称为金手指）的标号，依次为micro:bit设备抽象层（DAL）指定的：P3、P0、P4-P7、P1、P8-P12、P2、P13-P16、3V（3个）、P19-P20、GND（3个），共19个可设置的GPIO（未引出内部使用的P17、P18）。其中5个可完全自由使用（P0-P2、P8、P16），6个共用于LED阵列显示屏（P3、P4、P6、P7、P9、P10），2个共用于按钮A、B（P5、P11），1个保留给无障碍接口输入（P12）；可设置出1路SPI总线（P13-P15），1路I²C总线（P19-P20），1对UART串行收发；可设置出6个模拟输入（P0-P4、P10），3个触摸感应输入（P0-P2），3个PWM输出。

在连接了USB的情况下，KL26Z负责对这个PCB余下部分供电，将USB供给的5V±5%电压规整降至3.3V。KL26Z限定最大电流120mA，电源环孔或针脚输出可能只余下90mA。在使用电池连接器供电时，电池不为KL26Z供电，nRF51供电和电源环孔或针脚输出都来自电池。还可以谨慎的从电源环孔或针脚向micro:bit供电，从电池连接器、环孔或针脚择一供电时都不可超过3.6V极值。

### v2

版本2（v2）在2020年10月13日发行，包括了：

- Nordic nRF52833 – 64 MHz 32-bit ARM Cortex-M4微控制器，512 KB闪存，128 KB静态内存，Nordic S113 SoftDevice提供的2.4 GHz蓝牙低功耗无线网络，集成的温度传感器。
- NXP/Freescale KL27Z – 48 MHz ARM Cortex-M0+核心微控制器，预编程为全速USB 2.0控制器，用在USB和CPU之间的通线接口。
- 要么ST LSM303要么NXP FXOS8700 – 三轴的组合加速度和磁力传感器，经由I²C总线。
- Knowles MEMS麦克风，具有内建LED指示灯。
- Jiangsu Huaneng MLT-8530电磁式扬声器。
- MicroUSB连接器，JST PH电池连接器，25针边缘连接器。
- 由25个LED构成的5×5矩阵显示屏。
- 三个触觉按钮（两个给应用，一个给reset）和一个触摸传感器按钮。

在micro:bit v2中，可以长按3秒reset按钮来关闭主板。

## 软件

Micro Bit的软件是使用罗永喜ARM Mbed开发工具建立的，并且采用了其应用程序接口DAPLink，设备在连接到计算机的时候，是作为一个USB大容量存储设备而出现的。兰卡斯特大学开发了micro:bit运行时系统（有时称为硬件抽象层），提供了事件驱动编程和键-值存储机制，采用了Nordic半导体的nRF51 SDK和S110 SoftDevice，以及Mbed的BLE API，并与蓝牙技术联盟协作开发了定制的BLE profile。用户用C/C++语言编写的应用程序，可以通过Mbed在线编译器、Mbed CLI、GNU MCU Eclipse或Keli µVISION等开发工具，利用ARM编译器或GNU ARM工具链来进行编译，编译后的目标代码接着通过USB连接或手机app蓝牙连接而被刷写到设备中。

在micro:bit基金会网站上有侧重于教育的2个官方在线代码编辑器：

- Microsoft MakeCode，是JavaScript Blocks编辑器和浏览器内编译器，曾经称为Microsoft PXT编辑器，PXT（编程实验工具包）完全在用户浏览器中运行，它通过内置的ARM Thumb编译器生成目标代码，浏览器同时还装载了预编译的micro:bit运行时系统，从而与用户目标代码链接成最终目标代码，还可以在刷写入设备之前在内置的micro:bit模拟器中见到它的运行效果。
- MicroPython，是完整的Python 3语言实现，包含了Python标准库的一个小子集，带有音乐编程语言和语音合成器，本地文件系统，被推荐用于做进一步的编程实验。用户可以在web编辑器中写Python脚本，其源代码被附加于MicroPython实现固件的后面，把这个最终复合固件下载后刷写到设备中，MicroPython运行后将附随的源代码编译成字节码并在虚拟机中运行，由于内存限制在MicroPython内未启用nRF51的蓝牙协议栈。可以通过USB串行连接访问MicroPython REPL，从而可直接交互于Micro Bit的外设。MicroPython的编辑器还有给初学者在PC上用Mu，和在线blocks编辑器EduBlocks。

针对micro:bit的其他开发工具有：

- Espruino，是面向网络应用开发的JavaScript解释器固件，解释器有运行状态持久保存和复位机制，支持内联汇编语言，由于将micro:bit的内存大量用于了蓝牙功能，不提供ES6特征和高级库函数。可以通过USB串行连接，或通过在支持了Web Bluetooth的浏览器中运行Web IDE对它进行交互访问，IDE也有可选的blocks编辑器。
- Arduino nRF5，是针对基于Nordic半导体nRF5开发板的Arduino Core。
- Node.js库：node-bbc-microbit，从Node.js用BLE控制micro:bit；bbc-microbit-io，针对micro:bit的Johnny-Five（JavaScript机器人及IoT平台）IO插件。

除了micro:bit运行时系统所采用的Mbed OS 2，以及nRF51 SDK支持的CMSIS-RTOS RTX，可以在micro:bit上运行的嵌入式操作系统还有：Zephyr，Apache Mynewt，RIOT。

针对micro:bit的其他编程语言有：uLisp、Mecrisp Forth、Free Pascal、GNAT Ada、TinyGo、Rust、Swift等。其他交互语言有Scratch3.0、Dyalog APL、Simulink编码器支持包、Node-RED模块、App Inventor + IoT、BlockyTalkyBLE等。

## 历史

Micro Bit被设计用来鼓励儿童活跃的投入为计算机书写软件和建造新东西，而不是成为媒体的消费者。它被设计为并肩工作于其他系统，比如Raspberry Pi、Arduino，它也建造在BBC在计算机教育中的BBC Micro这项遗产之上。

### 合作伙伴

Micro Bit的开发汇集了众多伙伴与BBC一起工作：

- ARM控股 – 提供Mbed开发工具、固件和编译器服务。
- Nordic半导体 – 为这个设备提供目标MCU和BLE协议栈。
- NXP半导体 – 提供接口MCU、USB控制器和传感器。
- 蓝牙技术联盟 – 与兰卡斯特大学协作开发定制的Bluetooth LE profile。
- 兰卡斯特大学 – 开发这个设备的运行时系统，与蓝牙技术联盟协作开发定制的Bluetooth LE profile。
- 微软 – 贡献了自己在TypeScript等方面的软件专门知识。它在其TouchDevelop平台上为这个设备定制了专题项目，还开发了这个设备的教师训练材料。
- Python软件基金会 – 将MicroPython移植到这个设备，建立本机和基于web的初学者友好的Python代码编辑器，出品大量教育资源并为教师建立有组织的开发者领导的工场。
- Farnell element14 – 监督这个设备的制造。
- Technology Will Save Us – 设计这个设备的物理外观，编写出厂演示程序。
- 三星集团 – 开发Android app并帮助把设备连接到智能手机和平板电脑。
- ScienceScope – 开发iOS app并把这个设备发布到学校。
- 巴克莱银行 – 提供产品递送和外展活动。
- 惠康基金会 – 为教师和学校提供学习机会。
- STEMNET – 提供STEM大使来支持学校和教师并联系第三方比如Bloodhound SSC和Cisco。
- 思科系统 – 向STEMNET提供人员和资源来资助国家首展。
- Creative Digital Solutions – 开发教师材料，工场和外展活动。
- Code Club – 建立一系列引导9到11岁儿童的编码资源并通过志愿者递送运行编码俱乐部。
- Kitronik – 为BBC micro:bit生产并分发5500份e-textile kit给英国内的D&T教师。设计硬件比如Motor Driver board来允许BBC micro:bit控制设备比如电动机和伺服系统。
- Tangent Design – 建立BBC micro:bit品牌标识并开发web站点。

BBC研究发展部建立了原型设备和软件栈，在最初宣布中进了展示，在学校中测试了这项提议，并为合作伙伴后续建设提供了参考规定。

### Microbit教育基金会

在成功的于英国推出了micro:bit之后，BBC将BBC micro:bit的未来交付给新成立的非营利性Micro:bit教育基金会。从BBC到Micro:bit教育基金会的迁移首先是将官方网站从www.microbit.co.uk转移到了microbit.org。

## 制造

Premier Farnell负责管理BBC micro:bit的制造，监督各厂商进货所有部件并在各自的加工工厂生产micro:bit。

## 各地发展

### 香港

于2018年，香港教育城与资讯科技教育领袖协会（AiTLE）、香港大学专业进修学院（HKUSPACE）及 Micro:bit Alliance合办了十七场“Micro:bit 教师工作坊”，工作坊分五种程度授课，由Micro:bit的基础功能至进阶应用技巧皆有涵盖。部分内容被纳入香港中小学的资讯科技课程中。

## 书籍

- micro:bit IoT In C
- Networking with the micro:bit

## 外部链接

- http://microbit.org/
- https://github.com/bbcmicrobit/
- https://github.com/microbit-foundation
- https://github.com/carlosperate/awesome-microbit
- https://github.com/Microsoft/pxt-microbit
- The micro:bit runtime (developed by Lancaster University)
- Bitty Blue provides a collection of fun things to do with the micro:bit and Bluetooth. Available for Android and iOS.
- Bluetooth troubleshooting guide
- Reset the micro:bit to factory defaults