高偉 朱軼 申屠浩 熊書明 江蘇大學(xué)計算機(jī)科學(xué)與通信工程學(xué)院
“新工科”教學(xué)改革是當(dāng)今中國高等教育的主旋律,而創(chuàng)新創(chuàng)業(yè)人才培養(yǎng)是“新工科”的一項重要建設(shè)任務(wù)。[1]“天大行動”和“北京指南”都明確提出:完善新工科人才“創(chuàng)意——創(chuàng)新——創(chuàng)業(yè)”教育體系,廣泛搭建創(chuàng)新創(chuàng)業(yè)實踐平臺,努力實現(xiàn)50%以上工科專業(yè)學(xué)生參加“大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計劃”、參與一項創(chuàng)新創(chuàng)業(yè)賽事活動,建設(shè)創(chuàng)業(yè)孵化基地和專業(yè)化創(chuàng)客空間,推動產(chǎn)學(xué)研用緊密結(jié)合和科技成果轉(zhuǎn)化應(yīng)用。[2,3]鐘登華院士也指出,針對“新工科”關(guān)鍵任務(wù)中的“實踐與創(chuàng)新創(chuàng)業(yè)”,應(yīng)改變工程實踐環(huán)境和工程實踐模式,通過創(chuàng)客模式、3D打印等新技術(shù)、新模式將真實世界的體驗融入工程教育。[4]因此,積極開展創(chuàng)新創(chuàng)業(yè)人才培養(yǎng),改革實踐教學(xué)內(nèi)容與教學(xué)手段,是新時代賦予高等工程教育的重要使命。
立足“新工科”背景下高等工程教育“應(yīng)對變化、塑造未來”的建設(shè)理念,面向創(chuàng)新型工程人才培養(yǎng)目標(biāo),針對當(dāng)前本科生在各類創(chuàng)新活動中必須具備基本知識與相關(guān)技術(shù)才能進(jìn)行智能設(shè)備開發(fā)的需求,結(jié)合物聯(lián)網(wǎng)技術(shù)與各類產(chǎn)業(yè)深度融合的現(xiàn)狀,筆者所在學(xué)院于2018年初創(chuàng)建了“CPS技術(shù)與創(chuàng)客實踐”新工科實訓(xùn)課程,探索如何為低年級本科生開展創(chuàng)新活動構(gòu)建IT知識基礎(chǔ)。
本課程將信息物理系統(tǒng)(Cyber-Physical Systems,CPS)技術(shù)[5]作為現(xiàn)代物聯(lián)網(wǎng)系統(tǒng)開發(fā)技術(shù)基礎(chǔ),以“創(chuàng)客教育”構(gòu)建創(chuàng)新工程能力培養(yǎng)的解決方案,結(jié)合機(jī)器人與行業(yè)智能裝備研發(fā)產(chǎn)業(yè)背景,基于“Arduino/物聯(lián)網(wǎng)云”等開源技術(shù)開展實訓(xùn)課程改革。CPS系統(tǒng)涵蓋感知、通信、計算、控制四個層面,因此對CPS技術(shù)的學(xué)習(xí),不僅能讓學(xué)生深入了解以物聯(lián)網(wǎng)為核心的信息系統(tǒng)整體架構(gòu),而且有助于其深刻理解信息技術(shù)與新型工業(yè)的有機(jī)融合。此外,創(chuàng)客教育側(cè)重于創(chuàng)新能力與團(tuán)隊協(xié)作能力的培養(yǎng)[6],能夠使學(xué)生在“自我創(chuàng)意轉(zhuǎn)化為現(xiàn)實”的創(chuàng)客過程中提升工程實踐能力。
目前,針對傳統(tǒng)非計算機(jī)類工科專業(yè)的IT技術(shù)教育,主要以“計算機(jī)文化基礎(chǔ)”與“C程序設(shè)計”課程的講授為主,難以滿足“新工科”教育體系的現(xiàn)實需求。另外,即使對計算機(jī)類專業(yè)的學(xué)生,目前的培養(yǎng)方案也很難保證大一新生能夠具備智能設(shè)備開發(fā)的概念、所需的技術(shù)以及一定的開發(fā)能力。大二和大三本科生是參與大學(xué)生創(chuàng)新實踐訓(xùn)練計劃和本科創(chuàng)新活動的主體,但大部分學(xué)生不具備智能設(shè)備開發(fā)所需的技術(shù)和能力,導(dǎo)致他們很難實質(zhì)性參與到各類創(chuàng)新活動中,最終只有少數(shù)優(yōu)秀學(xué)生參與創(chuàng)新活動,難以實現(xiàn)“新工科建設(shè)路線”中規(guī)劃的50%以上工科專業(yè)學(xué)生參加創(chuàng)新項目與各類競賽的預(yù)期規(guī)模。針對上述情況,迫切需要打造一門面向低年級本科生開設(shè)的IT技術(shù)類基礎(chǔ)課程,以物聯(lián)網(wǎng)技術(shù)教育為切入點,結(jié)合工程實踐訓(xùn)練,幫助工科學(xué)生構(gòu)建新時代所需的IT技術(shù)基礎(chǔ)。
該實訓(xùn)課程為2學(xué)分,教學(xué)內(nèi)容包括CPS技術(shù)實驗和團(tuán)隊創(chuàng)客實踐兩部分。CPS技術(shù)實驗環(huán)節(jié)主要進(jìn)行Arduino開發(fā)技術(shù)以及物聯(lián)網(wǎng)云實驗(含C#客戶端開發(fā))教學(xué),在完成基礎(chǔ)技能訓(xùn)練后,將學(xué)生分成學(xué)習(xí)小組(每組2~3名),以機(jī)器人與行業(yè)智能裝備為創(chuàng)新主題,引導(dǎo)他們自主構(gòu)思課題,綜合運用單片機(jī)、物聯(lián)網(wǎng)云、客戶端開發(fā)技術(shù)設(shè)計解決方案,并通過搭建軟硬件環(huán)境,最終完成相關(guān)開發(fā)并展示實物開發(fā)結(jié)果。具體課程安排如圖1所示,其中Arduino開發(fā)建議12學(xué)時,物聯(lián)網(wǎng)云實驗建議8學(xué)時,團(tuán)隊創(chuàng)客實踐建議12學(xué)時。
圖1 課程整體設(shè)計
為了避免與C程序設(shè)計內(nèi)容重復(fù)并突出實踐應(yīng)用背景,本階段通過設(shè)置一系列編程問題的方式進(jìn)行Arduino編程教學(xué),如聲控?zé)?、溫控風(fēng)扇等,旨在訓(xùn)練學(xué)生快速掌握Arduino單片機(jī)編程方法,學(xué)會使用模擬/數(shù)字傳感器、控制繼電器/直流電機(jī)/舵機(jī)以及串口通信等。通過本階段的學(xué)習(xí),學(xué)生可深入理解信息系統(tǒng)是如何感知物理世界以及控制物理設(shè)備的。由于Arduino具備簡單易用的特點,非計算機(jī)專業(yè)的學(xué)生也可快速掌握基本的物聯(lián)網(wǎng)技術(shù)。
在本階段教學(xué)完成后,教師設(shè)置了“小車走迷宮”測試項目,強(qiáng)化學(xué)生對傳感器與電機(jī)控制的綜合運用。例如,在下頁圖2所示的訓(xùn)練中,地面放置一張2米×2米的地圖(由黃色PVC板拼接),上面用黑色膠帶標(biāo)識出迷宮路線,小車前端安裝有三個灰度巡線傳感器,根據(jù)三個傳感器返回值的組合判斷出小車所處的位置,以此實現(xiàn)從起點到終點的自主尋路。該測試項目具有一定的趣味性和競賽性,學(xué)生可在娛樂中加強(qiáng)對知識的學(xué)習(xí)和運用。
圖2 小車走迷宮測試
物聯(lián)網(wǎng)云是當(dāng)前物聯(lián)網(wǎng)終端接入信息平臺的主流模式,通過對現(xiàn)有幾大商用物聯(lián)網(wǎng)云在穩(wěn)定性、開發(fā)友好性、使用規(guī)模、是否免費等方面進(jìn)行比較,本課程在實訓(xùn)教學(xué)中選擇了阿里物聯(lián)網(wǎng)云[7]作為教學(xué)載體。教學(xué)中首先講解阿里物聯(lián)網(wǎng)云的設(shè)備創(chuàng)建過程與MQTT(消息隊列遙測傳輸)接入方法,然后講解ESP8266無線模塊的開發(fā)要點,在此基礎(chǔ)上再講授基于MQTT庫的C#客戶端開發(fā),最后學(xué)生進(jìn)行單片機(jī)與阿里云之間的數(shù)據(jù)交互實驗。學(xué)生可通過遠(yuǎn)程感知與控制實驗開發(fā)過程,深刻理解物聯(lián)網(wǎng)技術(shù)特點與優(yōu)勢。
該實訓(xùn)項目旨在訓(xùn)練學(xué)生綜合運用下位機(jī)、物聯(lián)網(wǎng)云、遠(yuǎn)程客戶端開發(fā)技術(shù),結(jié)合自身專業(yè)背景,實現(xiàn)物聯(lián)網(wǎng)技術(shù)在各自專業(yè)中的實際應(yīng)用。教師首先給定一個創(chuàng)新背景(如服務(wù)老齡社會的智能化應(yīng)用等),然后學(xué)生團(tuán)隊自主提出課題和設(shè)計解決方案,并做開題匯報答辯,之后通過團(tuán)隊協(xié)作搭建軟硬件環(huán)境并完成相關(guān)開發(fā)工作,最后展示開發(fā)結(jié)果。
作為一門實訓(xùn)課程,教學(xué)場地安排在專業(yè)實驗室,學(xué)生在聽課中同步進(jìn)行實踐操作。在教學(xué)中2~3名學(xué)生為一組,教師根據(jù)教學(xué)任務(wù)為每組學(xué)生分配相應(yīng)的學(xué)習(xí)套件,如在傳感器學(xué)習(xí)階段分配Arduino中級套件(含Arduino UNO開發(fā)板與20余種傳感器),在電機(jī)控制學(xué)習(xí)階段分配Romeo BLE多合一控制器(含電機(jī)驅(qū)動與藍(lán)牙模塊)與直流電機(jī)等。
物聯(lián)網(wǎng)云實驗是物聯(lián)網(wǎng)技術(shù)教學(xué)的關(guān)鍵,下面,筆者圍繞課程設(shè)計的阿里物聯(lián)網(wǎng)云實驗進(jìn)行詳細(xì)介紹,供同類課程教師參考。
所需硬件環(huán)境(如圖3):FireBeetle ESP8266 WiFi開發(fā)板、輸入型傳感器若干(如溫濕度傳感器、光強(qiáng)傳感器、振動傳感器等)、LED燈模塊、電腦一臺。
圖3 物聯(lián)網(wǎng)云實驗設(shè)備
所需軟件環(huán)境:A r d u i n o IDE、VS.NET(用于C#客戶端開發(fā))。
實驗原理(如圖4):FireBeetle開發(fā)板采用MQTT協(xié)議連接阿里物聯(lián)網(wǎng)云;在云平臺上創(chuàng)建兩個設(shè)備,一個對應(yīng)FireBeetle開發(fā)板,一個對應(yīng)C#客戶端,通過配置規(guī)則引擎實現(xiàn)兩個設(shè)備之間的數(shù)據(jù)交互;學(xué)生個人電腦上開發(fā)C#客戶端,同樣以MQTT協(xié)議連接阿里物聯(lián)網(wǎng)云。
圖4 物聯(lián)網(wǎng)云實驗設(shè)計
最終實驗效果:一是利用FireBeetle開發(fā)板實現(xiàn)各類傳感器所采集數(shù)據(jù)上云,經(jīng)過數(shù)據(jù)轉(zhuǎn)發(fā)在C#窗體上顯示;二是通過在C#窗體上放置按鈕,可以控制FireBeetle開發(fā)板上所連接LED燈的亮滅。
在整個實驗過程中,學(xué)生需要完成以下實驗內(nèi)容:
①學(xué)習(xí)阿里物聯(lián)網(wǎng)云的連接方式;②創(chuàng)建云上設(shè)備,完成規(guī)則引擎配置;③開發(fā)Arduino端程序,調(diào)用“PubSubClient”庫[8]收發(fā)MQTT消息;④開發(fā)C#客戶端程序,調(diào)用“M2Mqtt”庫[9],收發(fā)MQTT消息。
以下分別介紹每一步涉及的實驗要點。
第一,創(chuàng)建設(shè)備及規(guī)則引擎配置。阿里物聯(lián)網(wǎng)云上設(shè)備創(chuàng)建與常規(guī)物聯(lián)網(wǎng)云的操作類似,首先創(chuàng)建產(chǎn)品,再在產(chǎn)品之下創(chuàng)建設(shè)備,此處的產(chǎn)品是一組具有相同功能定義的設(shè)備集合。在設(shè)備創(chuàng)建后,會獲得設(shè)備證書,即(ProductKey、DeviceName、DeviceSecret)三元組,這三個數(shù)據(jù)將用于Arduino編程連接阿里物聯(lián)網(wǎng)云。圖5給出了阿里物聯(lián)網(wǎng)云上所創(chuàng)建設(shè)備的相關(guān)信息。
圖5 阿里物聯(lián)網(wǎng)云所創(chuàng)建設(shè)備的信息
每一個創(chuàng)建好的設(shè)備下均包含若干主題(topic),用于設(shè)備發(fā)布信息或者訂閱信息;如需實現(xiàn)兩個設(shè)備之間的消息通信,需要在阿里物聯(lián)網(wǎng)云平臺上為這兩個設(shè)備進(jìn)行對應(yīng)的主題配置轉(zhuǎn)發(fā)引擎,如圖4中所示。若FireBeetle開發(fā)板訂閱主題“/ProductKey1/DeviceName1/user/get”,C#客戶端發(fā)布主題“/ProductKey2/DeviceName2/user/update”,云上規(guī)則引擎需配置讀取設(shè)備DeviceName2的update主題,轉(zhuǎn)發(fā)至設(shè)備DeviceName1的get主題。
第二,Arduino程序開發(fā)要點。FireBeetle ESP8266 WiFi板是一款內(nèi)置32位低功耗MCU、集成了TCP/IP網(wǎng)絡(luò)協(xié)議棧、具備HSPI/UART/PWM/I2C/I2S等豐富硬件接口的開發(fā)板,且兼容Arduino開發(fā)。該開發(fā)板主要包含兩部分——WiFi連接程序與MQTT通信程序,包括連接、接收、發(fā)送過程,其開發(fā)難點主要在于MQTT加密連接。
圖6 給出了物聯(lián)網(wǎng)云的連接參數(shù):阿里物聯(lián)網(wǎng)的連接域名為${ProductKey}.iot-asmqtt.${RegionId}.aliyuncs.c o m,接入端口18 8 3。此處,ProductKey是設(shè)備注冊時的產(chǎn)品密鑰,RegionId一般選擇“cnshanghai”(華東地區(qū))。在連接時,提供給阿里云服務(wù)器的驗證參數(shù)有三個:MQTT客戶端ID、MQTT用戶名、MQTT密碼。
圖6 阿里物聯(lián)網(wǎng)云連接參數(shù)
MQTT客戶端ID:是一個拼接字符串,常見格式為“設(shè)備的MAC地址或SN碼|securemode=3,s i g n m e t h o d=h m a c s h a1,t i m e s t a m p=任意數(shù)字|”。securemode表示目前安全模式,可選值有2(TLS直連模式)和3(TCP直連模式);signmethod表示簽名算法類型,支持hmacmd5、hmacsha1和hmacsha256,默認(rèn)為hmacmd5。
M Q T T 用戶名:格式為DeviceName+"&"+ProductKey,對三元組數(shù)據(jù)拼接即可獲得。
MQTT密碼:對DeviceSecret和MQTT客戶端ID進(jìn)行hmacsha1計算獲得。
在上述參數(shù)構(gòu)建完成后,即可將FireBeetle開發(fā)板連入阿里物聯(lián)網(wǎng)云進(jìn)行數(shù)據(jù)收發(fā)操作。
第三,C#客戶端程序開發(fā)要點。這部分程序開發(fā)比較簡單,學(xué)生首先創(chuàng)建Windows Form應(yīng)用,分別在窗體上添加連接阿里云和發(fā)送接收消息的按鈕和顯示文本框,然后分別創(chuàng)建相應(yīng)的響應(yīng)函數(shù),主要借助了“M2Mqtt”庫。該庫是一個面向C#的開源庫,目前版本為4.5.0,庫里提供了完整的MQTT示例程序,包括hmacsha1簽名的計算、MQTT連接與數(shù)據(jù)收發(fā),學(xué)生只需要把三元組數(shù)據(jù)代入程序即可,最終可以通過物聯(lián)網(wǎng)云實現(xiàn)C#客戶端程序?qū)h(yuǎn)程設(shè)備的控制以及數(shù)據(jù)收發(fā)。
綜上所述,雖然整個物聯(lián)網(wǎng)云實驗主體均為軟件開發(fā),但學(xué)生可在實驗過程中充分理解現(xiàn)代智能化系統(tǒng)普遍具備的遠(yuǎn)程感知與控制功能,完成實驗后學(xué)生還會聯(lián)想到“如何實現(xiàn)遠(yuǎn)程開燈/開門禁/開電器/開自行車鎖/遙控機(jī)器人/遙控小車等”。學(xué)生結(jié)合各自的專業(yè)背景,進(jìn)一步開展頭腦風(fēng)暴,大多數(shù)學(xué)生可以在“團(tuán)隊自主開發(fā)”環(huán)節(jié)構(gòu)思出良好的創(chuàng)新作品。
本課程自2018年春季正式開設(shè)以來,目前面向全校學(xué)過C程序設(shè)計的專業(yè)開設(shè)公選課(主要面向二年級本科生),2019年春季開設(shè)7個班,選課人數(shù)超過400人,教學(xué)效果獲得選課學(xué)生的廣泛好評,2019年秋季選課規(guī)模繼續(xù)擴(kuò)大。目前,課程組前期已在學(xué)堂在線平臺建設(shè)了“移動互聯(lián)網(wǎng)開發(fā)”課程(雖然以移動互聯(lián)網(wǎng)開發(fā)為主,但也覆蓋了本課程的核心知識點),作為本課程Arduino基礎(chǔ)、C#客戶端與移動客戶端開發(fā)的線上教育資源,該在線課程選課人數(shù)超過1.4萬人。在此基礎(chǔ)上,2019年課程組在中國大學(xué)MOOC(慕課)上創(chuàng)建了“CPS技術(shù)與創(chuàng)客實踐”課程,加入了物聯(lián)網(wǎng)云教學(xué)與案例,為本課程系統(tǒng)性建設(shè)了線上視頻教育資源。自2020年春季學(xué)期開始到現(xiàn)在,已在中國大學(xué)慕課開設(shè)6個學(xué)期,共計29個慕課堂教學(xué)班,選課人數(shù)達(dá)人1296人。
作為一門新工科實訓(xùn)課程,本課程創(chuàng)建了一套有效的創(chuàng)新實踐能力培養(yǎng)模式。通過CPS技術(shù)構(gòu)建創(chuàng)新知識基礎(chǔ),以創(chuàng)客教育作為創(chuàng)新工程能力的培養(yǎng)手段,讓學(xué)生系統(tǒng)性掌握開展創(chuàng)新活動所必需的物聯(lián)網(wǎng)知識與技術(shù),進(jìn)而引導(dǎo)學(xué)生以團(tuán)隊方式進(jìn)行創(chuàng)客實踐,圍繞某個創(chuàng)新背景自主提出問題、設(shè)計解決方案、完成開發(fā)任務(wù),在自主實踐中提升自我創(chuàng)新能力與工程實踐能力。同時,本課程教學(xué)模式易于復(fù)制,可為國內(nèi)從事創(chuàng)新工程實踐教育的高等院校與職業(yè)院校教師提供有價值的教學(xué)參考。