王 娟,胡来林
(温州大学 教师教育学院,浙江 温州 325035)
美国2007年发布的《创新美国:拟定科学、技术、工程与数学议程》共同纲领中指出:当今世界只有具有STEM素养的人才才能在知识经济时代的激烈竞争中赢得胜利,STEM素养是指个体在科学、技术、工程和数学领域及其交叉领域运用个人关于世界运行方式的知识的能力。[1]机器人是一门涉及运动学和动力学、系统结构、传感技术、控制技术等多领域的交叉学科,其教育实施正是促使学生整合科学、技术、数学领域的知识,以工程标准化的思想进行综合实践的过程,具有较强的教育价值。
我国教育部从2003年起把中小学机器人比赛纳入全国中小学电脑制作活动中,2003年颁布的普通高中新课程标准又将“人工智能基础”及“简易机器人制作”列入信息技术课程的选修内容。[2]在制度保障及技术发展背景下,智能机器人教育在全国中小学获得迅速发展,但同时也暴露出一些偏差。诸多学者从教育目标、教学形式、师资力量、设备资源等角度分析了制约中小学机器人教育发展的因素,[3][4]但笔者认为,目前最主要的矛盾之一集中于机器人设备内核技术的开源程度上。Arduino这一开源硬件机器人的出现打破了上述矛盾,其独特的优势为中小学机器人教育打开了新的思路。
Arduino源自意大利的一个开放源代码的硬件项目平台,该平台包括一块具备简单I/O功能的电路板以及一套程序开发环境软件,从Arduino官网(http://arduino.cc)可免费下载其硬件电路设计图及程序开发平台软件。使用者可以根据电路图自己焊接Arduino主板,也可通过淘宝等网络途径购买成品,价格便宜。其他的扩展板、传感器等,也可通过网络根据自身需要购置,且价格低廉。
Arduino不仅能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈环境信息,实现简易机器人设计,还可以在Flash、Processing等一些软件之间进行通信,实现互动媒体设计。丰富且易扩展性的特征,使机器人成为学生参与性学习的优秀平台。
Arduino文本式的编程环境不利于中小学生学习,但 Arduino爱好者们已开发出ArduBlock、Miniblog、S4A等图形化编程软件。这些图形化编程环境以图形化积木搭建的方式编程,加强了编程的可视化和交互性,降低了编程门槛,即使完全没有编程经验的人也可以尝试给Arduino控制器编写程序,符合中小学生的学习习惯及认知水平要求。
Arduino丰富的功能及其开源思想使其爱好者遍布全球,由此也产生了诸多Arduino学习论坛或分享社区。初学者可以通过这些网络学习资源获得丰富且持久的技术支持,这一特性与现有机器人制造厂商封闭核心技术的现象形成了鲜明对比。
为了适应不同用户的需求,Arduino有多种型号,[5]其中Arduino Duemilanove是一款最基本的Arduino产品,后续的很多产品都是在这款产品的基础上发展起来的。如Arduino Nano去掉了直流电源接口,采用Mini-B标准的USB接口连接电脑,是一款缩小版的Arduino Duemilanove;Arduino BT则包含了一个Bluegiga WT11蓝牙模块,支持蓝牙无线串行通信;LilyPad Arduino则是一款专用于服装设计领域,尝试在服饰和人之间产生更多艺术互动的Arduino产品。目前Arduino主推的产品是Arduino Uno,它与之前的Arduino最大的不同在于采用ATmega8U2芯片进行USB到串行数据的转换。使用者可以根据对设计功能的不同需求选择相应的Arduino产品。
不同型号的Arduino其硬件资源也有所差异,但基础配置包括以下部分:
(1)控制器。控制器是Arduino产品的核心部分,以Arduino Duemilanove为基础的多数产品均采用AT-mega168或ATmega328单片机;资源更为丰富的Arduino Mega2560则采用ATmega2560作为控制器,它具有更大的程序存储容量,可接入的I/O数也更多。
(2)输入输出接口。根据控制器的性能差异,不同Arduino产品的输入输出接口数量也有所不同。以Arduino Duemilanove为例,包括14个数字I/O接口和6个模拟I/O接口,其中数字I/O接口中有6个提供PWM输出,PWM是利用数字输出控制模拟电路的一种有效技术。
(3)电脑连接或程序烧写接口。根据使用者对Arduino产品尺寸要求的差异,Arduino或通过独立USB接口支持程序烧写,或通过由USB/RS232转换成TTL的适配器解决该问题,而对Arduino BT而言,其内置的蓝牙模块即可支持通过蓝牙适配器进行程序烧写。
Arduino的资源在其集成板上均有明确标注,方便使用者。
Aruduino的开发环境是以AVR-GCC和其他一些开源软件为基础,采用Java编写的。软件无需安装,下载完成解压缩后就可以直接打开使用了。开发环境的主界面如图1所示。
在应用程序编写之前,需要进行以下三项内容的设置:
(1)安装驱动程序
首次将Arduino板通过USB连接线连接到电脑上,会出现Found New Hardware Wizard(发现新硬件向导)的提示,使用者可根据提示完成硬件驱动程序的安装。驱动程序可根据Arduino板的型号在网络检索免费下载。[6]
(2)选择 Arduino板的型号
图1 Arduino开发环境的主界面
Arduino软件开发环境可支持各种不同型号的Arduino主板,因此在正式开发前,需要告知软件环境所使用的硬件型号。具体方法是选中主界面菜单栏中“Tools→Board”,然后选择所连接的板型。
(3)设置串口号
Arduino成功连接电脑之后,设备管理器中会显示新串口连接,记录串口号并在软件环境中选定该串口。具体方法是选中主界面菜单栏中 “Tools→Serial Port”,然后选择新硬件Arduino板所接入的串口号。
上海新车间创客空间的核心成员李大维博士的团队开发的图形化编程插件ArduBlock,目前已经得到Arduino官方支持,其界面友好,操作简单,不用学习C语言,通过拼图形式就可以完成Arduino的编程,[6]为Arduino进入中小学课堂奠定了基础。图2所示即为该编程环境界面。
图2 ArduBlock编程界面
从网络下载ArduBlock插件后,只需将该jar文件拷贝至Arduino官方编程环境软件包所在文件夹中的tools子文件夹里面即可。拷贝成功后再次打开官方编程环境,可发现菜单栏tools选项中新增了ArduBlock选项,单击便可打开前文所述的ArduBlock编程界面,如图2所示。
除了ArduBlock之外,还可有其它前文所介绍的图形化编程插件。
Arduino机器人实例的开发是Arduino平台下机器人教育课程研究、教学研究等的基础和载体。其开发流程至少包括7个步骤,如图3所示。
需要说明的是,在设计功能目标时,要以为学生创造感性直观的学习体验为原则,尽可能地将生活中随处可见的技术使用在实例中呈现出来,如利用触摸传感器及180度舵机模拟小区出入口的门禁杆升降、利用旋钮开关控制霓虹灯显示等等。此外,实例的设计也应具有扩展性,即学生能在该实例的基础上通过增加元器件的数量或增加其他类型的输入输出器件,实现更为综合且实用的功能实验。
图3 Arduino机器人开发流程
笔者选用Arduino Duemilanove为核心主板,以ArduBlock作为图形化开发环境进行实例开发。以下给出“旋钮LED灯系列——霓虹LED”的开发实例。
(1)功能目标
通过调节旋钮开关 (值从0变化至1023),控制3个LED灯同时开启并有明暗变化。具体红灯由暗变亮、再由亮变暗,而在此过程中黄灯由亮变暗之后,蓝灯由暗变亮,可实现相应霓虹效果。
(2)器件列表
根据功能目标,确定选用表1所示的硬件器件。
表 选用器件列表
(3)硬件连接
①将主板、传感器扩展板依次插好;②将LED模块(红、黄、蓝)分别插入传感器扩展版的 11、9、7 端口;③将旋钮开关插入传感器扩展板的A3端口。
(4)软件环境设置
在Arduino官方软件开发环境中,通过tools菜单项选定Board为 “Arduino Duemilanove or Nano w/AT-mega328”,Serial Port为“COM3”。
(5)元件特征值测试
通过在串口中输出旋钮开关所在A3口的数值,可知旋钮开关在调节过程中,其值在0~1023范围内变化。据此,可通过映射函数将0~1023范围的值映射到0~255范围内,以控制LED灯的明暗度变化。
(6)ArduBlock 程序编写
图4为在ArduBlock开发环境中的完整“旋钮霓虹灯”实例程序。
图4 旋钮霓虹灯实例ArduBlock程序
(7)Arduino 代码调试
将ArduBlock程序下载至Arduino进行程序编译及调试。
Arduino的开源性及功能可扩展性决定了它在机器人教育领域内的高性价比,图形化编程插件符合中小学阶段学生的认知习惯及水平,丰富的Arduino论坛资源为教育过程提供了持久的技术和创意保障,这些都成为Arduino机器人教育得以推广的有力条件。随着研究的不断深入,更多的教师将会投身到Arduino机器人教育的实践当中,而有关课程体系、教学活动等的研究也必将日趋完善。
[1]赵中建.为了创新而教育[N].中国教育报,2012-6-15.
[2]张国民,张剑平.我国基础教育中机器人教育的现状与对策研究[J].现代教育技术,2008(5):92-94.
[3]王荣良.机器人教育对学生工程意识培养的意义与作用[J].新课程研究·基础教育,2009(1):99-100.
[4]曾祥潘.步入开源硬件智能机器人教育时代[J].中小学信息技术教育,2012(1).
[5]程晨.Arduino开发实战指南[M].北京:机械工业出版社,2012.
[6]宜昌城老张.新车间Arduino图形化编程软件ArduBlock的介绍[EB/OL]http://eefocus.com/zhang700309/blog/12-02/237994_76dea.html.