面向新工科的Python物联网硬件编程教学设计研究

2019-02-26 06:45王德志梁俊艳
计算机教育 2019年12期
关键词:微控制器工科计算机专业

王德志,梁俊艳

(1.华北科技学院 计算机学院,河北 廊坊 065201;2.华北科技学院 图书馆,河北 廊坊 065201)

0 引言

从2017 年2 月以来,新工科教育成为当前高校教育改革的一项重要目标。新工科的核心思想是让传统的非计算机专业,结合计算机专业的特点,利用计算机技术与传统专业高度融合,培养具有能够利用计算机思维方式解决专业问题的人才,产生出新的创新成果[1-4]。在当前以物联网、大数据、云计算、移动通信、人工智能为代表的计算机发展新方向都脱离不开软件编程,因此新工科人才培养的一个重要能力是软件编程能力提升[5]。物联网技术作为近年发展的新兴专业,由传统的认为“传感器+无线通信”,逐渐发展到多学科的交叉应用,人工智能、大数据等都不断地融合应用到物联网中。物联网技术也应用到越来越多的传统行业中,例如交通、机械制造、电气工程等。而在此背景下,新工科人才的培养中,如何把物联网技术与软件编程有机的融合在一起,成为一个需要研究的问题。

1 现有物联网硬件编程学习的问题

物联网技术学习设计的知识体系较多,其中硬件编程的学时是基础也是较难的内容之一。对于物联网硬件编程主要设计的知识包括硬件电路知识、软件编程知识和数据通信知识等。传统的教学方法是把上述知识点分解到不同的课程中,虽然为学生打下了良好的基础根基,但是也存在一些问题。

1.1 硬件学习难度高

物联网的硬件知识涵盖了电路基础、数字电路和模拟电路等,对于计算机专业学生需要系统地学习相关知识,才能够进行硬件的选型、设计与开发,重点在于让学生掌握硬件设计的知识,能够独立设计开发硬件电路。而对于非计算机专业的新工科教学,硬件的学习重点在于让非计算机专业学生理解硬件的设计思想,能够看懂基本的硬件技术参数,能够根据硬件技术参数进行产品的选型,而不是从最基础的硬件电路设计开始。这是两者最大的区别。因此,原有的硬件教学方式不适合新工科人才能力的培养。

1.2 编程语言学习种类多

物联网硬件的编程语言可以涉及多类编程语言,从底层的汇编语言,通用的C/C++语言,一直到高级的Java 或.NET 编程语言等,都可以应用到物联网设备编程中。虽然编程的语言种类不同,但是在物联网应用中不同的语言都可以实现一些基本相同的硬件编程功能。例如TCP/IP 通信、串口通信等。对于计算机专业的学生,由于今后的工作需要在不同平台上进行软硬件开发,因此需要全面掌握从底层到高层的各类编程语言。而对于新工科的非计算机专业学生,重点在于如何通过软件编程来实现物联网的硬件功能。在实际工作中应用软件编程的平台相对稳定,因此在编程语言学习方面,可以减少学习语言的种类,通过学习一到两种编程语言来解决实际工作的问题即可。

1.3 非计算机专业学习重点不突出

物联网技术本身就是近年新发展的一个交叉学科,融合传感器、无线通信、嵌入式系统开发和软件开发技术等多门技术。其专业人才培养方面,知识覆盖面广、难度深,是一个相对较难学的专业。对于新工科人才培养知识体系,如何培养非计算机专业人员具有“物联网思维”方式是其中一个难点问题。原先在大学的本科教学体系中,非计算机专业学生主要通过“大学计算机基础”和“程序设计语言”这两门课程培养“计算思维”,而没有过多地强调“物联网思维”方式。“计算思维”偏重于通过软件编程方式解决问题,例如数据分析、逻辑控制等。而“物联网思维”则是通过考虑应用“硬件+软件+数据”的方式来解决问题。如何在新工科的人才培养中利用有限的教学时间,突出“物联网思维”能力的培养成为一个难点。

