傅騫 解博超
編者按:我認(rèn)識(shí)北京師范大學(xué)的傅騫教授很多年了。都說相由心生,剛開始認(rèn)識(shí)傅教授時(shí),在他身上我既看到了學(xué)者的智慧,又看到了工程師的灑脫,果然過了沒多久,米思齊這個(gè)工具就問世了。中國(guó)人講“見賢思齊”,而米思齊的英文名稱又有混合的意思,因此,我妄加揣測(cè)米思齊應(yīng)該是一個(gè)讓人們自由分享好的創(chuàng)意,提高所有人的創(chuàng)新效能感的工具。2016年的信息技術(shù)實(shí)驗(yàn)欄目,將系統(tǒng)地從課程的角度介紹更多的像米思齊一樣的學(xué)習(xí)工具,讓我們一起“見賢思齊”吧。
隨著創(chuàng)客教育理念的不斷普及,以Arduino為基礎(chǔ)的創(chuàng)意電子類創(chuàng)客教育課程正逐步在中小學(xué)中推廣開來。然而,由于受到其本身技術(shù)門檻的限制,創(chuàng)意電子類課程的開設(shè)給廣大師生提出了巨大的挑戰(zhàn)(Arduino需要通過C/C++語言編程實(shí)現(xiàn)創(chuàng)意,這對(duì)低年齡段的學(xué)生來說幾乎是不可能的)。即使后面有Ardublock、mBlock等圖形化編程工具的輔助,也依然無法同時(shí)滿足師生在功能性和易用性方面的雙重要求。為此,筆者所在的團(tuán)隊(duì)開發(fā)了一個(gè)新的Arduino圖形化編程系統(tǒng),即米思齊(簡(jiǎn)稱Mixly)圖形化編程系統(tǒng)。
Mixly的設(shè)計(jì)理念
Mixly作為一個(gè)國(guó)內(nèi)出品的免費(fèi)、開源的圖形化編程系統(tǒng),需要依賴大量的用戶群體來維持軟件的生態(tài)和活力。為了更好地滿足用戶的各類需求,Mixly開發(fā)團(tuán)隊(duì)在設(shè)計(jì)上遵循了以下理念。
1.易用性
中小學(xué)的機(jī)房管理員非常排斥軟件的安裝與升級(jí)工作,特別是很多機(jī)房都安裝了硬盤保護(hù)卡,需要安裝后才能使用的軟件會(huì)給管理員帶來很大的不便。為此,Mixly在設(shè)計(jì)上做到了完全綠色使用。用戶直接從網(wǎng)上下載Mixly軟件包,解壓后即可在Windows XP及以上版本的操作系統(tǒng)運(yùn)行。軟件無需額外安裝瀏覽器,也不用安裝Java運(yùn)行環(huán)境,大大方便了師生的使用。
2.簡(jiǎn)單性
Mixly采用了Blockly圖形化編程引擎,使用圖形化的積木塊代替了復(fù)雜的文本操作,為學(xué)生的快速入門奠定了良好的基礎(chǔ)。另外,筆者的團(tuán)隊(duì)使用以下方式幫助師生更好且快速地熟悉軟件:①用不同顏色的示意圖標(biāo)代表不同類型的功能塊,方便用戶歸類區(qū)分。②在復(fù)合功能塊中提供默認(rèn)選項(xiàng),有效減少用戶的拖動(dòng)次數(shù)。③在同一個(gè)界面整合軟件的所有功能。④提供參考教程及代碼示例。
3.功能性
當(dāng)前,很多學(xué)校將組織或參與創(chuàng)客類比賽作為創(chuàng)客教育的一種途徑,而比賽的競(jìng)技性對(duì)軟件的功能提出了更高的要求。因此,Mixly在功能的設(shè)計(jì)上力求和Arduino IDE的文本編程保持一致,目前最新發(fā)布的Mixly 0.96版已經(jīng)實(shí)現(xiàn)了Arduino的所有官方功能(包括中斷處理),并加入了大量的第三方擴(kuò)展庫(kù)功能,如紅外遙控、超聲波等,可以保證課程開設(shè)和各類創(chuàng)客比賽的雙重需求。
4.普適性
Mixly在設(shè)計(jì)上考慮了絕對(duì)的普適性。首先,對(duì)Arduino官方支持的所有開發(fā)板,Mixly都提供了完美的支持:Mixly會(huì)根據(jù)開發(fā)板的類型自動(dòng)改變模塊中的管腳號(hào)、中斷號(hào)、模擬輸出管腳等;其次,對(duì)Arduino支持的第三方開發(fā)板,用戶只要把相應(yīng)開發(fā)板的定義復(fù)制到Mixly中,依然可以得到支持。如國(guó)內(nèi)大量的ESP8266開發(fā)板、各類用戶修改后的開發(fā)板等,從而保證了用戶在開發(fā)板選擇上的最大自由度。
5.延續(xù)性
圖形化編程系統(tǒng)的目標(biāo)絕對(duì)不是替換原有的文本編程方式,而是希望學(xué)生通過圖形化編程更好更快地理解編程的原理和程序的思維,并為未來的文本編程打好基礎(chǔ)。Mixly的設(shè)計(jì)理念也是如此。在軟件的設(shè)計(jì)上加入了更多的可延續(xù)性內(nèi)容,從而保護(hù)了用戶的學(xué)習(xí)成果。具體來說,包括引入變量類型、在模塊的設(shè)計(jì)上盡量保持和文本編程的一致、支持圖形編程和文本編程的對(duì)照等。
6.生態(tài)性
生態(tài)性是Mixly最重要的設(shè)計(jì)理念,也是它區(qū)別于其他Arduino圖形化編程的最重要特征。為了實(shí)現(xiàn)可持續(xù)發(fā)展,Mixly在設(shè)計(jì)上既允許廠商開發(fā)自己的特有模塊(當(dāng)前已經(jīng)支持DfRobot、StartLab、MakeBlock、Sense、Seeed、Lubot,用戶需要有JavaScript編程基礎(chǔ)才能制作這部分模塊),也允許用戶直接利用Mixly的圖形化編程功能生成通用模塊(如數(shù)碼管顯示、蜂鳴音播報(bào)等,用戶只需會(huì)使用Mixly即可制作這部分模塊)。以上兩類模塊均可通過“導(dǎo)入庫(kù)”功能導(dǎo)入Mixly系統(tǒng),從而在Mixly軟件的普及中實(shí)現(xiàn)用戶自身的價(jià)值。
Mixly系統(tǒng)功能簡(jiǎn)介
Mixly的主界面由左上的模塊選擇區(qū)、中上的程序構(gòu)建區(qū)、右上的代碼程序區(qū)(可隱藏)、中部的系統(tǒng)功能區(qū)和下部的消息提示區(qū)構(gòu)成(如圖1)。通過該界面,用戶可以完成程序的編寫、上傳、保存、代碼查看等全部工作。圖1所示的是“超聲波測(cè)距儀”的軟件實(shí)現(xiàn)代碼。
為了讓用戶更好地使用Mixly進(jìn)行創(chuàng)意電子教學(xué),筆者將對(duì)Mixly的主要功能做一個(gè)簡(jiǎn)單的介紹。
當(dāng)前Mixly 0.96支持的圖形化代碼編寫模塊有:①程序流程控制:順序執(zhí)行、條件執(zhí)行、循環(huán)執(zhí)行、初始化操作、數(shù)學(xué)運(yùn)算、文本運(yùn)算、變量使用、類型轉(zhuǎn)換、邏輯操作、數(shù)組使用、函數(shù)定義、函數(shù)使用。②Arduino基本操作:數(shù)字輸入、數(shù)字輸出、模擬輸入、模擬輸出、中斷控制、脈沖長(zhǎng)度、移位輸出、時(shí)間延遲、時(shí)間獲取。③Arduino擴(kuò)展操作:聲音播放、舵機(jī)控制、液晶顯示、超聲波使用、DHT11使用、串口通訊、紅外通訊、I2C通訊、EEPROM讀寫、SD卡寫入。
當(dāng)前Mixly 0.96支持的程序處理功能有:①程序編寫:用戶既可以通過圖形化代碼編寫程序,也可以直接通過文本編寫程序,并具備相對(duì)對(duì)照功能。②程序上載:用戶可以直接通過Mixly完成程序的編譯上載工作。③代碼保存:用戶可以保存、另存和導(dǎo)入圖形化代碼。④界面縮放:用戶可以隨意控制界面縮放,方便平板用戶使用。⑤模塊管理:用戶可以把函數(shù)導(dǎo)出成模塊,從而方便其他用戶導(dǎo)入使用,同時(shí)也支持導(dǎo)入廠商開發(fā)的擴(kuò)展庫(kù),另外還支持用戶刪除、重命名用戶已經(jīng)導(dǎo)入的模塊。⑥串口監(jiān)視:串口通訊工具,方便用戶和Arduino的串口實(shí)現(xiàn)交互操作。
Mixly的應(yīng)用模式
創(chuàng)客教育的核心不是重復(fù)知識(shí)的復(fù)制或復(fù)雜功能的底層實(shí)現(xiàn),而是激發(fā)學(xué)生的創(chuàng)新并享受分享所帶來的快樂?;贛ixly的創(chuàng)意電子課程也要遵循這樣的理念,所以筆者從Mixly的技術(shù)特點(diǎn)出發(fā),將Mixly的應(yīng)用模式分為以下幾類。
1.模仿延展類
該模式主要用于Mixly初學(xué)者學(xué)習(xí)創(chuàng)意電子的基礎(chǔ)知識(shí),其具體步驟為:①由教師創(chuàng)設(shè)情境,并提出本次課(活動(dòng))的具體任務(wù)。②啟發(fā)學(xué)生思考,得出實(shí)現(xiàn)本任務(wù)的基本思路并鼓勵(lì)學(xué)生嘗試實(shí)現(xiàn)。③教師給出參考實(shí)現(xiàn),學(xué)生基于教師的代碼模仿完成。④教師給出擴(kuò)展任務(wù)方向,引導(dǎo)學(xué)生修改原有的代碼實(shí)現(xiàn)。
下面以《兩只老虎》為例描述這一過程。本課的目標(biāo)是讓學(xué)生學(xué)會(huì)使用蜂鳴器播放簡(jiǎn)單的音樂。首先,教師需要講解基本樂理知識(shí)及Mixly中聲音的播放方法,然后引導(dǎo)學(xué)生思考并鼓勵(lì)學(xué)生嘗試實(shí)現(xiàn)。在實(shí)際教學(xué)中,學(xué)生最初的實(shí)現(xiàn)大多比較幼稚。教師在給出合適的鼓勵(lì)后再給出如圖2所示的實(shí)現(xiàn)方式,并引導(dǎo)學(xué)生進(jìn)行模仿。模仿成功后,教師需要講解實(shí)現(xiàn)的基本原理并給出延伸任務(wù),要求學(xué)生設(shè)計(jì)更復(fù)雜的音樂。事實(shí)上,學(xué)生只需簡(jiǎn)單地修改數(shù)組就可以播放出不同的音樂。
2.創(chuàng)意整合類
該模式主要用于具有一定Mixly基礎(chǔ)的學(xué)生針對(duì)某一技術(shù)的創(chuàng)意整合應(yīng)用,其具體步驟為:①由教師創(chuàng)設(shè)情境,并提出一個(gè)特定的功能需求。②啟發(fā)學(xué)生思考,得出實(shí)現(xiàn)功能的基本思路。③教師給出功能的具體實(shí)現(xiàn)模塊,學(xué)生導(dǎo)入并體驗(yàn)。④激發(fā)學(xué)生創(chuàng)新,結(jié)合本模塊和先前知識(shí)給出創(chuàng)意應(yīng)用。
下面以《語音溫度計(jì)》為例描述這一過程。本課的目標(biāo)是實(shí)現(xiàn)低成本的人機(jī)交互。首先,教師拋出問題:如何才能讓用戶知道Arduino中的結(jié)果數(shù)據(jù)?學(xué)生一般會(huì)給出各種各樣的答案,教師在給出合理的正向反饋后分析各種答案的可行性,并引導(dǎo)學(xué)生提出通過蜂鳴器播報(bào)數(shù)據(jù)的方案。在此基礎(chǔ)上,給出相應(yīng)的擴(kuò)展庫(kù)讓學(xué)生嘗試使用。然后,教師需要激發(fā)學(xué)生思考如何利用該庫(kù)完成創(chuàng)新應(yīng)用。上頁(yè)圖3給出了一個(gè)語音溫度計(jì)的Mixly實(shí)現(xiàn)代碼(LM35和A0相連,蜂鳴器和10號(hào)管腳相連),上頁(yè)圖4則是語音播報(bào)庫(kù)的具體實(shí)現(xiàn)代碼。
3.協(xié)同合作類
該模式主要用于Mixly專業(yè)學(xué)習(xí)者協(xié)同完成綜合性任務(wù),其具體步驟為:①學(xué)生以小組為單位,通過協(xié)商得出要做的綜合任務(wù)目標(biāo)。②教師在聽取學(xué)生的匯報(bào)后,給出項(xiàng)目的可行性評(píng)估及實(shí)現(xiàn)建議。③學(xué)生在教師的幫助下完成基于模塊的任務(wù)分工并實(shí)現(xiàn)最初的設(shè)計(jì)。④小組匯總程序、進(jìn)行調(diào)試,并完成最終成果的展示。
下面筆者以在中學(xué)講授“創(chuàng)意電子”課程的一個(gè)小組綜合項(xiàng)目為例,描述這一過程。本課的目標(biāo)是使學(xué)生綜合運(yùn)用元件和所學(xué)知識(shí)開發(fā)出一個(gè)創(chuàng)意作品。此前,教師應(yīng)講解在復(fù)雜的程序設(shè)計(jì)中代碼模塊化的意義,并給出一些具體的例子。在此基礎(chǔ)上,學(xué)生自愿結(jié)為兩人小組,提出創(chuàng)意。此處僅以其中一組學(xué)生設(shè)計(jì)并實(shí)現(xiàn)的溫控報(bào)警散熱器為例,描述后續(xù)過程。小組成員提出,使用溫度傳感器、蜂鳴器、LED燈、數(shù)碼管等元件制作一個(gè)具有顯示溫度和報(bào)警功能的散熱器。學(xué)生描述功能并進(jìn)一步對(duì)其進(jìn)行分解,除了使用到教師提供的一位共陽數(shù)碼管庫(kù)外,還構(gòu)建了呈現(xiàn)彩色燈(colorRGB)、電扇開關(guān)控制(fan)、聲光報(bào)警(ring)、獲取溫度(getTem)四個(gè)函數(shù)。
學(xué)生在開發(fā)過程中靈活地使用了Mixly的導(dǎo)入/導(dǎo)出庫(kù)功能:一位學(xué)生負(fù)責(zé)物理連接和四個(gè)子函數(shù)的編寫并使用“導(dǎo)出庫(kù)”功能將其導(dǎo)出成庫(kù)文件,另一位學(xué)生負(fù)責(zé)基于功能描述設(shè)計(jì)整體邏輯并在導(dǎo)入該文件后完成主函數(shù)的編寫。上頁(yè)圖5、圖6分別是該作品的庫(kù)文件代碼和主程序代碼,圖7是該作品的實(shí)物圖。
總結(jié)與展望
Mixly作為一個(gè)新的面向Arduino開發(fā)的圖形化編程軟件,在較短的時(shí)間內(nèi)得到了大量用戶的認(rèn)可與好評(píng),其根源來自一線教師給出的積極指導(dǎo)和建議。筆者所在的團(tuán)隊(duì)必將不斷完善Mixly的功能,為中國(guó)的創(chuàng)客教育貢獻(xiàn)一份力量。
編后:2015年,本刊刊發(fā)過一線教師介紹Mixly的文章,此次真正接觸到制作團(tuán)隊(duì),才發(fā)現(xiàn)Mixly的設(shè)計(jì)及應(yīng)用遠(yuǎn)遠(yuǎn)要超出我們的想象,值得一試!
作者簡(jiǎn)介:傅騫,副教授,博士,研究方向?yàn)槲锫?lián)網(wǎng)技術(shù)及教育應(yīng)用、創(chuàng)客教育支持生態(tài)建設(shè)。
基金項(xiàng)目:本文得到北京市教育科學(xué)“十二五”規(guī)劃2015年度課題“面向北京市中小學(xué)創(chuàng)客教育的教學(xué)體系研究——以創(chuàng)意電子教育為例”(項(xiàng)目編號(hào):CJA15234)資助。