例谈Arduino创意机器人教学
2017-12-08朱胜男
朱胜男
[摘 要]通过“自动跟踪风扇”的设计,介绍如何在中小学信息技术课上开展机器人教学。创意机器人教学应根据学生的学情,结合创客教育的理念以及信息技术学科的教学内容,鼓励学生积极动手实践、探索与创新。
[关键词]Arduino;创意机器人;传感器;信息技术;中小学
机器人(Robot)是指能够自动执行工作的机器装置。美国机器人协会给机器人下的定义是:一种可编程和多功能的操作机;或是为了执行不同的任务而具有可用电脑改变和可编程动作的专门系统。生活中常见的自动售货机、自动提款机和红外自动抽水马桶等,都具有机器人的特征。在此引用的课例,要求学生设计出可以根据人所处的位置调整方向的风扇。虽然它的功能很简单,但本质上也是机器人。
学校有关机器人的教学从初中三年级开始涉及,由于所选教材涉及的中鸣机器人设备比较贵,更新换代又较快,综合考虑经济因素、可拓展性和创客教育的开源性特点,笔者决定选择Arduino进行机器人教学,参考教材为网络电子教材《Arduino创意机器人》。此前,学生们已经学过了Scratch图形编程软件,掌握了积木式程序设计。在开始设计Arduino创意机器人“自动跟踪风扇”之前,学生对Arduino编程的流程以及硬件(如电机、声音传感器、舵机等)的连接、PWM(脉冲宽度调制)已有所了解。
一、课堂导入与任务提出
教师首先播放一段扫地机器人的视频,让学生思考:扫地机器人是如何判断前方是否有物体,从而避开障碍物继续前行的呢?有的学生说“靠雷达”,有的学生说“靠眼睛”。教师引导:Arduino就好比人的大脑,负责思考和控制行动。但是大脑的信息需要人体各个感官来提供。比如眼睛可以提供视觉信息,鼻子可以提供嗅觉信息,皮肤可以提供温度信息等。如果我们想让小风扇成为一个机器人,使它能够根据人的移动,始终朝着人的位置吹风。那么它要如何感受到人的移动呢?如果它也有“眼睛”就好办了。这时引入新传感器的概念,它可以根据光线的变化判断前方是否有物体,从而实现追踪功能。教师还指出,提到“雷达”的同学也有道理,雷达是发出“声波”探测物体。那么这节课上要用到的“数字防跌落传感器”就好比是眼睛,可以通过感知光线判断前方是否有物体。
向学生提出任务:设计一台风扇,使它能够跟着人(人手)位置的变化自动摇头。具体要求是:当人(人手)位于风扇左侧,风扇会向左旋转;如果人离开左侧位置,风扇就会向右旋转到初始位置。同理,当人(人手)位于风扇的右侧,风扇会向右旋转;如果人(人手)离开右侧位置,风扇就会向左旋转到初始位置。
二、硬件材料及其工作原理
所需硬件包括:Romeo板一块,舵机SG90(180度)一个,风扇一个,数字防跌落传感器2个,电机2个。教师需要指导学生了解硬件的连接方法。
风扇驱动。风扇需要电机的驱动才能转起来。由于风扇转动需要的电流较大,不能直接使用Arduino的针脚,所以要把电机连接到Arduino板上,并提供专门的电源。本例中Romeo板可提供M1和M2的四个接线柱来连接电机,接线不区分正负极,但是连接位置(或顺序)不同会影响风扇的转动方向。M1和M2分别对应跳线的4、5、6、7接口。4代表电机1的方向控制,5代表电机1的速度控制,6代表电机2 的速度控制,7代表电机2的方向控制。如果程序中选取了M1接线柱来连接风扇,对应的就是4和5两个接口。M1还可以连接电机,有两个接线柱4和5。4控制电机转动方向,即风扇可能是顺时针或逆时针旋转,5控制转速。首先要将电机连接在M1接线柱上,将“引脚”模块中的“针脚值”设为5(控制风扇转速),并设置转速为200(数值越大,转得越快)。然后再把塑料风扇叶片固定到电机上面。
舵机。舵机能够让机器人转动,如机器人的头部扭转、关节部分的活动、风扇的摇头功能等。这里选用的是180度舵机,这意味着风扇可以在左右180°范围内摇头。舵机上有红、黑、黄三条控制线,分别对应电源、地线和信号线。这里要把舵机信号线连接在与程序代码对应的数字接口上,本例为9号接口。电源线连接VCC接口,地线连接GND接口,这里VCC接口代表电源的正极,GND代表电源的负极。风扇摇头,需要舵机一步一步地转动。当舵机转动角度小于180°时,转动角度逐步累加,当舵机转到180°位置时,再一步一步递减到0°。
数字防跌落传感器。这是一种Arduino红外传感器,主要利用红外测距原理,和声波测距的原理类似,有效距离为10cm。数字防跌落传感器最初是为了使机器人走到有台阶的地方能及时停下来,防止因继续前行而跌落摔坏。在本课中使用防跌落传感器的目的,是让风扇“感知”自己和人的距离是否小于10cm,以便及时调整自己的动作,从而实现智能改变方向。它将成为机器人的“眼睛”。将数字防跌落传感器分别连接数字口11和12,因为传感器只输出0(没有障碍物)和1(有障碍物)两种状态,是数字信号,所以必须连接数字接口。Arduino的数字接口为Remeo板上的digital接口0~13,一共有14个,除了前面已经占用的接口5和6,其余数字接口都可以任意选用。其中舵机和风扇的连接要讲究一点技巧,要保证能够让舵机有效地辅助电机来实现风扇的摇头功能(见图1)。
三、课堂任务
整个课堂由两部分组成。基础任务部分由教师带领学生共同完成;完整任务部分由学生在基础任务的基础上小组合作完成。
1.基础任务
使用一个数字防跌落传感器和舵机,制作自动跟踪风扇,实现左边传感器检测到物体,风扇向左摇头;否则向右摇头。编辑图形代码(见图2)。设定风扇的转动,为电机设定方向和速度。设定针脚的模拟值为“5”(代表了左摇),PWM值为“200”(代表转速)。
接下来编写代码实现“当前方有物体,舵机向左转动;当左侧数字防跌落传感器检测不到物体,舵机向右转动”。因为数字防跌落传感器连接在了数字针脚11上面,所以针脚应设置为11。因为需要根据风扇左侧是否有人(人手),然后才能判断风扇向哪个方向摇头,所以在循环的开始,首先要判断数字针脚11的值是0还是1,如果是0,表示左侧有人,这个时候风扇需要向左摇头,所以舵机的角度k越来越小,直到度数变为0°,即达到了最左侧。相反,如果值为1,那么说明左侧没有人(人手),然后将舵机连接在数字针脚9上,由于舵机需要跟随人(人手)的位置不断运动,所以需要設置成变量,变量设置为k。k值会逐步增加,直到180°(见图3)。
完成以上代码的编写以后,需要将程序代码上载到Arduino板上,并观察运行情况。接下来学生在小组内讨论后自主完成以下任务:一是硬件部分的连接,首先完成的小组可以进行演示,成绩计入小组竞赛成绩中;二是代码的设计和运行,学生依据教师的讲解和示范,亲自设计并运行程序,率先完成的小组加分。
2.完整任务
要求学生完成完整程序的编写并实现以下功能:当人(人手)在风扇的左侧,风扇向左摇头,当人(人手)不在风扇的左侧,风扇向右摇头;当人(人手)在风扇的右侧,风扇向右摇头,当人(人手)不在风扇的右侧,风扇向左摇头。以下为教师的引导过程示例。
教师:刚刚我们已经完成了整个任务的一半,剩下的程序要怎样编写,有没有便捷的方法?
学生:把刚刚的代码克隆,然后修改代码的相应参数就可以了。
教师:需要修改哪些代码呢?
学生:判断人在风扇的右侧,当人在风扇的右侧,风扇需要向右摇头,当人不在风扇的右侧,风扇要向左摇头。
教师:怎样实现呢?请首先考虑硬件部分。
学生:一个数字防跌落传感器放在左侧,一个数字防跌落传感器放在右侧。
教师:那么如何来判断哪个数字传感器是左侧的?哪个数字传感器是右侧的呢?
学生:刚刚的数字传感器接的端口是针脚11,那么现在的数字传感器的端口可以接在其他的数字针脚上,就可以区别了。
教师:下面大家就可以亲自动手了。如果有问题,可以先在组内讨论。最先完成的小组加分。
四、课堂小结与拓展
在小结阶段,教师利用PPT逐步出示思维导图,帮助学生回顾过程和整理思路。为进一步拓展创客设计的思路,教师鼓励学生进行风扇内容的综合创意和竞赛。如温控风扇、倾倒自动停止风扇、定时风扇等。这些任务可加深学生对传感器的印象,有利于以后进一步了解温度传感器和倾角传感器的原理及应用。
参考文献(编者略)
(责任编辑 郭向和)endprint