高伟 朱轶 申屠浩 熊书明 江苏大学计算机科学与通信工程学院
“新工科”教学改革是当今中国高等教育的主旋律,而创新创业人才培养是“新工科”的一项重要建设任务。[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技术构建创新知识基础,以创客教育作为创新工程能力的培养手段,让学生系统性掌握开展创新活动所必需的物联网知识与技术,进而引导学生以团队方式进行创客实践,围绕某个创新背景自主提出问题、设计解决方案、完成开发任务,在自主实践中提升自我创新能力与工程实践能力。同时,本课程教学模式易于复制,可为国内从事创新工程实践教育的高等院校与职业院校教师提供有价值的教学参考。