2 Python语言硬件编程学习的优势

Python 语言是20 世纪90 年代初诞生,在近年由于大数据和人工智能的发展,而得到快速发展的一种脚本解释语言。从2018 年9 月开始第一次进入TiOBE 指数前3 名,一直保持在前3名中,而且热度还在不断提升中。Python 利用自身“后发”的优势,融合前期传统成功编程语言(例如C/C++、Java)的优点,在计算机各个领域中都崭露头角,例如Web 编程、数据分析、人工智能、自动化运维等领域[6-8]。Python 语言在物联网硬件中的应用,近年也在不断地发展,涌现出不同的技术分支。从应用标准Python 库进行硬件编程,到针对特定硬件衍生的不同嵌入式Python 版本,在物联网中应用的方案越来越多[9-10]。

2.1 Python在物联网中运行版本

Python 在物联网设备开发中,目前主要分为两类方向,如表1 所示。一类是基于标准Python库,以“嵌入式硬件+Linux 操作系统”为平台为基础,在Linux 上开发Python 程序,驱动硬件工作;第二类是基于嵌入式Python 库,一般是第三方开发的扩展Python 库,在特定硬件平台上开发Python 程序。

目前,发展比较好的是基于树莓派的Python、MicroPython 和Zerynth。其 中Zerynth的发展方向偏重于商业化发展,需要专用的开发平台、专用云代码存储等,开源性不强,用户可发挥的空间有限。而基于树莓派的Python 和MicroPython 的发展是基于开源的思路,由第三方贡献了大量的开源功能库,具有丰富的硬件驱动库,支持的硬件设备丰富。其中树莓派平台由于其支持高运算频率和超大存储空间,一般应用在高端的视频图像和复杂数据处理中。而MicroPython 由于其硬件平台的低功耗、体积小和高性能特点,一般应用在物联网底层的数据采集与传输环节中。

表1 物联网开发应用Python版本

2.2 MicroPython的技术特点

MicroPython 是由英国剑桥大学教授Damien George 花费6 个月时间开发的,并于2014 年在KickStarter 众筹网站上推广,从而得到广大用户认可的开源平台。MicroPython 本身使用GNU C进行开发,最早在意法公司STM32F4 微处理器平台实现了Python3 的基本功能,拥有完善的解析器、编译器、虚拟机和类库等。通过不断发展,现在已经提供了丰富的传感器和硬件驱动库,例如LED、液晶、舵机、SD 卡、UART、I2C 和SPI 等。支持的硬件平台也在不断扩展,现在已经可以移植到STM32L4、STM32F7、ESP8266、ESP32、micro:bit、MSP432 等众多硬件平台。其经典的基于STM32F4 的pyboard 硬件平台开发板,如图1 所示。

图1 pyboard开发板图

MicroPython 的体系结构采用如图2 所示的方案。它由微控制器(系统底层)硬件、Micro Python 固件和用户应用程序3 部分构成。硬件和固件是最基础的部分,不同的硬件对应不同的固件,也是相对不变的,而用户程序可以随时改变,可以存放多个用户程序到系统中,随时调用或者切换。

图2 MicroPython体系结构图

2.3 利用MicroPython进行新工科教学的优势

2.3.1 屏蔽硬件的异构性

由MicroPython 的体系结构可以看出,用户在调用系统的硬件资源时,由于存在中间固件库的屏蔽,对用户而言,不需要过多了解不同硬件设备的具体驱动方式,只要掌握固件库对应的硬件接口函数使用方法就可以直接驱动硬件工作。这样,在教学环节中就可以有效降低对不同微控制器功能讲解的难度,只要进行微控制器基本功能讲解就可以。例如不同微控制器均具有通用型串口模块,传统的授课方式需要讲解每种微控制器串口模块控制寄存器的不同初始化方法,需要学生记住不同配置寄存器每位不同状态代表的含义,难度较大。而应用MicroPython 固件库调用,只要理解固件库中串口的初始化函数,即可使用串口。例如利用串口间隔1 秒循环发送“hello world”给PC 机,代码如下所示。

