傅騫 解博超
編者按:我認識北京師范大學的傅騫教授很多年了。都說相由心生,剛開始認識傅教授時,在他身上我既看到了學者的智慧,又看到了工程師的灑脫,果然過了沒多久,米思齊這個工具就問世了。中國人講“見賢思齊”,而米思齊的英文名稱又有混合的意思,因此,我妄加揣測米思齊應該是一個讓人們自由分享好的創意,提高所有人的創新效能感的工具。2016年的信息技術實驗欄目,將系統地從課程的角度介紹更多的像米思齊一樣的學習工具,讓我們一起“見賢思齊”吧。
隨著創客教育理念的不斷普及,以Arduino為基礎的創意電子類創客教育課程正逐步在中小學中推廣開來。然而,由于受到其本身技術門檻的限制,創意電子類課程的開設給廣大師生提出了巨大的挑戰(Arduino需要通過C/C++語言編程實現創意,這對低年齡段的學生來說幾乎是不可能的)。即使后面有Ardublock、mBlock等圖形化編程工具的輔助,也依然無法同時滿足師生在功能性和易用性方面的雙重要求。為此,筆者所在的團隊開發了一個新的Arduino圖形化編程系統,即米思齊(簡稱Mixly)圖形化編程系統。
Mixly的設計理念

Mixly作為一個國內出品的免費、開源的圖形化編程系統,需要依賴大量的用戶群體來維持軟件的生態和活力。為了更好地滿足用戶的各類需求,Mixly開發團隊在設計上遵循了以下理念。
1.易用性
中小學的機房管理員非常排斥軟件的安裝與升級工作,特別是很多機房都安裝了硬盤保護卡,需要安裝后才能使用的軟件會給管理員帶來很大的不便。為此,Mixly在設計上做到了完全綠色使用。用戶直接從網上下載Mixly軟件包,解壓后即可在Windows XP及以上版本的操作系統運行。軟件無需額外安裝瀏覽器,也不用安裝Java運行環境,大大方便了師生的使用。

2.簡單性
Mixly采用了Blockly圖形化編程引擎,使用圖形化的積木塊代替了復雜的文本操作,為學生的快速入門奠定了良好的基礎。另外,筆者的團隊使用以下方式幫助師生更好且快速地熟悉軟件:①用不同顏色的示意圖標代表不同類型的功能塊,方便用戶歸類區分。②在復合功能塊中提供默認選項,有效減少用戶的拖動次數。③在同一個界面整合軟件的所有功能。④提供參考教程及代碼示例。
3.功能性
當前,很多學校將組織或參與創客類比賽作為創客教育的一種途徑,而比賽的競技性對軟件的功能提出了更高的要求。因此,Mixly在功能的設計上力求和Arduino IDE的文本編程保持一致,目前最新發布的Mixly 0.96版已經實現了Arduino的所有官方功能(包括中斷處理),并加入了大量的第三方擴展庫功能,如紅外遙控、超聲波等,可以保證課程開設和各類創客比賽的雙重需求。
4.普適性
Mixly在設計上考慮了絕對的普適性。首先,對Arduino官方支持的所有開發板,Mixly都提供了完美的支持:Mixly會根據開發板的類型自動改變模塊中的管腳號、中斷號、模擬輸出管腳等;其次,對Arduino支持的第三方開發板,用戶只要把相應開發板的定義復制到Mixly中,依然可以得到支持。如國內大量的ESP8266開發板、各類用戶修改后的開發板等,從而保證了用戶在開發板選擇上的最大自由度。
5.延續性

