Micro:bit

**Micro Bit**（也叫做 **BBC Micro Bit**，或風格化為 **micro:bit**）是基於 ARM 架構的單板電腦，由英國廣播公司（BBC）設計，用於英國的電腦教育。

電路板大小為 4cm×5cm，擁有 1 個 ARM Cortex-M0 處理器，內建加速度感測器和磁力感測器，通訊介面包括藍牙和 USB，可透過網頁編程，直接把程式匯入。顯示器由 25 個 (5\*5) 紅色 LED 組成，可以顯示單色圖案或動畫。2 個可程式化按鈕，可以用 USB 或者外部電池包來供電。裝置輸入和輸出為環孔連接器和邊緣連接器。

## 硬體

裝置大小可描述為信用卡的一半大小，首發的最終製造產品，實測為 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，它也建造在 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。

## Microbit 在香港

Micro:bit 已被廣泛利用到香港中小學的資訊科技課程中，亦被視爲是正式課程裡的一環。

## 參見

* Arduino
* Raspberry Pi
* BBC Micro

## 書籍

* micro:bit IoT In C （頁面存檔備份，存於網際網路檔案館）
* Networking with the micro:bit （頁面存檔備份，存於網際網路檔案館）

## 參照

## 外部連結

* 官方網站
* GitHub 上的 BBC micro:bit repository
* GitHub 上的 micro:bit Educational Foundation repository
* GitHub 上的 Awesome micro:bit － A curated list of BBC micro:bit resources
* GitHub 上的 micro:bit target for PXT repository
* 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 （頁面存檔備份，存於網際網路檔案館）