王 娟,胡來林
(溫州大學 教師教育學院,浙江 溫州 325035)
美國2007年發布的《創新美國:擬定科學、技術、工程與數學議程》共同綱領中指出:當今世界只有具有STEM素養的人才才能在知識經濟時代的激烈競爭中贏得勝利,STEM素養是指個體在科學、技術、工程和數學領域及其交叉領域運用個人關于世界運行方式的知識的能力。[1]機器人是一門涉及運動學和動力學、系統結構、傳感技術、控制技術等多領域的交叉學科,其教育實施正是促使學生整合科學、技術、數學領域的知識,以工程標準化的思想進行綜合實踐的過程,具有較強的教育價值。
我國教育部從2003年起把中小學機器人比賽納入全國中小學電腦制作活動中,2003年頒布的普通高中新課程標準又將“人工智能基礎”及“簡易機器人制作”列入信息技術課程的選修內容。[2]在制度保障及技術發展背景下,智能機器人教育在全國中小學獲得迅速發展,但同時也暴露出一些偏差。諸多學者從教育目標、教學形式、師資力量、設備資源等角度分析了制約中小學機器人教育發展的因素,[3][4]但筆者認為,目前最主要的矛盾之一集中于機器人設備內核技術的開源程度上。Arduino這一開源硬件機器人的出現打破了上述矛盾,其獨特的優勢為中小學機器人教育打開了新的思路。
Arduino源自意大利的一個開放源代碼的硬件項目平臺,該平臺包括一塊具備簡單I/O功能的電路板以及一套程序開發環境軟件,從Arduino官網(http://arduino.cc)可免費下載其硬件電路設計圖及程序開發平臺軟件。使用者可以根據電路圖自己焊接Arduino主板,也可通過淘寶等網絡途徑購買成品,價格便宜。其他的擴展板、傳感器等,也可通過網絡根據自身需要購置,且價格低廉。
Arduino不僅能通過各種各樣的傳感器來感知環境,通過控制燈光、馬達和其他的裝置來反饋環境信息,實現簡易機器人設計,還可以在Flash、Processing等一些軟件之間進行通信,實現互動媒體設計。豐富且易擴展性的特征,使機器人成為學生參與性學習的優秀平臺。
Arduino文本式的編程環境不利于中小學生學習,但 Arduino愛好者們已開發出ArduBlock、Miniblog、S4A等圖形化編程軟件。這些圖形化編程環境以圖形化積木搭建的方式編程,加強了編程的可視化和交互性,降低了編程門檻,即使完全沒有編程經驗的人也可以嘗試給Arduino控制器編寫程序,符合中小學生的學習習慣及認知水平要求。
Arduino豐富的功能及其開源思想使其愛好者遍布全球,由此也產生了諸多Arduino學習論壇或分享社區。初學者可以通過這些網絡學習資源獲得豐富且持久的技術支持,這一特性與現有機器人制造廠商封閉核心技術的現象形成了鮮明對比。
為了適應不同用戶的需求,Arduino有多種型號,[5]其中Arduino Duemilanove是一款最基本的Arduino產品,后續的很多產品都是在這款產品的基礎上發展起來的。如Arduino Nano去掉了直流電源接口,采用Mini-B標準的USB接口連接電腦,是一款縮小版的Arduino Duemilanove;Arduino BT則包含了一個Bluegiga WT11藍牙模塊,支持藍牙無線串行通信;LilyPad Arduino則是一款專用于服裝設計領域,嘗試在服飾和人之間產生更多藝術互動的Arduino產品。目前Arduino主推的產品是Arduino Uno,它與之前的Arduino最大的不同在于采用ATmega8U2芯片進行USB到串行數據的轉換。使用者可以根據對設計功能的不同需求選擇相應的Arduino產品。
不同型號的Arduino其硬件資源也有所差異,但基礎配置包括以下部分:
(1)控制器。控制器是Arduino產品的核心部分,以Arduino Duemilanove為基礎的多數產品均采用AT-mega168或ATmega328單片機;資源更為豐富的Arduino Mega2560則采用ATmega2560作為控制器,它具有更大的程序存儲容量,可接入的I/O數也更多。
(2)輸入輸出接口。根據控制器的性能差異,不同Arduino產品的輸入輸出接口數量也有所不同。以Arduino Duemilanove為例,包括14個數字I/O接口和6個模擬I/O接口,其中數字I/O接口中有6個提供PWM輸出,PWM是利用數字輸出控制模擬電路的一種有效技術。
(3)電腦連接或程序燒寫接口。根據使用者對Arduino產品尺寸要求的差異,Arduino或通過獨立USB接口支持程序燒寫,或通過由USB/RS232轉換成TTL的適配器解決該問題,而對Arduino BT而言,其內置的藍牙模塊即可支持通過藍牙適配器進行程序燒寫。
Arduino的資源在其集成板上均有明確標注,方便使用者。
Aruduino的開發環境是以AVR-GCC和其他一些開源軟件為基礎,采用Java編寫的。軟件無需安裝,下載完成解壓縮后就可以直接打開使用了。開發環境的主界面如圖1所示。
在應用程序編寫之前,需要進行以下三項內容的設置:
(1)安裝驅動程序
首次將Arduino板通過USB連接線連接到電腦上,會出現Found New Hardware Wizard(發現新硬件向導)的提示,使用者可根據提示完成硬件驅動程序的安裝。驅動程序可根據Arduino板的型號在網絡檢索免費下載。[6]
(2)選擇 Arduino板的型號

圖1 Arduino開發環境的主界面
Arduino軟件開發環境可支持各種不同型號的Arduino主板,因此在正式開發前,需要告知軟件環境所使用的硬件型號。具體方法是選中主界面菜單欄中“Tools→Board”,然后選擇所連接的板型。
(3)設置串口號
Arduino成功連接電腦之后,設備管理器中會顯示新串口連接,記錄串口號并在軟件環境中選定該串口。具體方法是選中主界面菜單欄中 “Tools→Serial Port”,然后選擇新硬件Arduino板所接入的串口號。
上海新車間創客空間的核心成員李大維博士的團隊開發的圖形化編程插件ArduBlock,目前已經得到Arduino官方支持,其界面友好,操作簡單,不用學習C語言,通過拼圖形式就可以完成Arduino的編程,[6]為Arduino進入中小學課堂奠定了基礎。圖2所示即為該編程環境界面。

圖2 ArduBlock編程界面
從網絡下載ArduBlock插件后,只需將該jar文件拷貝至Arduino官方編程環境軟件包所在文件夾中的tools子文件夾里面即可。拷貝成功后再次打開官方編程環境,可發現菜單欄tools選項中新增了ArduBlock選項,單擊便可打開前文所述的ArduBlock編程界面,如圖2所示。
除了ArduBlock之外,還可有其它前文所介紹的圖形化編程插件。
Arduino機器人實例的開發是Arduino平臺下機器人教育課程研究、教學研究等的基礎和載體。其開發流程至少包括7個步驟,如圖3所示。
需要說明的是,在設計功能目標時,要以為學生創造感性直觀的學習體驗為原則,盡可能地將生活中隨處可見的技術使用在實例中呈現出來,如利用觸摸傳感器及180度舵機模擬小區出入口的門禁桿升降、利用旋鈕開關控制霓虹燈顯示等等。此外,實例的設計也應具有擴展性,即學生能在該實例的基礎上通過增加元器件的數量或增加其他類型的輸入輸出器件,實現更為綜合且實用的功能實驗。

圖3 Arduino機器人開發流程
筆者選用Arduino Duemilanove為核心主板,以ArduBlock作為圖形化開發環境進行實例開發。以下給出“旋鈕LED燈系列——霓虹LED”的開發實例。
(1)功能目標
通過調節旋鈕開關 (值從0變化至1023),控制3個LED燈同時開啟并有明暗變化。具體紅燈由暗變亮、再由亮變暗,而在此過程中黃燈由亮變暗之后,藍燈由暗變亮,可實現相應霓虹效果。
(2)器件列表
根據功能目標,確定選用表1所示的硬件器件。

表 選用器件列表
(3)硬件連接
①將主板、傳感器擴展板依次插好;②將LED模塊(紅、黃、藍)分別插入傳感器擴展版的 11、9、7 端口;③將旋鈕開關插入傳感器擴展板的A3端口。
(4)軟件環境設置
在Arduino官方軟件開發環境中,通過tools菜單項選定Board為 “Arduino Duemilanove or Nano w/AT-mega328”,Serial Port為“COM3”。
(5)元件特征值測試
通過在串口中輸出旋鈕開關所在A3口的數值,可知旋鈕開關在調節過程中,其值在0~1023范圍內變化。據此,可通過映射函數將0~1023范圍的值映射到0~255范圍內,以控制LED燈的明暗度變化。
(6)ArduBlock 程序編寫
圖4為在ArduBlock開發環境中的完整“旋鈕霓虹燈”實例程序。

圖4 旋鈕霓虹燈實例ArduBlock程序
(7)Arduino 代碼調試
將ArduBlock程序下載至Arduino進行程序編譯及調試。
Arduino的開源性及功能可擴展性決定了它在機器人教育領域內的高性價比,圖形化編程插件符合中小學階段學生的認知習慣及水平,豐富的Arduino論壇資源為教育過程提供了持久的技術和創意保障,這些都成為Arduino機器人教育得以推廣的有力條件。隨著研究的不斷深入,更多的教師將會投身到Arduino機器人教育的實踐當中,而有關課程體系、教學活動等的研究也必將日趨完善。
[1]趙中建.為了創新而教育[N].中國教育報,2012-6-15.
[2]張國民,張劍平.我國基礎教育中機器人教育的現狀與對策研究[J].現代教育技術,2008(5):92-94.
[3]王榮良.機器人教育對學生工程意識培養的意義與作用[J].新課程研究·基礎教育,2009(1):99-100.
[4]曾祥潘.步入開源硬件智能機器人教育時代[J].中小學信息技術教育,2012(1).
[5]程晨.Arduino開發實戰指南[M].北京:機械工業出版社,2012.
[6]宜昌城老張.新車間Arduino圖形化編程軟件ArduBlock的介紹[EB/OL]http://eefocus.com/zhang700309/blog/12-02/237994_76dea.html.