2020年6月3日 星期三

關於 BBC micro:bit 開發板

以前剛開始接觸 MicroPython 時便知道 BBC micro:bit 這塊開發板也可以使用 MicroPython 開發物聯網應用, 但上露天查詢價格都不便宜 (最低 475 元), 比起 NodeMCU 或 Wemos D1 mini 來說貴了許多, 不過最近仔細評估後發現, 若考慮到板上內建的感測器, 其實這個價格並不算貴, 而且內建的常用感測器減少了實驗時常見的接線不良問題, 可降低初學者摸索的挫折感, 非常適合中小學生的物聯網科學教育之用.

這塊板子是英國廣播公司 BBC 與 ARM 等公司合作設計的開源硬體開發板, 目的是要提升英國青少年的動手做科學的能力, 2016 年免費送出了 100 萬片給英國公立中小學.

https://microbit.org/ (官網首頁)
https://zh.wikipedia.org/wiki/Micro_Bit

BBC micro:bit 大小如信用卡, 正面正中央有 25 顆排成 5*5 矩陣的 LED, 內建的隱藏式光度感測器也是位於 LED 矩陣區域. 左右各有一個標示為 A 與 B 的使用者按鈕輸入, 正下方的銅板接點標示了 0, 1, 2 的三個數位/類比 GPIO 輸出入粗接點以及中間的細接點, 可以用鱷魚夾將粗接點引出 :


正面


Micro:bit 開發板的背面焊接了主要的零組件, 左上角的大晶片是 nRF51822 微處理器, 上方的條狀銅箔是舖在電路板上的 2.4 GHz 射頻天線 (藍芽與 Radio 通訊用), 正上方有一個用來供電與上傳韌體的 Micro USB 插槽, 其右方一個重置 (Reset) 按鈕, 以及一個 2.0 mm 的電池插槽母座, 正下方則是 GPIO 的銅箔接點 (或稱邊緣接點 edge connector, 俗稱金手指) :


背面


注意, 正反面的 GPIO 對應接點是相同的, 粗接點可用一般鱷魚夾引出, 細接點則否, 必須使用擴充槽 (breakout) 引出全部接點. 除了引出全部 GPIO 接點外, 擴充槽還有避免鱷魚夾刮傷 micro:bit 主板上銅箔的作用, 擴充板有許多種, 參考 :

現貨 micro:bit IO 擴展板 DFRobot 原廠
micro:bit專用 金手指轉接擴展板
MICRO:BIT開發板插槽
Micro:bit 擴展板 Breakout轉接板(直針)
T型黑色Micro:bit擴展板 (主板轉接麵包板Breakout)

也可以購買連接器自行焊接, 參考 :

《iCshop1》micro:bit 立式連接座 轉接板●368020101624●microbit 轉接座 連接器
《iCshop1》micro:bit 臥式連接座 轉接板●368020101625●microbit 轉接座 連接器
小巨人全球商店-熱銷MICRO:BIT開發板插槽 microbit主板立式插槽

BBC micro:bit 開發板包含兩顆處理器晶片, 主處理器為 Nordic 公司的超低功耗無線 nRF51 系列 SoC 晶片 nRF51822, 係基於 ARM Cortex-M0 架構所開發之 32 位元單核處理器, 內建 16KB RAM 與 256KB Flash 記憶體並以 16 MHz 時脈運行, 專門用於無線嵌入式系統與消費性電子產品, 兼具高效能 (與 ARM7 相當) 與低成本特性, 使用建議之電池組可工作達數月之久. 此外還支援 2.4GHz 低功率藍芽 (LBE) 無線通訊協定 (但在 MicroPython 環境因為受到記憶體限制沒有開啟, 僅無線模組 radio 可用). 參考 :

# microbit MB80-US
https://zh.wikipedia.org/wiki/NRF51

第二顆晶片為負責與電腦通訊之 USB 晶片NXP/Freescale KL26Z, 係基於 ARM Cortex-M0+ 架構之 48 MHz處理器, 支援 USB2.0 OTG, 提供與電腦透過 USB 介面傳輸資料之功能.

BBC micro:bit 內建如下感測器 (sensor) 與致動器 (actuator) :
  • 5*5 LED 矩陣 (致動器, 輸出)
  • 類比/數位 GPIO 0~2 (致動器 + 觸控板)
  • 溫度感測器 (內建於 CPU 內)
  • 光度感測器 (隱藏式設計, 位於 LED 矩陣區域)
  • 加速度感測器 (NXP/Freescale MMA8653)
  • 電子羅盤 (磁場/旋轉/方位感測器, NXP/Freescale MAG3110)
