王新華,王建芬,張 磊
(浙江科技學(xué)院 信息與電子工程學(xué)院,杭州 310023)
電子信息技術(shù)和通信技術(shù)是IT業(yè)的基石,隨著全球科技競爭的日趨激烈,越來越多的國家認(rèn)識到信息技術(shù)的重要性,紛紛制定長遠(yuǎn)發(fā)展規(guī)劃,不斷增加研究的投入。中國在這些方面已經(jīng)有了長足的進展,孕育發(fā)展出了一批國際領(lǐng)先水平的通信技術(shù)公司。然而,我們在基礎(chǔ)研究、工業(yè)應(yīng)用和裝備制造領(lǐng)域暴露出了很多不足,在部分技術(shù)領(lǐng)域缺乏核心競爭力[1],特別是近幾年國外科技強國對中國的技術(shù)打壓和封鎖,使我們的電子通信產(chǎn)業(yè)發(fā)展受到了嚴(yán)重的影響。因此加強和推進核心科技的發(fā)展,解決受制于人的技術(shù)問題,并能夠在未來立足技術(shù)制高點,是中國當(dāng)前面臨的急迫問題,需要持續(xù)不斷地培養(yǎng)大批既具有堅實理論基礎(chǔ),又具備很強實踐應(yīng)用能力的綜合性電子通信技術(shù)人才[2]。
電子通信技術(shù)的發(fā)展需要具有綜合性知識和能力的高素質(zhì)人才,他們既要具備堅實的理論基礎(chǔ),又要具有很強的應(yīng)用能力;既要掌握電子和計算機的硬件知識,也要具有足夠的軟件設(shè)計能力,同時還要具備很強的創(chuàng)新能力。而這樣的人才培養(yǎng)難度大、周期長,一直是高等學(xué)校此類專業(yè)教學(xué)中的難點。
電子通信技術(shù)類專業(yè)基礎(chǔ)課涉及面廣,學(xué)習(xí)時間長,理論課程多,專業(yè)入門不易[3],大部分學(xué)生在二三年級的學(xué)習(xí)過程中都沒有能力參與實際項目的設(shè)計,也很少接觸實際的綜合性應(yīng)用案例,所以學(xué)習(xí)時普遍反映課程枯燥,缺乏成就感,這挫傷了學(xué)習(xí)的積極性。相比較而言,計算機軟件類專業(yè)的學(xué)生在二年級時就可以參與一些項目的設(shè)計,能直觀感受到專業(yè)知識的應(yīng)用并帶來很強的成就感,這對專業(yè)學(xué)習(xí)有很大的激勵作用。如果電子通信類專業(yè)的學(xué)生能在專業(yè)基礎(chǔ)課學(xué)習(xí)中盡早接觸與專業(yè)相關(guān)的一些應(yīng)用,對后續(xù)相關(guān)課程的學(xué)習(xí)將大有裨益。
嵌入式系統(tǒng)涵蓋了很多專業(yè)課程的綜合知識,結(jié)合了軟硬件知識,具有很強的理論性和實踐性[4],可以實現(xiàn)系統(tǒng)級的綜合設(shè)計,很適合項目式教學(xué)[5-6]。另外,它的應(yīng)用面非常廣泛,很多相關(guān)專業(yè)也都開設(shè)該課程,因此這門課程是最佳的教學(xué)改革實踐對象之一。
我們嘗試在大學(xué)低年級開設(shè)一門入門型的嵌入式系統(tǒng)課程。本課程介紹基本概念,采用當(dāng)前流行的Arduino嵌入式平臺,學(xué)習(xí)簡單的軟硬件編程技術(shù);結(jié)合最新的阿里云智能物聯(lián)網(wǎng)平臺設(shè)計項目實例,使學(xué)生盡早接觸實際應(yīng)用系統(tǒng)。
針對低年級學(xué)生欠缺基礎(chǔ)知識的情況,為使學(xué)生易于學(xué)習(xí),課程具體實施時首先總結(jié)提煉最基礎(chǔ)的概念,采用模塊化的教學(xué)方式講授軟硬件編程,在此基礎(chǔ)上逐步引導(dǎo)學(xué)生進行具有系統(tǒng)功能的項目案例學(xué)習(xí)。以下從計算機系統(tǒng)構(gòu)成、基礎(chǔ)概念和實際項目設(shè)計等幾方面介紹具體的教學(xué)設(shè)計。
大學(xué)一年級課程會初步介紹計算機原理和體系結(jié)構(gòu),但基本上不會接觸更底層的物理器件。在入門型嵌入式系統(tǒng)課程教學(xué)中,將Arduino系統(tǒng)看作一個具有代表性的小型計算機系統(tǒng),對系統(tǒng)的核心芯片及外圍硬件組成做概括介紹,讓學(xué)生了解MCU(microcontroller unit,微控制單元)的內(nèi)部硬件結(jié)構(gòu)和功能、數(shù)據(jù)存儲器和程序存儲器的功能、程序在硬件中運行的原理等,使他們對計算機的軟硬件及其關(guān)系有初步了解,再引申介紹嵌入式計算機系統(tǒng)和常規(guī)計算機系統(tǒng)的概念,并比較兩者異同,這樣可以促進學(xué)生對計算機系統(tǒng)的理解。
有了框架性的概念并能“觸摸”到實際的器件后,學(xué)生對計算機系統(tǒng)的結(jié)構(gòu)和工作原理會有更進一步的認(rèn)識,同時也能消除陌生感和畏難心理,在后續(xù)學(xué)習(xí)中更有自信心[7]。
Arduino嵌入式系統(tǒng)課程的編程設(shè)計以模塊化的函數(shù)形式居多,不涉及芯片內(nèi)部較深奧的硬件原理,起步較容易。但在編程時,還是需要了解最基本的概念,例如傳感器知識、數(shù)字信號和模擬信號的定義、輸入輸出控制、AD/DA轉(zhuǎn)換的概念及串行通信的概念等。這些基礎(chǔ)知識使學(xué)生能有效地在Arduino平臺進行硬件的編程學(xué)習(xí),并能順利開展項目實例設(shè)計,同時也為學(xué)習(xí)后續(xù)數(shù)字電路、模擬電路及單片機等課程奠定基礎(chǔ)。下面以3個基本概念為例介紹課程的教學(xué)方法。
2.2.1 了解模擬信號和數(shù)字信號的定義
模擬信號、數(shù)字信號的概念及其相關(guān)的處理是眾多課程的基礎(chǔ)之一,貫穿于整個專業(yè)的學(xué)習(xí)過程。在Arduino嵌入式MCU中,定義了數(shù)字信號和模擬信號輸入輸出引腳,在編程時直接用相關(guān)函數(shù)完成對應(yīng)的操作。雖然低年級學(xué)生基礎(chǔ)知識欠缺,但在實驗教學(xué)中通過函數(shù)的編程設(shè)計能使學(xué)生循序漸進地掌握概念[8-9]。
2.2.1.1 通過輸入輸出函數(shù)認(rèn)識數(shù)字信號和模擬信號 利用Arduino芯片的數(shù)字信號輸入輸出和模擬信號輸入輸出引腳,可以使學(xué)生初步認(rèn)識數(shù)字信號和模擬信號。在Arduino程序設(shè)計中,數(shù)字信號輸入和模擬信號輸入有不同的代碼函數(shù),如分別定義引腳A0為數(shù)字信號輸入和模擬信號輸入,讀入的數(shù)值賦值給整型變量:
Value = digitalRead(A0),Value = analogRead(A0)。
數(shù)字信號輸出和模擬信號輸出也有不同的代碼函數(shù),如對引腳3分別輸出數(shù)字值和模擬值:
digitalWrite(3,HIGH),analogWrite(3,Value)。
教學(xué)時針對不同的引腳輸入或輸出不同的信號值,并用示波器觀察測量信號的波形,可以使學(xué)生認(rèn)識到數(shù)字信號只定義0和1兩種狀態(tài),而模擬信號是時間連續(xù)的信號。在實驗中學(xué)生可以非常直觀地看到兩種不同信號的區(qū)別和聯(lián)系,因此很容易理解數(shù)字信號和模擬信號的概念,這是后續(xù)知識和課程學(xué)習(xí)的基礎(chǔ)。
圖1 數(shù)字邏輯電平的定義Fig.1 Definition of digital logic level
2.2.1.2 了解數(shù)字信號的電壓范圍定義 學(xué)生從概念上知道數(shù)字信號的0、1值與電壓的高低狀態(tài)有關(guān),并不了解對應(yīng)的電壓值,即沒有邏輯電平范圍的概念。為使學(xué)生明確此概念,在代碼Value = digitalRead(A0)的測試中,不斷調(diào)節(jié)A0輸入腳的電壓并讀取數(shù)字值。因為Arduino芯片是CMOS(complementary metal oxide semiconductor,互補金屬氧化物半導(dǎo)體)器件,因此可以測量得到圖1中COMS電平的數(shù)字電壓定義范圍[10]:高電平(1)的最低值VH(min)約為電源電壓VDD的70%,最高值VH(max)為VDD;低電平(0)的最低值VL(min)為0 V,最高值VL(max)約為電源電壓VDD的30%。對TTL(transistor-transistor logic,晶體管—晶體管邏輯電路)電平的定義而言,教師可適當(dāng)解釋高低電平的范圍,低電平在0~0.8 V之間,高電平在2.0 V到電源電壓VDD之間。
經(jīng)過實驗測試,學(xué)生對數(shù)字信號和實際邏輯電平的關(guān)系有了清晰的了解,這是后續(xù)數(shù)字電路課程的基礎(chǔ)知識。
2.2.2 AD/DA轉(zhuǎn)換概念的引出和展開
電子通信專業(yè)中AD轉(zhuǎn)換、DA轉(zhuǎn)換、連續(xù)和離散的概念對學(xué)生而言非常重要,后續(xù)很多課程都會涉及,因此盡早理解這些概念對后續(xù)學(xué)習(xí)幫助很大?;谇笆鯝rduino的模擬信號輸入輸出函數(shù)就可以引出AD/DA轉(zhuǎn)換的概念。
為了讓學(xué)生容易理解上述概念并便于引申,拋開具體的物理器件原理,我們首先從映射的角度對AD/DA轉(zhuǎn)換的概念做解釋,即對于任意的兩個域,如果域1的取值范圍是F1min~F1max,域2的取值范圍是F2min~F2max,域1中的任意值X1等比例映射到域2的X2值,二者可以表示為如下關(guān)系:
(1)
這里的兩個域可以是數(shù)字域和模擬域的任意組合。
圖2 不同域的映射關(guān)系Fig.2 Mapping relationship between different domains
AD轉(zhuǎn)換即模擬域到數(shù)字域的映射,是把一定范圍的模擬電壓值映射到一定范圍的數(shù)字值上,不同域的映射關(guān)系如圖2所示。模擬域1的輸入?yún)⒖茧妷簽閂ref1,數(shù)字域1的數(shù)字值上限為D1max。模擬域1的電壓A1等比例映射為數(shù)字域1的數(shù)值D1,根據(jù)兩個域的取值范圍和式(1),即得到AD轉(zhuǎn)換的一般公式[10]:
(2)
DA轉(zhuǎn)換即數(shù)字域2等比例映射到模擬域2,同樣根據(jù)兩個域的取值范圍D2max和Vref 2及式(1),得到DA轉(zhuǎn)換的一般公式:
(3)
“域映射”轉(zhuǎn)換關(guān)系即兩個數(shù)字域之間的映射。
學(xué)生需要重點了解的是在數(shù)字域1中0~D1max的范圍內(nèi)有D1max+1個整數(shù),也對應(yīng)分割了模擬域1中相同份數(shù)的輸入電壓,而且由于D1必須是整數(shù),因此D1對應(yīng)的是一定范圍內(nèi)的A1,這就引出了AD轉(zhuǎn)換中取樣量化編碼及量化誤差的概念,適當(dāng)引申講解這些概念可與后續(xù)課程建立聯(lián)系;同樣需要強調(diào)由于數(shù)字域2中整數(shù)的數(shù)量有限,因此得到的模擬域2的電壓值也是數(shù)量有限,讓學(xué)生對比分析模擬域1和模擬域2,可以知道模擬域1的輸入電壓是連續(xù)變化的,而模擬域2的輸出電壓是有限離散的,從而使學(xué)生初步了解連續(xù)和離散的概念,這些概念與數(shù)字信號處理課程相關(guān)。
從上面的描述可以知道,讓學(xué)生從映射的角度來了解AD/DA轉(zhuǎn)換的概念是一種比較好的方法,也易于進一步展開介紹其他知識,與后續(xù)課程相聯(lián)系,課程內(nèi)容更易理解。
2.2.3 串行通信的學(xué)習(xí)
串行通信是嵌入式系統(tǒng)中應(yīng)用非常廣泛的功能之一,但如果想真正掌握和理解該通信方式,需要在單片機課程的學(xué)習(xí)之后才能完成,學(xué)生在此之前參加電子類競賽需要經(jīng)常性地用到串行通信技術(shù)來完成一些功能,往往感覺力不從心。
為使學(xué)生在還沒有深入理解串口原理時也能應(yīng)用串口通信功能,Arduino嵌入式系統(tǒng)的編程模塊對串口通信做了封裝和簡化,使用幾種函數(shù)實現(xiàn)了最基本的功能,如接收引腳和發(fā)射引腳定義函數(shù)、波特率定義函數(shù)、數(shù)據(jù)發(fā)送函數(shù)和數(shù)據(jù)接收函數(shù)等。這些函數(shù)涵蓋串行通信的基本概念和功能,滿足一般的應(yīng)用。我們在教學(xué)過程中不必拘泥于串行通信的全部定義和功能介紹,只需讓學(xué)生了解通信速率的定義,收發(fā)引腳的功能和連接方式,上位機通信軟件的參數(shù)配置等基本概念即可實現(xiàn)通信功能。
學(xué)生使用串行通信方式可以連接藍(lán)牙模塊、WiFi模塊等實現(xiàn)綜合系統(tǒng)功能,能夠大大提升學(xué)習(xí)興趣。在教學(xué)實踐中我們發(fā)現(xiàn)以前沒有單片機課程知識基礎(chǔ)的學(xué)生在參加競賽時不能獨立完成通信AT指令的編寫和調(diào)試工作,但通過Arduino嵌入式系統(tǒng)課程學(xué)習(xí)后就具有這樣的能力,證明課程的設(shè)置和教學(xué)內(nèi)容的設(shè)計是富有成效的。
在很多課程教學(xué)中我們都發(fā)現(xiàn)最吸引學(xué)生的教學(xué)方式是全過程參與項目案例,自己動手設(shè)計完成一個項目會給學(xué)生帶來很大的成就感,這種成就感反過來會極大地激發(fā)學(xué)生學(xué)習(xí)的積極性。同時,學(xué)過的知識直觀地應(yīng)用在實踐中能使學(xué)生感受到切實的收獲,對所學(xué)知識理解更深,記憶更牢固。因此在課程中我們引導(dǎo)學(xué)生綜合應(yīng)用所學(xué)知識,用Arduino平臺提供的模塊化函數(shù)、傳感器及通信模塊,使用阿里云智能物聯(lián)網(wǎng)平臺,設(shè)計一個小型綜合系統(tǒng)。圖3為項目設(shè)計實例,這個系統(tǒng)以Arduino MCU為核心,通過WiFi模塊與阿里云平臺建立通信連接,具有采集光照度和電池電壓兩路模擬信號和一路電源指示燈數(shù)字信號的功能,也可以接收阿里云上層平臺的指令控制一個電源電路的開關(guān)。學(xué)生自己不需要設(shè)計上層云平臺的代碼,但要在云平臺上創(chuàng)建項目和配置各種監(jiān)測控制參數(shù)[11],形成云平臺監(jiān)控頁面,并生成手機App控制軟件,用模擬軟件測試配置的正確性,之后設(shè)計Arduino的程序并進行通信連接,所有的結(jié)果都能夠在云平臺監(jiān)控界面和手機App軟件上觀察并進行控制。
圖3 項目設(shè)計實例Fig.3 Project design example
這個項目高度綜合了課程所學(xué)內(nèi)容,具有監(jiān)控平臺和手機App管理功能,使學(xué)生了解如何從底層開始設(shè)計一個項目。雖然完成設(shè)計需要持續(xù)幾個星期并花費大量的業(yè)余時間,但學(xué)生看到自己能夠設(shè)計一個非常實用的系統(tǒng),都全身心投入,完成后感覺收獲很多。從結(jié)果來看,項目設(shè)計非常有利于調(diào)動學(xué)生的學(xué)習(xí)積極性,是一種非常有效的教學(xué)手段[12]。
在傳統(tǒng)的電子通信類專業(yè)的教學(xué)計劃中,應(yīng)用型課程往往放在專業(yè)教學(xué)后期作為專業(yè)課程的應(yīng)用總結(jié),這樣確實符合專業(yè)課學(xué)習(xí)的科學(xué)規(guī)律,但學(xué)生在前期的學(xué)習(xí)中獲得綜合應(yīng)用性課程學(xué)習(xí)的機會比較少,在驅(qū)動學(xué)習(xí)興趣上顯得不足。將入門型嵌入式系統(tǒng)課程的內(nèi)容合理取舍,擴大覆蓋面,內(nèi)容偏向綜合性,教學(xué)時間安排在低年級,可以使學(xué)生盡早接觸和了解專業(yè)知識的應(yīng)用,并通過實踐激發(fā)學(xué)生的自信心和專業(yè)認(rèn)同感,也能夠增強學(xué)生的創(chuàng)新創(chuàng)業(yè)能力[13]。當(dāng)然,本課程不能代替高年級嵌入式技術(shù)類課程,要具備更強的設(shè)計應(yīng)用能力,還需要深入學(xué)習(xí)其他相關(guān)課程。
在低年級開設(shè)綜合應(yīng)用性的課程就需要避免深入過多的細(xì)節(jié),比如對編程時的各種處理函數(shù)、傳感器的電路原理、各種通信協(xié)議等均采用模塊化方式提供接口,學(xué)生不需要深入了解內(nèi)部細(xì)節(jié),了解功能后能夠在設(shè)計時使用即可,不至于陷入過多新知識的學(xué)習(xí)中,而更多地聚焦于認(rèn)識系統(tǒng)和應(yīng)用系統(tǒng),在很大程度上降低了學(xué)習(xí)的難度。另外,教學(xué)內(nèi)容要體現(xiàn)最新的技術(shù)發(fā)展并融合在項目設(shè)計中,如學(xué)生可以熟悉一些最新的工具和平臺,在后續(xù)學(xué)習(xí)和參加各類競賽時還可以使用。這些綜合設(shè)計和應(yīng)用的持續(xù)鍛煉對學(xué)生整個大學(xué)期間的學(xué)習(xí)將會起到積極的促進作用。
這種入門型的課程實際注重的是引導(dǎo)作用,使學(xué)生盡早接觸專業(yè)的應(yīng)用,并能夠提前了解后續(xù)相關(guān)課程的一些概念,起到承前啟后的作用。因此課程內(nèi)容上要盡可能強調(diào)與后續(xù)課程關(guān)聯(lián)性強的概念和知識,這對學(xué)生了解課程體系,提高專業(yè)認(rèn)知度會有較大幫助。
嵌入式控制系統(tǒng)目前在很多領(lǐng)域都有應(yīng)用,除了電子通信類專業(yè)外,很多其他工科專業(yè)都有類似的課程?;贏rduino的嵌入式系統(tǒng)課程開設(shè)于低年級,與專業(yè)基礎(chǔ)知識相關(guān)度較小,通用性較強,因此易于在其他專業(yè)推廣,課程中模塊化的軟硬件設(shè)計和易于快速搭建的平臺都為其他專業(yè)學(xué)生的學(xué)習(xí)提供了支撐,能夠?qū)崿F(xiàn)多樣化嵌入式方向人才的培養(yǎng)[14]。
本課程在浙江科技學(xué)院以“阿里云智能物聯(lián)技術(shù)”特色班方式已開設(shè)3期,課程中除了講授基礎(chǔ)知識外,還設(shè)計了8個軟硬件驗證性基礎(chǔ)實驗、1個阿里云平臺仿真設(shè)計型實驗和1個系統(tǒng)綜合性設(shè)計實驗,課程內(nèi)容涉及了嵌入式系統(tǒng)入門的基礎(chǔ)知識并將這些知識應(yīng)用在項目案例中。課程開設(shè)后,包括電子通信專業(yè)、計算機技術(shù)、軟件工程、大數(shù)據(jù)專業(yè)、電氣工程類、機械制造工程、能源與環(huán)境工程等11個專業(yè)的學(xué)生選課,每期報名人數(shù)都在60人以上,甚至吸引了很多高年級的學(xué)生來回頭補學(xué)這門課,學(xué)生學(xué)習(xí)結(jié)束后都取得了很大的收獲。另外,在通信工程專業(yè)針對留學(xué)生開設(shè)了本選修課,留學(xué)生基礎(chǔ)較為薄弱,但他們基本上能夠掌握教學(xué)內(nèi)容,在整個學(xué)習(xí)過程特別是項目設(shè)計中表現(xiàn)出了濃厚的學(xué)習(xí)興趣。
在低年級學(xué)生中面向相關(guān)工科專業(yè)開設(shè)一門入門型嵌入式系統(tǒng)課程是一種新的教學(xué)嘗試和探索。為了使學(xué)生更好地理解、掌握課程內(nèi)容,并能夠與后續(xù)的相關(guān)課程建立關(guān)聯(lián),在教學(xué)中注重強調(diào)基本概念,對比較難懂的軟硬件編程模塊化后直接使用,使學(xué)生易于上手;另外,用項目式教學(xué)法使學(xué)生能夠綜合運用所學(xué)知識,并接觸行業(yè)的新技術(shù)。這些措施有效提高了學(xué)生的學(xué)習(xí)積極性,在實踐中得到了學(xué)生的廣泛認(rèn)可。根據(jù)教學(xué)反饋,后續(xù)課程內(nèi)容和教學(xué)方法還需要不斷改進,及時跟隨行業(yè)新技術(shù)的發(fā)展,激發(fā)學(xué)生的求知欲,提高其專業(yè)知識應(yīng)用能力。