認識BBC微控制板Micro:bit

十月 23, 2017
Facebook
Twitter
該是時候來看看這個微控制板micro:bit了。它是一個令人印象深刻的微型裝置,來看看在這個小小的表面上裝載了哪些元件(尺寸4.5*5cm,只有信用卡的一半大小,由英國廣播公司BBC製造)。通常我向新使用者介紹這類微型裝置的時候,會繞著電路板,從順時針方向仔細檢視每一個元件,看來現在正是做這件事的好時機。我把micro:bit上有USB連接器和廠牌商標的一面稱為背面,有LED燈泡陣列和兩個按鈕的稱為正面(圖A和B)。
圖片

圖A micro:bit背面

圖片

圖B micro:bit正面

從背面開始

從micro:bit背面上端開始(12點鐘方向),有一個標準規格的micro USB連接埠(不是mini USB連接埠)。與電腦連線時,micro USB連接埠一邊供給電源給電路板,一邊負責從電腦傳輸資料。micro:bit電路板需要3.3V的電壓來運作。USB供電量是5V,所以當透過你的電腦供電時,需要透過穩壓器(regulator)把電壓降至micro:bit可以使用的範圍。
 
不過同時也記住一點,USB連接埠並不是唯一能供電或傳輸資料的工具。你可以用電池組來提供電路板所需的電源,也可以透過藍牙和搭載藍牙傳輸的裝置,如智慧型手機或筆記型電腦,來傳送程式碼到電路板上(也稱為複寫)(flashing)。如果micro:bit安裝的位置在難以接觸的地方,像是專題的盒子裡,或埋在一大堆電子裝置和線路裡,這就是個超級方便的功能;你只要距離板子夠近,就能將應用程式複寫到電路板上了。

LED

在USB連接埠旁邊、按鈕前方,是一個黃色的LED燈泡,而且直到把電路板跟電腦連線之前,你可能都不會注意到它的存在。這是一個狀態顯示燈,它的功能很簡單,就是讓使用者知道micro:bit電路板正在運作中,不論是讀取應用程式或是傳送資料時都會顯示。
 
而在USB連接埠和LED狀態顯示燈旁邊,是一個按鈕式瞬時接觸開關(momentary push button)做為重置開關使用。當micro:bit電路板上有程式正在執行,按下重置開關,就會讓整個程式回到剛開始執行時的狀態,就好像切斷電路板電源之後重新開機一樣。使用者無法修改重置開關的功能;它的編碼已經寫死了,只能執行重置的功能。如果你也常常使用Arduino電路板,那你應該對這個重置開關的設計和功能不陌生。當你的micro:bit電路板毫無反應時、或基於任何理由,只要你想重置程式、或是你想重置電路板,以改成其他更好的設定時,重置開關就很實用。

連線功能

在重置開關旁,便是另一個電源連接埠。這個電源連接埠有兩個腳位,如果你不透過USB連接埠供給電源給電路板,這個電源連接埠可以讓你連接外部電源。micro:bit電路板附贈一個電池電源組,用來裝兩個4號(AAA)電池;電池組上的莫仕(Molex)母接頭可接上電源連接埠的公接頭。
 
繼續沿著電路板照著順時針方向來看,你會在控制板邊緣往內一點的位置看到一個小小的積體電路(IC)(圖C)。這是USB控制器,用來讓中央處理器(CPU)與USB連接埠溝通數據資訊。這個晶片叫做ARM Cortex-M0+,不但能夠處理USB數據資料交換,還能將USB連接埠供給的5V電壓降至3.3V,以供micro:bit正常運作。不過如果你是用電池組來供電,這個IC晶片上的穩壓器功能就用不到了。
圖片

圖C USB微控制器

接下來輪到控制板底部、外表像鋼琴按鍵的零件。這個由25塊金屬片組合而成的「線條」是可以讓使用者使用的通用型輸入輸出腳位(GPIO)。如果你沒有直接插入連接器(edge connector)的話,要透過這個腳位來連接micro:bit會很困難,但這些腳位上分別標示了0、1、2、3V、以及接地線(GND)(寫在控制板的正面),用鱷魚夾或香蕉插(banana plug)就能輕鬆連接(圖D)。

圖片圖D 簡易連線示意圖

繼續繞著順時針方向來看,在金屬腳位上方左側是第一個內建感測器,叫做加速度計(accelerometer)。這個體積微小的黑色IC是飛思卡爾(Freescale)製造、型號MMA6852全方位三軸加速度計,透過I2C通訊協議與中央處理器交換數據。這個加速度計內含12位元分辨率,在1.56Hz到800Hz的頻率範圍內交換數據(根據你的需求和專題而定),是相當寬廣夠用的範圍。雖然這並不是四軸無人飛行器(其中一個例子)上搭載的專業型9軸慣性感測器(inertial measurement unit),但三軸感測器已經足以應付大多數簡單的micro:bit應用專題。當然隨著你的專題需求,你隨時可以選擇透過GPIO腳位與更強大的感測器連接,升級控制板功能。
 
