面向软硬件融合的Arduino机械控制小车课程实践研究
2019-01-23高洪皓刘安康邹启明陈章进
高洪皓,刘安康,邹启明,陈章进
(1.上海大学 计算中心,上海 200444;2.上海大学 理学院,上海 200444 )
0 引 言
科技创新不仅仅是科研能力的创新,而且还需要人才培养的创新。近年来,高校工科教学以专业培养形式独立发展,或是计算机专业,或者通信专业,或是机械自动化专业,都在当下互联网、人工智能、大数据等热门智能科学方向上优化人才培养方案。但是在跨学科的创新项目实践中,部分教师深感缺少跨专业或者跨学科融合的教学改革内容[1-2],部分学生对交叉知识缺乏系统学习致使项目无法顺利开展。因此,如何进行多学科跨专业的人才培养一直是我们教育改革的出发点和目的地。这一点正和教育部当前大力推行的新工科建设目标相吻合,重点关注跨学科融合以及创新能力的提升,促进工程领域和专业人才培养[3],为本科生打下良好的工科基础知识。
大学计算机基础教学以培养本科生计算机应用基础软件的能力为目标,培养本科生掌握部分编程语言,具有较扎实的专业基础理论和较强的实践动手能力,能用计算机技术处理和解决现实问题。随着硬件技术不断发展,计算机核心技术越来越集中在硬件层面的程序设计上。大学生的计算机能力培养和创新创业能力培养需要考虑软硬件融合[4]问题。一方面,在计算机基础教学改革中考虑开设相关软件课程,以软件创新应用和定制开发为切入点,结合硬件特点和机械特征,围绕编程语言如何控制机械硬件这一问题开展教学和实验;另一方面,物联网相关创新项目的开展则是检验大学生计算机基础教学质量的重要手段,以项目制形式开展创新研究,培养学生的实际编程和硬件控制指令协同开发的能力。
1 培养方案
1.1 课程目标
软硬件融合的教学改革目标是教授基础软硬件理论知识和基本技能,培养能进行软硬件协同设计和开发的人才,通过编程语言编写相关管理软件,控制机械硬件实现目标既定任务。此外,还包括思维能力的培养,而其中又应以思维训练和创新能力培养为核心,即从课外创新项目设计的要求角度来实施,通过分组和团队合作形式完成相关软硬件设计、开发、测试等一系列流程。
在知识点层面上,教学改革将使学生掌握Android语言的基本语法,了解算法设计的概念以及掌握一些常用算法,会使用开发工具进行Android语言编程并在Android硬件板上进行调试和测试。通过将各种传感器和Android结合的形式,了解传感器数据传输模式和Android工作原理,能设计相关软件硬件方案去解决实际问题。
在创新能力培养层面上,教学改革将开展课外创新项目,以项目制为导向开展团队合作和研发。就针对具体项目需求,要求学生能够进行问题分析,提出相关软硬件结合的解决方案。在规定创新项目时间范围内,进行软硬件集成研发,编程相关控制软件实现目标功能。
1.2 课程内容
Arduino课程的先修课程包括C和C++的基础知识,而Arduino板卡能够读取来自不同传感器的模拟信号或数字信号并将其转换为输出,同时通过Arduino IDE向Arduino板上的微控制器发送一组指令来控制板功能。在教学过程中,可以 考 虑 Arduino Uno R3、Arduino Leonardo5V、Arduino Mega 2560 R3等型号。Arduino课程教学内容和教学进度见表1。
Arduino课程教学内容主要分为基础阶段教学、进阶阶段教学和创新阶段教学3个不同层次的教学水平。在基础教学阶段主要任务是回顾编程语言特性,结合Arduino语言介绍程序结构、控制语句、函数、字符串、数组、函数库等方面内容,通过这些知识点的学习使得学生初步掌握Arduino语言编程。在进阶教学阶段,主要是结合Android硬件特点,介绍脉冲宽度调制、中断、通信、串行外设接口,以及LED灯的设计和控制等方面知识点,通过这些知识点的学习使得学生能编程指令程序并在Arduino硬件上进行调试和测试。在创新教学阶段,主要介绍传感器、电机控制和通信方面的知识,重点在讲授这些知识点后,通过实验加强学生对这些硬件的认识并培养学生应用开发创新的思维。
1.3 改革手段
图1所示为课程教学过程,采用语法教学和硬件调试相结合方式进行授课,开设实验室课程并以小组形式开展实验内容。此外,以项目制形式布置相关软硬件设计开发需求,要求学生以团队形式进行创新实践。
图1 课程教学过程
表1 Arduino课程教学内容和教学进度
课堂教学方面,以编程案例为重点,运用Arduino IDE编程工具进行现场编程并调试硬件,分以下几种类型:① 语法方面教学,通过改错题方式进行比较分析和说明,对难点语法和容易出错语法进行重点讲解,并提问学生,以学生思考为主;②算法类编程,以实际现象或题目为问题点,抛出想法,引导学生从多个不同角度来完成程序编写。
实验能力方面,以预先设定应用开发类编程为主,以模块化为指导,让学生分组完成模块并理解模块的调用关系,掌握模块化程序设计的技巧。此外,在实验开展过程中,组织研究生助教团队参与,一方面助教参与讨论解决软硬件问题,提高学生参与项目的信心;另一方面监督学生分组完成实验,避免学生在分组中出现任务分工不均衡的现象。
课外项目制方面,包括发布地理定位与地图展示、基于蓝牙的文件传输、移动点餐系统,课堂测验系统等创新项目需求,以小班研讨形式组织团队就需求进行设计和程序编写。通过每周汇报一次,每次汇报以公开展示形式进行,其他小组成员均可对其进行技术提问和创新点提问。同样,组织研究生助教参与课外项目实施过程,使用智能触控白板进行互动研讨,保留研讨痕迹以及研讨结果。
在成果验收方面,针对项目制开展的团队大作业,要求验收考评演示。演示时采用答辩形式,由各小组同学边演示边讲解编程思路。邀请教学专家组成答辩委员会,根据专家打分给定成绩。
2 项目制实践
为了实现一款面向智慧校园的机械控制小车,使其能够满足夜间无人巡查,并通过传感器收集实验室环境信息,将涉及地理位置定位、环境数据感知等问题。研究内容包括:①组装机械小车。在小车上部署相关传感器和摄像头,通过Wifi模块实现远程视频传输,将智能小车所经过线路上的环境信息及时上传服务器。②实时处理温度传感器、湿度传感器、有害气体传感器、火焰传感器回传的数据。③对反馈数据进行监控并对可疑的、高危的数据进行警报以提示管理员。
图2所示为项目制实践开展的流程,将项目开展过程分为项目前、项目中和项目后3个阶段。其中项目前主要包括选课宣传让学生有兴趣选择软硬件融合的相关课程,在教学过程中选择能力拔尖或自愿参加项目的学生组成相关小组,同时进行头脑风暴式讨论、专题讨论会、座谈小组等形式开展面向智慧校园的机械控制小车项目的讨论活动,充分体现学生在项目实施中的主体性、能动性。这一阶段解决做什么的问题,明确项目需求以便后续项目实施。项目中则是融合教学和课外项目两个内容,一方面通过课程讲解让学生学习相关理论和开展课程实验,一方面需要项目小组进行项目架构设计,同时针对项目需求综合考虑并选择相关硬件。在技术实践过程中,组织研究生助教参与项目指导,沟通技术难点。这一阶段解决怎么做的问题,使得项目能顺利实施和开展。项目后则是对项目进行演示和公开答辩,这一方面要求学生在全面完成项目需求的基础上能表达出项目实施过程中的核心点和经验,另一方面也帮助学生意识到软硬件融合课程不仅仅包括软件和硬件开发而且相关文档资料也是项目的重要内容。
图2 项目制实践开展流程
学生创新团队针对上述需求,考虑到IPv6支撑环境,在综合思考和讨论后设计并给出了相关方案:提出集成Arduino与CC2530的开发实现电机控制,采用通过6LoWPAN协议实现数据的双向传输,包括控制端向Arduino发送控制指令,并驱动马达运转以控制小车的运动。通过Wifi协议将摄像头采集的数据传输到控制端。
在软硬件协同开发阶段,创新团队从机械小车组装到控制软件开发,从控制指令到指令双向回传,从测试数据到真实环境等一系列过程中得到了锻炼。最后,实现了无线远程控制小车以及实时回传数据的目的。加载在Arduino板子上的ZigBee模块CC2530,负责将传感器获得的实时数据发送到监控主机,同时将监控主机的动作指令信号发送至控制马达电机从而实现小车方向控制。图3所示是面向智慧校园的机械控制小车的小车原型。创新团队学生参加2017年国家和上海市各级别的计算机课外比赛,并在2017年第四届海峡两岸大学生创新创业大赛中获得亚军的优异成绩。
图3 Arduino机械控制小车原型
3 结 语
大学生创新创业能力的培养是本科教育阶段人才培养重要的课题。上海大学计算中心在2012年开展了计算机基础教学改革[5-6],开设相关软硬件编程类课程、互联网+应用软件课程等。同时,积极推行大学生创新项目的团队培养,一方面致力通过项目制形式招收有兴趣的学生,另一方面通过项目的开展促进学生参加上海大学/上海市/全国大学生计算机设计大赛。面向软硬件融合的课程改革将是计算机基础教学改革的重要方向,也是新工科建设的一次重要探索。虽然改革目标相同,但是各高校需要根据实际情况设计项目方案和实施项目计划。