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