当前位置:首页 期刊杂志

以软硬件协同开发为向导的本科创新实践课程探索

时间:2024-05-09

高洪皓 陈章进 陈怡海 王镜杰

摘   要:程序设计课程以教为主,创新实践课以实操为主。文章以“搭建智能小车和控制系统”为创新实践需求,充分利用课上和课下资源,促使本科生将程序设计、机械自动化、通信等多学科知识点进行融合,强化基础课程和实现培养独立创新能力;将程序设计课程通过软件开发形式与硬件相结合,从问题中寻找解决方案,从应用解决方案中凝聚问题,提高学生的学习主动性和积极性。文章介绍了以软硬件协同开发为向导的本科创新实践,探讨计算机基础课程的创新人才培养经验。

关键词:软硬件协同开发;程序设计与多学科交叉;创新实践;智能小车和控制系统

中图分类号:G434 文献标志码:A 文章编号:1673-8454(2021)11-0082-04

一、引言

程序设计课程内容教学和教学时间相对有限,而本科生的编程能力也需要大量实践。创新实践项目能够增强课外实践动手能力,是提升“教与用”的有效方法[1][2]。针对创新实践课,近年来,各高校都开展联合大作业等形式促进本科生进行创新创业训练,将课程内容应用到实际问题,有效地提高了本科生对课程知识点的认识和深刻体会。程序设计课程实践包括开发软件和软硬件协同开发。对于后者来说要求较高,涉及学科也较多,如程序设计、通信、机械自动化等学科。

实践教学对于提升学生的实践应用能力和专业基础素养具有十分重要的意义[3][4]。一方面能丰富课程教学,让学生体会所学知识点能解决什么问题、所学知识能与什么现实问题相结合;另一方面,通过交叉学科的融合,让学生“大胆去想,小心去实现”,从知识点出发,解决功能开发问题和软硬件功能模块的继承,又通过软硬件协同开发回到知识点。智能小车项目将算法、想法和编程技能应用到实践中,所有开发的实物不仅“看得见、摸得着”,反过来还能检验学生所学的编程知识点。笔者认为这种教学改革的变化是培养创新实践精神的重要方法。

圖1给出了基于软硬件协同开发的创新实践课程。在实践开展之前,召集本科生组成团队,并鼓励学生勇于挑战新课题,树立实践目标。同时,按照实际工程方法,明确所需要开发软硬件系统的开发计划和开发需求。要求学生在一定的时间内理解需求,通过广泛调研和指导教师沟通,明确“做什么、怎么做”等问题。在创新开展过程中,按照项目既定计划分步实施,重点基于已学的程序设计知识,了解软硬件协同开发所需要的新知识,探索并自学与通信和机械相关的方法,尝试将其集成到智能小车项目中。在实践结束之后,及时总结并采用成果汇报方式将实践所学所感和成长故事进行分享,吸引下一批本科生参与。

本文介绍以软硬件协同开发为向导的本科创新实践课程经验。首先介绍如何进行实践课前动员,然后介绍智能小车项目的具体案例,最后探讨多方支持的本科创新实践将有助于强化创新创业教育与专业教育的深度融合。

二、实践课前动员

1.鼓励学生积极参与

大学本科生思维开放、想法多元,处于最具有创新想法的阶段。创新与实践能够相互促进,有想法不去实践是非常可惜的。一方面,本科生自己有想法,但是实际知识和动手经验不足,导致放弃;另一方面,本科生对自己的想法不太自信,不知道是否可以实现,对项目实施不抱有希望。另外,本科生还容易产生畏惧心理,需要鼓励其参与到课程导师的课外项目中去,大胆实践并勇于试错。

在以软硬件协同开发为向导的本科创新实践课程中,也存在一些问题:①学生很有兴趣,但是参与人数不多;②项目初始阶段报名人数很多,随着项目开展,退出也很多。因此,需要课程导师在项目实施前大量动员并鼓励学生。创新实践可以成功,也允许失败,鼓励本科生勇于尝试,能提高本科生创新实践的信心。

2.以团队形式开展

以2~3人组成团队并设置不同分工,有侧重点地安排软件模块、硬件组成模块、通信和数据模块。这种分组有助于项目团队协作,避免出现“单打独斗”的情况。当然,对于能力突出的本科生,也可以单独安排一组。

实践项目开展过程中,相关技术指导还需要课程导师来把关。从程序设计、通信技术、机械原理等知识的角度给予实操指导。因此,一方面,导师需要定期和团队见面,讨论和检查进度,防止一些学生消极怠工;另一方面,高年级本科生和研究生可以参与指导,以朋友的身份参与,可以与学生更好地进行沟通。

没有实践环境的支持,就无法实现创新想法。为了给本科生提供相关资源平台,可使用导师的项目经费,资助购买无线模块、驱动马达、履带和移动电源等耗材,支持搭建硬件平台;还可通过导师权限,申请学校云主机和数据库服务器,支持搭建软件平台[5]。

三、项目实施案例

以程序设计课程教师团队为基础,上海大学计算机基础教学研究室从2016年开始实施以软硬件协同开发为向导的本科创新实践项目。该项目得到全国高等院校计算机基础教育研究会和谷歌信息技术(中国)有限公司产学研合作等课题的资助。本文以功能设计实现为主线,介绍智能小车的开发过程。

1.开发目标

智能小车的开发需求为:自主开发设计一款能用于巡查实验室环境,并通过传感器来判断实验室中是否有火灾、漏水等情况的发生,帮助学校管理人员及时发现和预防灾难的智能小车。如图2所示,该项目需要本科生分组完成后,再讨论需求,明确所需要完成的硬件搭建任务和软件开发任务。包括几个问题点:①如何通信、如何进行无线通信;②如何进行控制、采用什么语言进行程序设计;③如何进行数据收集和存储以方便后期展示、如何进行数据预警;④如何实现按照实验室路径进行巡查。

