基于Arduino图形化编程的教学应用研究
作者: 庞广富 余鹏 杨梅生
摘要:单片机课程是高职工科类专业不可或缺的基础课程,鉴于非电子信息类专业单片机课程学时少、前置课程体系不完整等教学实际,笔者开发了基于Arduino图形化编程的系列教学案例,归纳总结了认知Arduino基本功能的教学应用模式、综合设计类教学应用模式和Mixly图形化编程开发者模式,有效激发了学生学习兴趣,改善了课堂教学效果。
关键词:图形化编程;Arduino;Mixly;单片机教学
中图分类号:G424 文献标识码:A
文章编号:1009-3044(2022)09-0134-02
1 开源的Arduino
Arduino源于意大利一所交互设计学院师生团队共同研发的开源项目。Arduino诞生之初,开发团队就采用Creative Commons(CC)的授权方式公开硬件原理图、IDE软件及核心库文件,Arduino开发者可以更关注电子设计的创意与实现。
Arduino主要面向没有编程背景的电子创客,它实现了硬件和软件分离,而且软件部分也成功将底层驱动代码和应用代码隔离,还对部分外围模块的初始化函数进行了二次封装,用户仅需一些简单的C/C++编程知识即可实现逻辑控制。但是,这对没有系统学习编程语言和不熟悉函数库的初学者依然是不小的挑战。
2012年6月,谷歌发布可视化编程平台Blockly,并提供图形化编程库,程序员可以基于官方库开发各种图形化编程软件。例如,北京师范大学傅骞团队基于谷歌 Blockly核心开发了支持Arduino的图形化编程软件Mixly,Mixly支持对比查阅图形块及其对应的源代码,支持开发者私人定制第三方库,特别适合没有编程基础的初学者。本文将研究Arduino在Mixly平台的图形化编程教学应用。
2 Arduino图形化编程软件Mixly
笔者选择Mixly作为Arduino图形化编程平台用于教学的原因有:首先,Mixly支持常规单片机所有功能如I/O操作、PWM、串口协议等;其次,Mixly内置Google Blockly图形块编程引擎,拖拽图形块搭建程序代替复杂的汇编语言、C语言,增加了学习的趣味性,降低了编程的门槛。再次,Mixly有十六个功能模块,每一个功能模块的图形块用不同颜色,有效提高图形化程序的可阅读性,而且Mixly的复合图形块支持填充默认参数,人性化地减少用户操作次数。此外,Mixly在功能设计上兼容Arduino IDE,可以方便用户选择图形化编程视图或者代码视图,程序员可以直观地对比图形块和文本程序的解析关系,甚至可以在代码视图直接编辑文本源代码,兼顾不同编程水平的用户需求。另外,Mixly完美支持Arduino官方认证的开发板,Mixly会根据Arduino开发板的类型自适应引脚编号、中断类型号等;Mixly也支持高级用户,把修改后的其他开发板导入Mixly,极大地拓展了开发板的普适性。
综上所述,Arduino Nano[atmega328]与Mixly具备传统51单片机教学的基本属性,它的核心优势是支持图形化编程,适用于高职少学时单片机课程教学。
3 Arduino图形化编程的教学应用
Arduino图形化编程的教学重点不是微处理器的工作原理或复杂应用的底层编程,而是通过简单、易学、易实现的图形化编程培养学生的创造性思维能力,提高学习效率。笔者从微处理器的认知规律出发,归纳总结基于Arduino图形化编程的两种教学应用模式和准工程师的开发者模式。
3.1 认知Arduino的教学模式
该模式主要用于Arduino基本硬件资源的Mixly图形化编程实现,属验证性实验,具体的教学实施步骤为:①教师创设源于生活的趣味性或实用性应用场景;②回顾已有知识储备,引出教学新任务;③教师讲授新任务的实现方法,图形化编程的基本方案,学生模仿完成验证性实验;④教师鼓励发散思维,引导创新应用,并实现简单创意设计[1]。
以讲授Arduino数字I/O口应用为例。教师首先复习如何点亮一盏LED,巩固上一次课的技能知识点,然后引导学生思考生活中的细节——门铃、警笛声是如何实现的? 接着给每位同学发一个蜂鸣器,并鼓励学生尝试用已掌握的知识控制蜂鸣器发出声音,持续的高电平可以让蜂鸣器发出声音,再现学习成果可以延续学生的成就感。显然,这不是新任务的教学目标,教师适时讲授蜂鸣器的工作原理、延时函数,并给出最基本的编程案例(如图1),引导学生模仿并尝试有目的地修改延时时间参数。试验成功后,请学生总结蜂鸣器的音响效果是不是和延时时间长短有关?以此引出频率的概念以及乐理知识,而后再次给出蜂鸣器播放音乐的案例,提示修改数组元素的方法,鼓励学生发散思维。以此案例为基本,编写其他音乐程序。
3.2 Arduino综合设计类教学应用
该模式适用于熟悉Arduino基本功能、有一定编程逻辑思维的学生。通过Arduino综合设计的教学实施,进一步培养学生自我学习精神、团队协作精神。具体实施步骤:①教师创设应用场景,提出特定功能的应用需求和技术指标。②学生小组讨论设计思路,形成硬件设计方案、主要程序流程图。③组长汇报小组设计方案,教师给出可行性评估,引导学生修订、完善设计方案。④学生实施设计方案,最终完成作品调试、展示[2]。下面以基于DHT22温湿度传感器的实验室服务器机柜温湿度控制系统的设计与实现为例,介绍该模式的具体教学实施过程[3]。
环境温湿度是影响服务器是否正常运行的重要因素。本次的教学目标是让学生综合运用传感器、执行器和显示器设计一款基于Arduino的温湿度控制器。控制器的功能和指标为:①通过温湿度传感器采集环境温湿度并予以显示;②根据服务器对环境的温湿度要求,可设置温湿度上下限值,并以此调整风扇转速;③湿度测量范围:0%~100%RH;湿度测量精度:±2%RH;温度测量范围:-40℃~80℃;温度测量精度:±0.5℃[4]。
学生接受设计任务后,以小组为单位展开讨论,通过检索、分析、整理资料形成初步硬件设计方案。教师听取小组初步方案汇报后,着重提醒系统子模块的技术指标要求,例如实现采集温湿度可选用的传感器有DHT11、DHT12、DHT22、DHT33等,DHT22可满足技术指标,而DHT11、DHT12的参数不符合要求。小组在教师指导下反复论证、修订硬件设计方案,最终得出硬件需求清单:Arduino主控板、I/O口拓展板、DHT22温湿度传感器、LCD1602、风扇、轻触按键等。学习小组再次分工,一人负责硬件实现,一人设计程序流程,两人再次讨论程序设计方案的可行性,最后,通过拖拽图形块完成程序设计(如图2),最终实现设计任务。
Arduino综合设计类教学应用的实施,对夯实学生微控制器编程基础、激发学生创造力、提升学生电子电路综合设计能力和改善教学效果起到了积极作用。
3.3 Mixly图形化编程的开发者模式
Mixly的生态系统是傅骞开发团队最重要的设计理念。Mixly实现图形化编程的基本原理是把图形块对应的程序转化成C语言,再通过Arduino IDE下载至Arduino微处理器。Mixly软件支持厂商或者具有JavaScript编程基础的工程师开发新型器件第三方库。笔者通过分析官方库文件,总结四步开发过程:①编辑第三方库根目录下后缀为XML的文件,该文件主要定义第三方库和图形块的基本信息;②编辑block文件夹下的new.js文件,该文件主要定义图形块的样式信息;③编辑language/new/文件夹下的zh-hans.js文件,该文件主要定义Mixly图形块的汉字信息,en.js定义Mixly图形块的英文信息;④编辑generator文件夹下的new.js文件, 该文件负责把图形块转化成C语言,或者通过该文件调取,实现图形块功能的C语言函数以及相关的头文件。
Mixly的开源属性深受开发者喜爱,众多开发者研制第三方库,进一步拓展Mixly的应用。借助第三方库,初学者也可以更快地实现创意设计。
4 结束语
笔者开发了基于Arduino图形化编程的系列教学案例,归纳总结了认知Arduino基本功能的教学应用模式、综合设计类教学应用模式和Mixly图形化编程开发者模式,经过三年教学应用实践,笔者任教的学生取得了良好的教学效果,获得全国移动机器人总决赛一等奖1项(国家A类协会组织)、全国职业院校技能竞赛三等奖1项、省职业院校技能竞赛一等奖3项、全国大学生电子设计竞赛广西选拔赛一等奖3项、二等奖4项。
参考文献:
[1] 傅骞,解博超.米思齐(Mixly)图形化编程系统的设计理念及应用模式[J].中国信息技术教育,2016(1):65-68.
[2] 余鹏.浅谈《单片机原理与应用》课程教学改革[J].信息化建设,2015(10):25.
[3] 叶险峰,李锡华,施红军.基于Arduino平台的电子电路设计实验教学实践[J].实验科学与技术,2020,18(2):68-72.
[4] 余鹏.舰船电场传感器线路故障在线诊断方法[J].舰船科学技术,2020,42(12):157-159.
【通联编辑:唐一东】