位於加速度計旁邊的是另一個內建感測器,叫做羅盤或磁力計。與加速度計類似,這個IC同樣是由飛思卡爾製造、型號MAG3110三軸數位磁力計。它可以用來當作羅盤或金屬探測器,而且就像加速度計,它也是透過I2C匯流排(bus)來與中央處理器溝通。磁力計測量磁場後以80Hz的頻率輸出資料數據,並能偵測到0.1微特斯拉(microtesla)的磁場變化。

12C通訊協議

I2C匯流排(或念做I平方C、I-I-C)是內部整合電路的通稱,是由飛利浦半導體公司設計的通訊協議,於1982年發表。這是一個能夠包含多個主(master)、從(slave)訊號的通訊協議,能夠讓多個裝置在短距離內互相交換數據。I2C匯流排常見的應用包含微控制器、感測器(例如micro:bit上的感測器)、以及小型的嵌入式裝置。大部分單板微控制器,如樹莓派(Raspberry Pi)和各式各樣的感測器,從氣壓計、GPS模組、磁力計到溫度計以及其他各式裝置等等,都內建支援I2C通訊協議,而且I2C通訊協議到今天仍然是最容易使用、最基本的通訊協議之一,用以讓中央處理器與各種感測器和外部裝置溝通、交換數據。

處理器

​看完上述兩個感測器後,輪到了整塊控制板的核心和頭腦:中央處理器(圖E)。這個小小的黑色方塊是一個32位元的ARM Cortex M0處理器,擁有256KB的快閃記憶體和16KB記憶體,運作時脈16MHz。此外它具備藍牙功能,內建2.4GHz低功耗藍牙收發器。
圖片

圖E ARM中央處理器

所以這些功能和數據代表什麼意義呢?首先,這是一個32位元的中央處理器,因此運算效能並不像我們所熟悉的64位元中央處理器那樣強大。但對於微型電腦來說已經十分夠用了。256KB快閃記憶體代表的是沒接上電時資料儲存的地方;換句話說,當切斷micro:bit與個人電腦的連線時,快閃記憶體裡的資料仍然會被保存下來,有點像個人電腦和筆記型電腦上的硬碟。你的16進位檔案也是儲存在這裡,這也是為什麼每次打開micro:bit的電源時都會自動執行同一個驅動程式。儘管256KB看起來並不算什麼大容量的記憶體(例如大多數的JPEG圖片檔案都比256KB還大),但16進位驅動程式的檔案更小。一個256KB大小的16進位檔案已經是一支很龐大的程式了。
 
另一方面,16KB的隨機存取記憶體(RAM)上所儲存的資料在每次切斷裝置電源時就會立刻消失。這一批隨機存取記憶體就是micro:bit做一些運算時使用的區塊;micro:bit會把數據資料從寄存器(register)移動到RAM上,然後做一些該做的運算工作後,再把資料從RAM移出來。由於16KB並不是太大的記憶體容量,因此也限制了micro:bit的運算表現,不過micro:bit也不是設計來執行繁複的運算。與此相反,使用性能更強大的裝置,例如智慧型手機,來執行龐大的數據及資料運算,再用micro:bit來單純收集和顯示資料比較合理。記住這點將會很有幫助:micro:bit就像其它物聯網平臺裝置,是一個耗電量非常低的裝置,而運算效能越強大的中央處理器就會消耗更多的電力。更令人驚訝的是,ARM晶片的效能就跟它的耗電量一樣強大,最多需要0.03瓦的電量,或普通夜燈的100倍

低功耗藍牙天線

最後,終於要完成對micro:bit背面零件的介紹了,就是這個位在中央處理器上方,幾乎看不見的低功耗藍牙(Bluetooth Low-Energy,BLE)天線。如果你把micro:bit沿著光線照射的方向傾斜,就能看到內嵌於micro:bit頂端左側角落、像方塊狀波浪的圖案。根據micro:bit附帶的規格說明書,這個天線讓電路板能夠與距離100公尺以內的任何藍牙裝置連線。低功耗藍牙天線,又稱為藍牙智慧通訊協議(Bluetooth Smart protocol),能夠以每秒1到3兆位元(MB)的速度傳輸數據,同時消耗低於15毫安培的電量。這個功能不但能讓你在遠端就能用筆記型電腦或智慧型手機來複寫電路板上的程式碼,還能讓電路板傳送感測器的數據到其他藍牙裝置上,而不必擔心耗盡電池的電量。一顆鈕釦型電池就能讓低功耗藍牙運作時間長達一個禮拜、甚至一個月。

