初體驗 BBC Micro:bit 微型電腦開發板
步驟與項目
初體驗 BBC Micro:bit 微型電腦開發板
/div>
從背面開始
從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晶片上的穩壓器功能就用不到了。
繼續繞著順時針方向來看,在金屬腳位上方左側是第一個內建感測器,叫做加速度計(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通訊協議
處理器
所以這些功能和數據代表什麼意義呢?首先,這是一個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規格說明書聲稱藍牙連線的範圍最廣可達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程式時要記住上述藍牙連線的特性。
接著看正面
micro:bit的正面可以說是所有功能的出發點,但反而沒有太多新奇複雜的構造。在控制板正面的兩側各有一個瞬時接觸開關:A和B,使用者可以自訂各個開關要執行的程式。在兩個瞬時接觸開關中間,是一個以5x5陣列排列、貼焊於控制板表面的低功率LED燈泡,而且每一個燈泡都可以自訂發光模式。這個LED燈泡陣列可以用來顯示文字跑馬燈、圖案、指向某個方向的箭頭、以及幾乎任何你想得到、能用25顆LED燈泡陣列排列顯示的東西。
沿著控制板底部排列的,則是我們先前介紹過的GPIO,從正面你可以清楚看見,在最常用的腳位上已經標示了記號。最能夠完全發揮這些腳位功能的方法,就是去買一個直接插入式連接器擴充板(edge-connector breakout board),然後把micro:bit插進擴充板的插槽,正面朝上,如同圖G所示。圖中的擴充板上有兩排裸露的腳位,跟樹莓派控制板用的擴充板腳位非常類似,讓你可以使用排線(或許已經有一條在工具組裡)來連接。但是要小心,不要被這兩排腳位給誤導了;這兩排腳位是重疊的,也就是說擴充板上每一對相鄰的腳位都只會對應到micro:bit上同一支GPIO腳位。因此你不需要接上擴充板上所有的腳位來控制micro:bit的GPIO。只要接上擴充板的任一隻腳位就行了。
以上就是麻雀雖小五臟俱全的micro:bit簡介。Micro:bit是一個簡單的設備,BBC特別將其設計為容易上手、又足夠做許多有趣的事情。對想實驗的人和有興趣的人而言,相對於樹莓派,micro:bit是稍嫌陽春了一點,但正好符合與樹莓派系列產品完全不同取向的消費者
到《從micro:bit開始動手吧》書籍網站,了解更多有關這個令人驚豔的小小裝置,在各大書店都買得到。
[原文]