项目团队拟采用Arduino进行无线智能小车搭建,通过搭载各种传感器(火焰、温度等),实现实验室自动化巡查,定时收集实验室内各种环境数据。具体技术选型包括:①使用Arduino对Raspberry Pi进行拓展,通过USB向Raspberry Pi传输传感器数据;②基于Raspberry Pi搭建一个小车的基础通讯平台,使用MQTT协议与服务器通讯;③使用QT平台编写用户端应用,用以对小车进行控制,并且可以实现跨平台部署。

2.Raspberry Pi与Arduino的通讯

图3为项目团队搭建的无线智能小车实物原型图。团队使用了Arduino对树莓派Raspberry Pi进行拓展,其中Arduino控制机械马达转动,所有传感器都与Arduino连接,并定期上报数据给树莓派Raspberry Pi。而树莓派则完成数据发送任务,减轻Raspberry Pi端直接处理数据的压力。

3.协议通讯设计

在进行充分的技术调研后,项目团队决定采用消息队列遥测传输协议MQTT进行数据传输。MQTT协议具有轻量、省带宽以及QoS等特性,是一种专为IoT设备设计的轻量级消息通讯协议。借助“百度智能云天工物联网平台”作为MQTT消息的中转服务器,与用户端应用和小车进行通讯。如图4(a)所示,数据通信借助百度的“物模型”和“物影子”概念,将小车的基础数据结构打包成模型,作为固定格式产生多个对应于小车数据实体的影子,有助于实现部署多个小车的需求,也方便进行模块化安装。图4(b)为数据展示效果。

4.数据发布与接收

MQTT协议包括发布者(Publisher)、代理(Broker)、订阅者(Subscriber)。发布者是指将某一数据进行上报的一方,而订阅者则是接收发布者上报数据的一方。MQTT传输的消息分为主题(Topic)和负载(payload)。负载是消息真正的传递内容,而主题可以理解为消息的类型。只要有订阅者订阅消息,该订阅者就会及时收到该消息的负载。

项目团队将智能小车设置为“发布者+订阅者”双模式,因为既需要及时收到小车检测到的相关数据,也需要下达指令操纵小车的行进轨迹。同时在小车端,既需要及时收到用户的相关操纵指令,也需要上报各类传感器数据。对MQTT的主题进行拆分,在智能小车端使用两个线程发布和订阅主题,方便了开发工作的进行。针对特殊的自主循迹功能,小车在接到循迹指令后,可以放弃自己的部分订阅者身份,以能够专心进行循迹工作,直到用户发出手动控制行进的指令。

5.循迹的实现

在智能小车上使用两个红外传感器来实现循迹功能。黑色物体理论上可以吸收一切光线,区别于其他物体可以折射部分光线。因此可以选用黑色轨道进行循迹,当红外传感器在黑色轨道上方时,将无法接收到自己发出的信号;反之,则可以接收到,用此来判断小车是否在预定轨迹。最后,团队采用两个红外传感器实现二路循迹功能。图5为小车循迹实物图。

四、创新实践过程中的多方支持

我校任课教师指导学生竞赛,积极推行大学生创新项目的团队培养,招收有兴趣的学生,并根据创新实践成果,推荐学生参加上海市及全国大学生计算机设计大赛。该项目自2016年持续开展以来,已有十多个团队顺利完成课外实践项目,已获得多项计算机类竞赛的奖励[6]。

该项目指导部分本科生、研究生开展大学生创新创业项目,部分优秀项目被立项。同时挖掘学生的潜力,引入项目实践课作为补充,鼓励学生参与到项目和竞赛,充分调动本科生学习计算机的主动性和动手操作的热情。

通过“产学研”合作,提供合作企业的云主机来支持学生的创新项目,同时开放智慧教室给学生进行竞赛项目研讨。指导部分本科生参与企业实际课题开发,实现“打基础”和“重实践”的衔接。

五、总结与展望

大学生创新实践的培养应该以基础知识为主,通过实践项目提升实操能力[7]。智能小车项目以软硬件协同开发为向导,以学生为中心,积极指导学生进行课外创新项目,使得学生对计算机编程课程充满兴趣,同时提升了自我价值。这一过程涉及程序设计、机械自动化、通信等多学科知识点的深度和广度融合。该项目可以作为程序设计相关课程的参考,在教学内容和教学手段上进行尝试,让本科生动手实现“看的见摸得着”的硬件来体会软件编程知识点,是另一种形式的“翻转学习”。

参考文献:

[1]黄陈蓉,张建德.校企深度融合的计算机应用型人才培养模式探索[J].计算机教育,2017(6):14-16.

[2]李辉.大学生创新能力培养中的创新实践教育平台建设[J].中国大学教学,2013(9):83-85.

[3]姜代红,任春美,程红林.谈计算机科学与技术创新型应用人才培养的实践教学体系建设[J].现代教育科学,2010(S1):30.

[4]周震.地方高校“2+X”应用型人才培养模式的实践探索[J].中国高等教,2019(20):46-48.

[5]高洪皓,单子鹏,陈章进等.云实验室在大学计算机基础实验教学中的应用[J].电气电子教学学报,2016(5):130-133.

[6]高洪皓,刘安康,邹启明等.面向软硬件融合的Arduino机械控制小车课程实践研究[J].计算机教育,2019(1):76-79.

[7]彭强,杨燕,张翠芳.计算机专业大学生创新能力培养的探索與实践[J].计算机教育,2009(13):19-20.

(编辑:王晓明)

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!