低功耗藍牙的連線範圍?

雖然micro:bit規格說明書聲稱藍牙連線的範圍最廣可達100公尺,我和編輯還是很懷疑實際的連線範圍到底有沒有這麼廣,所以我決定做一些非正式的測試。在下面兩個測試中,我用「搜尋我的手機」這個app讓我的手機與micro:bit透過藍牙配對。這個app會傳送一個簡單的指令到micro:bit電路板上,告訴你要按下左邊的(A)按鈕。當按下按鈕後,控制板會回傳藍牙訊號到手機,然後手機就會放出「嘿!我在這」的語音,直到你在手機上按下確認按鈕。第一個測試,我把手機和micro:bit配對後,在我家四處走動,看看直到手機不再發出聲響時我能走多遠。結果則是令人失望的,簡單來說:就在視線範圍內,距離大約26英呎(約8公尺),手機就失去訊號了。而當我走過轉角時,藍牙訊號馬上消失了,手機也與micro:bit斷線了。
 
在第二個測試,我把手機和micro:bit帶到家裡附近的足球場,在這邊我就不會被家裡的WiFi訊號、牆壁、金屬物品、以及其他可能的干擾訊號和電磁場等等。接下來與第一個測試同樣的步驟,我讓手機和micro:bit藍牙配對後,走動離開micro:bit直到手機失去藍牙連線訊號為止。結果呢?跟在室內的測試一樣令人失望。最遠能夠讓手機與micro:bit連線的距離一樣是26英呎。而一些小調整,像手機和micro:bit擺放的位置,看來好像也會影響測試結果;用某個方式抓取手機時會增加藍牙連線距離,而用另一種方式抓取micro:bit則會讓藍牙斷訊。經過測試了許多次嘗試後,我得到的結論就是藍牙傳輸的極限距離就是大約8公尺。
 
或許低功耗藍牙的表定規格只能在超級理想的實驗環境下達成,例如放在鋪滿墊子、外圍用法拉第籠(Faraday cage)包圍的房間。除此之外,藍牙天線的大小和形狀對訊號強弱會有決定性的影響,而micro:bit上的藍牙天線其實相當小。我在網路上搜尋到一些人實際測試到的藍牙連線距離甚至超過200公尺,但我仍無法重現或確認這些測試結果。實際情況是,看來只有你與micro:bit同時處在同一個房間時才能夠依靠藍牙來與micro:bit連線。當你之後要寫micro:bit程式時要記住上述藍牙連線的特性。

接著看正面

好了,讓我們回到控制板的正面,所有幕後動作發生的地方。讓我們看看控制板的正面有什麼東西(圖F)。
圖片

圖F 從正面看micro:bit

micro:bit的正面可以說是所有功能的出發點,但反而沒有太多新奇複雜的構造。在控制板正面的兩側各有一個瞬時接觸開關:A和B,使用者可以自訂各個開關要執行的程式。在兩個瞬時接觸開關中間,是一個以5×5陣列排列、貼焊於控制板表面的低功率LED燈泡,而且每一個燈泡都可以自訂發光模式。這個LED燈泡陣列可以用來顯示文字跑馬燈、圖案、指向某個方向的箭頭、以及幾乎任何你想得到、能用25顆LED燈泡陣列排列顯示的東西。
 
沿著控制板底部排列的,則是我們先前介紹過的GPIO,從正面你可以清楚看見,在最常用的腳位上已經標示了記號。最能夠完全發揮這些腳位功能的方法,就是去買一個直接插入式連接器擴充板(edge-connector breakout board),然後把micro:bit插進擴充板的插槽,正面朝上,如同圖G所示。圖中的擴充板上有兩排裸露的腳位,跟樹莓派控制板用的擴充板腳位非常類似,讓你可以使用排線(或許已經有一條在工具組裡)來連接。但是要小心,不要被這兩排腳位給誤導了;這兩排腳位是重疊的,也就是說擴充板上每一對相鄰的腳位都只會對應到micro:bit上同一支GPIO腳位。因此你不需要接上擴充板上所有的腳位來控制micro:bit的GPIO。只要接上擴充板的任一隻腳位就行了。
圖片

圖G micro:bit插上連接器擴充板

以上就是麻雀雖小五臟俱全的micro:bit簡介。Micro:bit是一個簡單的設備,BBC特別將其設計為容易上手、又足夠做許多有趣的事情。對想實驗的人和有興趣的人而言,相對於樹莓派,micro:bit是稍嫌陽春了一點,但正好符合與樹莓派系列產品完全不同取向的消費者
 
《從micro:bit開始動手吧》書籍網站,了解更多有關這個令人驚豔的小小裝置,在各大書店都買得到。
譯:葉家豪)
[原文]
Social media & sharing icons powered by UltimatelySocial