圖形化編程系統的目標絕對不是替換原有的文本編程方式,而是希望學生通過圖形化編程更好更快地理解編程的原理和程序的思維,并為未來的文本編程打好基礎。Mixly的設計理念也是如此。在軟件的設計上加入了更多的可延續性內容,從而保護了用戶的學習成果。具體來說,包括引入變量類型、在模塊的設計上盡量保持和文本編程的一致、支持圖形編程和文本編程的對照等。
6.生態性
生態性是Mixly最重要的設計理念,也是它區別于其他Arduino圖形化編程的最重要特征。為了實現可持續發展,Mixly在設計上既允許廠商開發自己的特有模塊(當前已經支持DfRobot、StartLab、MakeBlock、Sense、Seeed、Lubot,用戶需要有JavaScript編程基礎才能制作這部分模塊),也允許用戶直接利用Mixly的圖形化編程功能生成通用模塊(如數碼管顯示、蜂鳴音播報等,用戶只需會使用Mixly即可制作這部分模塊)。以上兩類模塊均可通過“導入庫”功能導入Mixly系統,從而在Mixly軟件的普及中實現用戶自身的價值。
Mixly系統功能簡介
Mixly的主界面由左上的模塊選擇區、中上的程序構建區、右上的代碼程序區(可隱藏)、中部的系統功能區和下部的消息提示區構成(如圖1)。通過該界面,用戶可以完成程序的編寫、上傳、保存、代碼查看等全部工作。圖1所示的是“超聲波測距儀”的軟件實現代碼。
為了讓用戶更好地使用Mixly進行創意電子教學,筆者將對Mixly的主要功能做一個簡單的介紹。
當前Mixly 0.96支持的圖形化代碼編寫模塊有:①程序流程控制:順序執行、條件執行、循環執行、初始化操作、數學運算、文本運算、變量使用、類型轉換、邏輯操作、數組使用、函數定義、函數使用。②Arduino基本操作:數字輸入、數字輸出、模擬輸入、模擬輸出、中斷控制、脈沖長度、移位輸出、時間延遲、時間獲取。③Arduino擴展操作:聲音播放、舵機控制、液晶顯示、超聲波使用、DHT11使用、串口通訊、紅外通訊、I2C通訊、EEPROM讀寫、SD卡寫入。
當前Mixly 0.96支持的程序處理功能有:①程序編寫:用戶既可以通過圖形化代碼編寫程序,也可以直接通過文本編寫程序,并具備相對對照功能。②程序上載:用戶可以直接通過Mixly完成程序的編譯上載工作。③代碼保存:用戶可以保存、另存和導入圖形化代碼。④界面縮放:用戶可以隨意控制界面縮放,方便平板用戶使用。⑤模塊管理:用戶可以把函數導出成模塊,從而方便其他用戶導入使用,同時也支持導入廠商開發的擴展庫,另外還支持用戶刪除、重命名用戶已經導入的模塊。⑥串口監視:串口通訊工具,方便用戶和Arduino的串口實現交互操作。
Mixly的應用模式
創客教育的核心不是重復知識的復制或復雜功能的底層實現,而是激發學生的創新并享受分享所帶來的快樂?;贛ixly的創意電子課程也要遵循這樣的理念,所以筆者從Mixly的技術特點出發,將Mixly的應用模式分為以下幾類。
1.模仿延展類
該模式主要用于Mixly初學者學習創意電子的基礎知識,其具體步驟為:①由教師創設情境,并提出本次課(活動)的具體任務。②啟發學生思考,得出實現本任務的基本思路并鼓勵學生嘗試實現。③教師給出參考實現,學生基于教師的代碼模仿完成。④教師給出擴展任務方向,引導學生修改原有的代碼實現。
下面以《兩只老虎》為例描述這一過程。本課的目標是讓學生學會使用蜂鳴器播放簡單的音樂。首先,教師需要講解基本樂理知識及Mixly中聲音的播放方法,然后引導學生思考并鼓勵學生嘗試實現。在實際教學中,學生最初的實現大多比較幼稚。教師在給出合適的鼓勵后再給出如圖2所示的實現方式,并引導學生進行模仿。模仿成功后,教師需要講解實現的基本原理并給出延伸任務,要求學生設計更復雜的音樂。事實上,學生只需簡單地修改數組就可以播放出不同的音樂。
2.創意整合類
該模式主要用于具有一定Mixly基礎的學生針對某一技術的創意整合應用,其具體步驟為:①由教師創設情境,并提出一個特定的功能需求。②啟發學生思考,得出實現功能的基本思路。③教師給出功能的具體實現模塊,學生導入并體驗。④激發學生創新,結合本模塊和先前知識給出創意應用。
下面以《語音溫度計》為例描述這一過程。本課的目標是實現低成本的人機交互。首先,教師拋出問題:如何才能讓用戶知道Arduino中的結果數據?學生一般會給出各種各樣的答案,教師在給出合理的正向反饋后分析各種答案的可行性,并引導學生提出通過蜂鳴器播報數據的方案。在此基礎上,給出相應的擴展庫讓學生嘗試使用。然后,教師需要激發學生思考如何利用該庫完成創新應用。上頁圖3給出了一個語音溫度計的Mixly實現代碼(LM35和A0相連,蜂鳴器和10號管腳相連),上頁圖4則是語音播報庫的具體實現代碼。
3.協同合作類
該模式主要用于Mixly專業學習者協同完成綜合性任務,其具體步驟為:①學生以小組為單位,通過協商得出要做的綜合任務目標。②教師在聽取學生的匯報后,給出項目的可行性評估及實現建議。③學生在教師的幫助下完成基于模塊的任務分工并實現最初的設計。④小組匯總程序、進行調試,并完成最終成果的展示。
下面筆者以在中學講授“創意電子”課程的一個小組綜合項目為例,描述這一過程。本課的目標是使學生綜合運用元件和所學知識開發出一個創意作品。此前,教師應講解在復雜的程序設計中代碼模塊化的意義,并給出一些具體的例子。在此基礎上,學生自愿結為兩人小組,提出創意。此處僅以其中一組學生設計并實現的溫控報警散熱器為例,描述后續過程。小組成員提出,使用溫度傳感器、蜂鳴器、LED燈、數碼管等元件制作一個具有顯示溫度和報警功能的散熱器。學生描述功能并進一步對其進行分解,除了使用到教師提供的一位共陽數碼管庫外,還構建了呈現彩色燈(colorRGB)、電扇開關控制(fan)、聲光報警(ring)、獲取溫度(getTem)四個函數。
學生在開發過程中靈活地使用了Mixly的導入/導出庫功能:一位學生負責物理連接和四個子函數的編寫并使用“導出庫”功能將其導出成庫文件,另一位學生負責基于功能描述設計整體邏輯并在導入該文件后完成主函數的編寫。上頁圖5、圖6分別是該作品的庫文件代碼和主程序代碼,圖7是該作品的實物圖。
總結與展望
Mixly作為一個新的面向Arduino開發的圖形化編程軟件,在較短的時間內得到了大量用戶的認可與好評,其根源來自一線教師給出的積極指導和建議。筆者所在的團隊必將不斷完善Mixly的功能,為中國的創客教育貢獻一份力量。
編后:2015年,本刊刊發過一線教師介紹Mixly的文章,此次真正接觸到制作團隊,才發現Mixly的設計及應用遠遠要超出我們的想象,值得一試!
作者簡介:傅騫,副教授,博士,研究方向為物聯網技術及教育應用、創客教育支持生態建設。
基金項目:本文得到北京市教育科學“十二五”規劃2015年度課題“面向北京市中小學創客教育的教學體系研究——以創意電子教育為例”(項目編號:CJA15234)資助。