注意, GPIO 0~3 具有觸控輸入功能, 關於 micro:bit 的內建感測器參考 :

https://microbit.org/get-started/user-guide/features-in-depth/

Micro:bit 開發板有兩種供電方式 :

  • Micro USB 插槽 :
    可用筆電 USB 或 5V 輸出變壓器供電, 也可以用行動電源供電, 但因為 micro:bit 消耗電流很小, 很多大容量行動電源會在供電一會兒之後切斷輸出, 以及有些行動電源輸出電壓高於 5V 可能對 micro:bit 造成損傷, 官方不建議使用行動電源.
  • JST PH2.0 電池插槽 :
    可用兩節 1.5V AAA 電池組經由 JST PH2.0 插槽供電. 

BBC micro:bit 的開發語言有三種 :
  • Javascrip Block 
  • Javascript
  • MicroPython
Javascript Block 是以 Scratch 為基礎的積木式圖形化開發語言, 毋須撰寫程式碼, 只要依據控制邏輯將積木單元拖曳後加以堆積排列與調整參數即可. 由於 micro:bit 最初開發的初衷是為了讓小學生能以簡單的方式學習物聯網與程式設計, 因此大部分的 micro:bit 初學者教材是以 Javascript Block 為開發語言.

其次是使用 Javascript Editor 直接編寫 Javascript 程式碼來控制 micro:bit, 它提供了更豐富的功能, 例如可撰寫副程式或函數等. 其實 Javascript Editor 與 Javascript Blocks 基本上可說是文字版與圖形版的差異, 兩者是可互相切換的, 但部分功能只能單向, 亦即 Javascript Editor 有的 Javascript Block 不一定有; 反之則一定有. 不管是用 Javascript 或 Javascrip Block 編寫程式, 上傳
至 micro:bit 時都會被編譯成機器碼執行, 這是與一般瀏覽器中的 Javascript 以解譯器逐行執行不同之處.

第三種開發語言是 MicroPython, 這是 Python 3 在嵌入式設備上的再實作版 (re-implementation), 標準函式庫僅實作用得到的重要部分, 並根據所使用 CPU 新增特定模組. 使用 MicroPython 開發的好處是, 它具有 REPL 介面可與 Python 執行環境進行互動式操作, 就像在 PC 上使用 Python Shell 一樣. MicroPython 也有線上編輯器, 參考 :

https://python.microbit.org/v/2.0

以 MicroPython 控制 micro:bit 的教學文件參考 :

https://microbit-micropython.readthedocs.io/en/latest/
https://microbit.org/get-started/user-guide/python/
https://nkust.gitbook.io/micro-bit/shi-shi-yong-micropython

目前市面上以 MicroPython 為開發工具的書有如下幾本 :

BBC micro:bit程式設計入門:MicroPython快速上手指南 (這本市圖有)


Source : 博客來


Programming With MicroPython: Embedded Programming with Microcontrollers and Python


Source : 天瓏


Beginning BBC micro:bit: A Practical Introduction to micro:bit Development


Source : 天瓏


Getting Started With the micro:bit: Coding and Making With the BBC’s Open Development Board


Source : 博客來


如果使用圖形化介面開發 micro:bit 應用的話, 可參考下面這個整理得非常完整的網站 :

阿玉micro:bit研究區

作者黃文玉老師應該是小狐狸們小學時的電腦老師, 去年出版了一本 micro:bit 的新書 :

# 輕課程 用micro:bit學程式設計結合KAISE擴展板創意專題實作:使用Microsoft MakeCode


Source : 博客來


在眾多普受歡迎的物聯網開發板中, 來自英國的就有兩個 : 低階的 micro:bit 與高階 (具有 Linux 作業系統) 的 Raspberry Pi, 而處理器核心都來自 ARM, 也是一家英國公司, 英國人的新創能力值得敬佩. 與來自義大利的 8 位元 Arduino 比起來, 我覺得 32 位元 ARM 核心且內建多個重要感測器的 micro:bit 更適合作為青少年物聯網教學之用, 從圖形介面入手進階到 MicroPython 程式撰寫, 最後晉級到樹莓派, 都是 Python 系列. 

沒有留言 :