从上述代码可以看出,基于MicroPython 进行硬件开发能够屏蔽硬件的异构性,用户只要掌握基本硬件驱动函数的使用方法,就可以快速完成硬件功能的实现。

2.3.2 硬件驱动库的丰富

MicroPython 提供了丰富硬件驱动库,根据其支持的硬件主要分为两类。一类是微控制器自身包含的硬件接口功能的支持,如STM32F4微控制器包含的通用型输入/输出端口、串口、I2C、SPI、ADC、DAC、硬件定时器、硬件外部中断等。另一类是外接常用硬件模块的驱动,如惯导模块、ESP8266WIFI 模块、OLED显示模块、红外接收模块、DHT11 温湿度模块、LCD1602 液晶模块等。由于MicroPython 采用开源模式,不断有新的第三方硬件模块驱动添加到硬件驱动库中,极大地扩展了MicroPython 的应用范围。

2.3.3 软件编程的简单化

采用MicroPython 提供的硬件驱动库,能够极大地减少程序的代码量。以DS18B20 温度传感器为例。这是一种常用的温度采集传感器,它采用单线双向通信模式。通过在一个GPIO 端口进行命令的输出和数据的输入,采用不同时序的控制,实现工作模式的配置以及实时温度的采集。由于需要频繁地切换GPIO 端口的工作模式,传统C 语言的硬件编程具有一定的复杂度。而采用MicroPython 的硬件驱动库,能够极大地简化代码量,如下所示。

从上述代码可以看出,硬件驱动库中的函数已经完成了基本的硬件初始化、数据采集、数据转换等功能,用户只要调用相应的函数就可以实现应用功能开发,极大优化了代码量。

2.3.4 编译平台的通用性

在嵌入式物联网硬件编程中,传统的方式是交叉编译方式,在PC 机上编写源代码,然后利用特定编译平台编译为嵌入式微控制器可执行代码,然后通过网络或专用调试端口下载到微控制器中。源代码从编写一直到下载执行需要多个工具平台的支持,带来了一定的使用难度。而Python 语言是一种解释脚本语言,MicroPython很好地利用了这一特点。在MicroPython 的固件库中,除了集成常用的硬件驱动之外,还包含了解析器、编译器和虚拟机。对于用户应用程序,只需要利用通用型文本编辑器编写main.py 主程序,然后通过串口或调试端口把.py 文件下载到微控制器的Flash 中即可。由固件库中虚拟机负责完成源代码的解析、编译和执行。这样就减少了交叉编译的环节,降低了对交叉编译工具的依赖性,提升了程序调试的方便性。

3 基于MicroPython的物联网编程教学设计

对于非计算机专业学生学习Python 语言硬件编程是一项很有挑战性的任务,不同的专业背景,思维方式也不尽相同。为了提升学生学习物联网技术的兴趣,达到较好的教学效果,需要从多个方面进行教学设计,体现出MicroPython 在物联网硬件编程中的特点,从而激发学生学习物联网技术的热情,培养“物联网思维”的方式。

3.1 授课内容

基于MicroPython 的物联网硬件编程教学授课可以融合在Python 语言的授课中,也可采用独立授课的方式。教学内容主要涵盖了标准Python 语言的基本语法使用方法和MicroPython特定教学内容。授课内容的框架如图3 所示。

图3 MicroPython授课框架图

对于MicroPython 部分的教学内容,侧重硬件案例讲解,每一个硬件完成一个特定的应用功能,并可以结合已经学过的硬件构成综合案例。例如LCD1602 液晶模块案例,可以与前期的温湿度传感器结合,利用液晶模块实时显示采集的温湿度值,同时可以结合输入开关功能,实现对系统的启动、关闭、重启和参数调整等功能。通过不断引入新的硬件设备,不断丰富案例的内容,最终形成一个具有物联网特色的应用案例。

3.2 授课方式

