高偉 朱軼 申屠浩 熊書明 江蘇大學計算機科學與通信工程學院
“新工科”教學改革是當今中國高等教育的主旋律,而創新創業人才培養是“新工科”的一項重要建設任務。[1]“天大行動”和“北京指南”都明確提出:完善新工科人才“創意——創新——創業”教育體系,廣泛搭建創新創業實踐平臺,努力實現50%以上工科專業學生參加“大學生創新創業訓練計劃”、參與一項創新創業賽事活動,建設創業孵化基地和專業化創客空間,推動產學研用緊密結合和科技成果轉化應用。[2,3]鐘登華院士也指出,針對“新工科”關鍵任務中的“實踐與創新創業”,應改變工程實踐環境和工程實踐模式,通過創客模式、3D打印等新技術、新模式將真實世界的體驗融入工程教育。[4]因此,積極開展創新創業人才培養,改革實踐教學內容與教學手段,是新時代賦予高等工程教育的重要使命。
立足“新工科”背景下高等工程教育“應對變化、塑造未來”的建設理念,面向創新型工程人才培養目標,針對當前本科生在各類創新活動中必須具備基本知識與相關技術才能進行智能設備開發的需求,結合物聯網技術與各類產業深度融合的現狀,筆者所在學院于2018年初創建了“CPS技術與創客實踐”新工科實訓課程,探索如何為低年級本科生開展創新活動構建IT知識基礎。
本課程將信息物理系統(Cyber-Physical Systems,CPS)技術[5]作為現代物聯網系統開發技術基礎,以“創客教育”構建創新工程能力培養的解決方案,結合機器人與行業智能裝備研發產業背景,基于“Arduino/物聯網云”等開源技術開展實訓課程改革。CPS系統涵蓋感知、通信、計算、控制四個層面,因此對CPS技術的學習,不僅能讓學生深入了解以物聯網為核心的信息系統整體架構,而且有助于其深刻理解信息技術與新型工業的有機融合。此外,創客教育側重于創新能力與團隊協作能力的培養[6],能夠使學生在“自我創意轉化為現實”的創客過程中提升工程實踐能力。
目前,針對傳統非計算機類工科專業的IT技術教育,主要以“計算機文化基礎”與“C程序設計”課程的講授為主,難以滿足“新工科”教育體系的現實需求。另外,即使對計算機類專業的學生,目前的培養方案也很難保證大一新生能夠具備智能設備開發的概念、所需的技術以及一定的開發能力。大二和大三本科生是參與大學生創新實踐訓練計劃和本科創新活動的主體,但大部分學生不具備智能設備開發所需的技術和能力,導致他們很難實質性參與到各類創新活動中,最終只有少數優秀學生參與創新活動,難以實現“新工科建設路線”中規劃的50%以上工科專業學生參加創新項目與各類競賽的預期規模。針對上述情況,迫切需要打造一門面向低年級本科生開設的IT技術類基礎課程,以物聯網技術教育為切入點,結合工程實踐訓練,幫助工科學生構建新時代所需的IT技術基礎。
該實訓課程為2學分,教學內容包括CPS技術實驗和團隊創客實踐兩部分。CPS技術實驗環節主要進行Arduino開發技術以及物聯網云實驗(含C#客戶端開發)教學,在完成基礎技能訓練后,將學生分成學習小組(每組2~3名),以機器人與行業智能裝備為創新主題,引導他們自主構思課題,綜合運用單片機、物聯網云、客戶端開發技術設計解決方案,并通過搭建軟硬件環境,最終完成相關開發并展示實物開發結果。具體課程安排如圖1所示,其中Arduino開發建議12學時,物聯網云實驗建議8學時,團隊創客實踐建議12學時。

圖1 課程整體設計
為了避免與C程序設計內容重復并突出實踐應用背景,本階段通過設置一系列編程問題的方式進行Arduino編程教學,如聲控燈、溫控風扇等,旨在訓練學生快速掌握Arduino單片機編程方法,學會使用模擬/數字傳感器、控制繼電器/直流電機/舵機以及串口通信等。通過本階段的學習,學生可深入理解信息系統是如何感知物理世界以及控制物理設備的。由于Arduino具備簡單易用的特點,非計算機專業的學生也可快速掌握基本的物聯網技術。
在本階段教學完成后,教師設置了“小車走迷宮”測試項目,強化學生對傳感器與電機控制的綜合運用。例如,在下頁圖2所示的訓練中,地面放置一張2米×2米的地圖(由黃色PVC板拼接),上面用黑色膠帶標識出迷宮路線,小車前端安裝有三個灰度巡線傳感器,根據三個傳感器返回值的組合判斷出小車所處的位置,以此實現從起點到終點的自主尋路。該測試項目具有一定的趣味性和競賽性,學生可在娛樂中加強對知識的學習和運用。

圖2 小車走迷宮測試
物聯網云是當前物聯網終端接入信息平臺的主流模式,通過對現有幾大商用物聯網云在穩定性、開發友好性、使用規模、是否免費等方面進行比較,本課程在實訓教學中選擇了阿里物聯網云[7]作為教學載體。教學中首先講解阿里物聯網云的設備創建過程與MQTT(消息隊列遙測傳輸)接入方法,然后講解ESP8266無線模塊的開發要點,在此基礎上再講授基于MQTT庫的C#客戶端開發,最后學生進行單片機與阿里云之間的數據交互實驗。學生可通過遠程感知與控制實驗開發過程,深刻理解物聯網技術特點與優勢。
該實訓項目旨在訓練學生綜合運用下位機、物聯網云、遠程客戶端開發技術,結合自身專業背景,實現物聯網技術在各自專業中的實際應用。教師首先給定一個創新背景(如服務老齡社會的智能化應用等),然后學生團隊自主提出課題和設計解決方案,并做開題匯報答辯,之后通過團隊協作搭建軟硬件環境并完成相關開發工作,最后展示開發結果。
作為一門實訓課程,教學場地安排在專業實驗室,學生在聽課中同步進行實踐操作。在教學中2~3名學生為一組,教師根據教學任務為每組學生分配相應的學習套件,如在傳感器學習階段分配Arduino中級套件(含Arduino UNO開發板與20余種傳感器),在電機控制學習階段分配Romeo BLE多合一控制器(含電機驅動與藍牙模塊)與直流電機等。
物聯網云實驗是物聯網技術教學的關鍵,下面,筆者圍繞課程設計的阿里物聯網云實驗進行詳細介紹,供同類課程教師參考。
所需硬件環境(如圖3):FireBeetle ESP8266 WiFi開發板、輸入型傳感器若干(如溫濕度傳感器、光強傳感器、振動傳感器等)、LED燈模塊、電腦一臺。

圖3 物聯網云實驗設備
所需軟件環境:A r d u i n o IDE、VS.NET(用于C#客戶端開發)。
實驗原理(如圖4):FireBeetle開發板采用MQTT協議連接阿里物聯網云;在云平臺上創建兩個設備,一個對應FireBeetle開發板,一個對應C#客戶端,通過配置規則引擎實現兩個設備之間的數據交互;學生個人電腦上開發C#客戶端,同樣以MQTT協議連接阿里物聯網云。

圖4 物聯網云實驗設計
最終實驗效果:一是利用FireBeetle開發板實現各類傳感器所采集數據上云,經過數據轉發在C#窗體上顯示;二是通過在C#窗體上放置按鈕,可以控制FireBeetle開發板上所連接LED燈的亮滅。
在整個實驗過程中,學生需要完成以下實驗內容:
①學習阿里物聯網云的連接方式;②創建云上設備,完成規則引擎配置;③開發Arduino端程序,調用“PubSubClient”庫[8]收發MQTT消息;④開發C#客戶端程序,調用“M2Mqtt”庫[9],收發MQTT消息。
以下分別介紹每一步涉及的實驗要點。
第一,創建設備及規則引擎配置。阿里物聯網云上設備創建與常規物聯網云的操作類似,首先創建產品,再在產品之下創建設備,此處的產品是一組具有相同功能定義的設備集合。在設備創建后,會獲得設備證書,即(ProductKey、DeviceName、DeviceSecret)三元組,這三個數據將用于Arduino編程連接阿里物聯網云。圖5給出了阿里物聯網云上所創建設備的相關信息。

圖5 阿里物聯網云所創建設備的信息
每一個創建好的設備下均包含若干主題(topic),用于設備發布信息或者訂閱信息;如需實現兩個設備之間的消息通信,需要在阿里物聯網云平臺上為這兩個設備進行對應的主題配置轉發引擎,如圖4中所示。若FireBeetle開發板訂閱主題“/ProductKey1/DeviceName1/user/get”,C#客戶端發布主題“/ProductKey2/DeviceName2/user/update”,云上規則引擎需配置讀取設備DeviceName2的update主題,轉發至設備DeviceName1的get主題。
第二,Arduino程序開發要點。FireBeetle ESP8266 WiFi板是一款內置32位低功耗MCU、集成了TCP/IP網絡協議棧、具備HSPI/UART/PWM/I2C/I2S等豐富硬件接口的開發板,且兼容Arduino開發。該開發板主要包含兩部分——WiFi連接程序與MQTT通信程序,包括連接、接收、發送過程,其開發難點主要在于MQTT加密連接。
圖6 給出了物聯網云的連接參數:阿里物聯網的連接域名為${ProductKey}.iot-asmqtt.${RegionId}.aliyuncs.c o m,接入端口18 8 3。此處,ProductKey是設備注冊時的產品密鑰,RegionId一般選擇“cnshanghai”(華東地區)。在連接時,提供給阿里云服務器的驗證參數有三個:MQTT客戶端ID、MQTT用戶名、MQTT密碼。

圖6 阿里物聯網云連接參數
MQTT客戶端ID:是一個拼接字符串,常見格式為“設備的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=任意數字|”。securemode表示目前安全模式,可選值有2(TLS直連模式)和3(TCP直連模式);signmethod表示簽名算法類型,支持hmacmd5、hmacsha1和hmacsha256,默認為hmacmd5。
M Q T T 用戶名:格式為DeviceName+"&"+ProductKey,對三元組數據拼接即可獲得。
MQTT密碼:對DeviceSecret和MQTT客戶端ID進行hmacsha1計算獲得。
在上述參數構建完成后,即可將FireBeetle開發板連入阿里物聯網云進行數據收發操作。
第三,C#客戶端程序開發要點。這部分程序開發比較簡單,學生首先創建Windows Form應用,分別在窗體上添加連接阿里云和發送接收消息的按鈕和顯示文本框,然后分別創建相應的響應函數,主要借助了“M2Mqtt”庫。該庫是一個面向C#的開源庫,目前版本為4.5.0,庫里提供了完整的MQTT示例程序,包括hmacsha1簽名的計算、MQTT連接與數據收發,學生只需要把三元組數據代入程序即可,最終可以通過物聯網云實現C#客戶端程序對遠程設備的控制以及數據收發。
綜上所述,雖然整個物聯網云實驗主體均為軟件開發,但學生可在實驗過程中充分理解現代智能化系統普遍具備的遠程感知與控制功能,完成實驗后學生還會聯想到“如何實現遠程開燈/開門禁/開電器/開自行車鎖/遙控機器人/遙控小車等”。學生結合各自的專業背景,進一步開展頭腦風暴,大多數學生可以在“團隊自主開發”環節構思出良好的創新作品。
本課程自2018年春季正式開設以來,目前面向全校學過C程序設計的專業開設公選課(主要面向二年級本科生),2019年春季開設7個班,選課人數超過400人,教學效果獲得選課學生的廣泛好評,2019年秋季選課規模繼續擴大。目前,課程組前期已在學堂在線平臺建設了“移動互聯網開發”課程(雖然以移動互聯網開發為主,但也覆蓋了本課程的核心知識點),作為本課程Arduino基礎、C#客戶端與移動客戶端開發的線上教育資源,該在線課程選課人數超過1.4萬人。在此基礎上,2019年課程組在中國大學MOOC(慕課)上創建了“CPS技術與創客實踐”課程,加入了物聯網云教學與案例,為本課程系統性建設了線上視頻教育資源。自2020年春季學期開始到現在,已在中國大學慕課開設6個學期,共計29個慕課堂教學班,選課人數達人1296人。
作為一門新工科實訓課程,本課程創建了一套有效的創新實踐能力培養模式。通過CPS技術構建創新知識基礎,以創客教育作為創新工程能力的培養手段,讓學生系統性掌握開展創新活動所必需的物聯網知識與技術,進而引導學生以團隊方式進行創客實踐,圍繞某個創新背景自主提出問題、設計解決方案、完成開發任務,在自主實踐中提升自我創新能力與工程實踐能力。同時,本課程教學模式易于復制,可為國內從事創新工程實踐教育的高等院校與職業院校教師提供有價值的教學參考。