由于MicroPython 授课涉及硬件、软件和平台等多方面的内容,在有限的学时内都进行详细讲解有一定难度,因此,可以结合慕课教学的优点,采用“慕课+理论+实验”的方法。把基础介绍性的、需要记忆和频繁操作的内容放到慕课教学中,例如pyboard 开发板功能介绍、pyboard开发板连接方法、代码下载与运行方式等放到慕课中。采用课前学生预习、课上教师实操演示、课下学生利用慕课复习巩固的方式,便于学生记忆和操作。对于需要分析和理解的内容,例如常用硬件接口参数配置方法、硬件驱动编程案例等,采用理论授课和实验相结合的方式。通过教师课上深入浅出的理论与案例讲解,让学生理解MicroPython 硬件驱动编程思路和框架。通过实验让学生实际动手编写代码驱动硬件工作,从而掌握利用MicroPython 实际硬件编程的能力。

3.3 考核方式

当前,在教学改革中,对于考核方式推荐使用过程量化考核,避免一卷定分数的僵化模式。在MicroPython 的教学中,一方面侧重于“物联网思维”的理论培养,另一方面也要强调实际软硬件综合编程实操能力的培养。因此,在考核方式上,可以采用项目综合评价方法。在授课开始的时候,就让学生构思一个基于MicroPython 的硬件编程项目,在授课的过程中,让学生不断完善这个项目内容。通过每次实验,完成项目的一定内容。最后在课程结束时,提交一个综合性具有一定应用价值的设计项目。

通过每次实验的检查,监督学生项目的进度,并及时了解学生的学习情况,及时调整教学进度和教学内容。通过项目的技术文档考核学生理解和掌握的理论知识水平,通过项目代码与功能演示考核学生实际软硬件编程操作能力。通过教学中对项目进展的跟踪,避免在最后项目评价时的误判,给出合理的考核结果。

4 教学效果评估

从2018 年4 开始,教学团队在“程序设计语言(Python)”和“物联网底层程序设计开放实验”中进行MicroPython 教学授课示范工作。截止2019 年7 月,共5 个非计算机专业,学生115人次参加了相关课程的学习。授课结束后,对学生进行了匿名电子问卷调查工作,共有109 学生参与。调查结果如表2 所示。

表2 教学效果评估表 %

从表2 中数据可以看出,学生对于课程整体效果比较满意,其中满意度最高的是案例和考核方式,相对较低的是教材和授课内容。经过课后座谈讨论反馈,在授课内容方面,学生认为知识很新,很有创新性,但是知识学习偏难,知识点内容较多,授课学时较少,导致需要花费大量时间进行课下的学习和实践操作。在教材方面,由于讲授的知识点较多,没有非常符合教学内容的教材,因此采用“教材+讲义+参考书”的方式让学生学习,学生需要学习多本教材或参考书,把握不住重点。在考核方式与学时分配上,学生比较满意,能够满足大多数学生的需要。

5 结语

新工科人才培养,既是一次机遇,也是一次挑战。不论对学生来说,还是对老师而言,都需要面对全新的教学内容和教学方式。利用MicroPython 语言开展物联网硬件编程学习,拓展了Python 语言在教学中的应用范围,为新工科人才“物联网思维”方式的培养探索了一条途径。但是MicroPython 的教学工作还需要进一步完善教学体系,优化教学内容,建设满足授课需求的教材和授课案例。只有在实际教学工作中,联系学生实际情况,不断地改革与创新,才能使新工科人才的培养满足社会的真正需求。

猜你喜欢
微控制器工科计算机专业
中粮工科机械技术(无锡)有限公司
“新工科”和OBE模式下的车辆工程实践课改革
新工科背景下计算机专业创新创业人才培养探究
高职计算机专业教学中融入课程思政的实践路径
中职计算机专业产教融合混合式教学研究与实践
新工科下创新型人才培养的探索
新工科背景下项目推动式教学模式的探索
互联网+环境下的高校计算机专业课堂教改现状及建议
TASKING针对英飞凌第三代AURIX微控制器推出多核开发环境
用于高品质电动汽车的分布式并行计算