利用Arduino和Flash开发DISLab

2010-07-24 08:25翁浩峰
物理教师 2010年3期
关键词:小车服务器课件

翁浩峰

(浙江省宁波中学,浙江宁波 315100)

1 Arduino与DISLab简介

“Arduino,是一个基于开放源代码的软硬件平台,构建于开放源代码simple I/O接口版,并且具有使用类似Java、C语言的Processing/Wiring开发环境.让您可以快速使用Arduino 语言与 Macromedia Flash、Processing、Max/MSP、Pure Data、SuperCollider等软件作出互动作品.Arduino可以使用开发完成的电子元件例如Switch或传感器或其他控制器件、LED、步进马达或其他输出装置.Arduino也可以独立运作成为一个可以跟软件沟通的接口,例如Macromedia Flash、Processing、Max/MSP 、Pure Data、VVVV 或其他互动软件等.Arduino开发IDE接口基于开放源代码,可以让您免费下载使用开发出更多令人惊艳的互动作品.”以上这段文字来自维基百科.Arduino可以连接传感器,并将传感器的信号传输至计算机,并由计算机上的软件如Macromedia Flash软件制作的动画接受这些信息,并将其显示出来.Arduino甚至可以接受Macromedia Flash软件制作的动画发送的信号,并由此来控制一些动作器件(如步进马达等).由此可知,通过Arduino我们可以实现外部世界与计算机的互动.

DISLab——(Digital Information System Lab)数字化信息系统实验室,其基本的构造是传感器,数据采集器和计算机软件.基本原理是由数据采集器采集传感器上的数据,并传输到电脑上通过软件显示出来.近几年,DISLab在中学物理实验中应用比较广泛,使用的DISLab产品也有很多,例如国内的朗威DISLab系统,GQY DISLab系统等等.

对比 Arduino与DISLab系统,可以发现 Arduino完全可以实现DISLab的各项功能,并且还可以通过软件反过来控制一些动作器件,加上其构建于开放源代码,可以实现许多现在的DISLab无法实现的功能.所以用Arduino进行DISLab的开发,能创造出更多独特的实验,开发出界面更好的互动课件.

2 利用Arduino与 Flash制作DISLab

笔者下面利用Arduino和做互动课件常用的软件Macromedia Flash来制作一个DISLab实验.

本实验需要1个Arduino开发板和1个超声波传感器元件(如图1所示),以及 1台安装了 Flash cs3和Arduino软件的计算机.

首先对Arduino开发板写入一下程序(此处省略若干定义语句).

上述写在Arduino里的程序的功能主要是读出超声波传感器发射超声波到接受反射回来的波所经过的时间差,然后将这个时间差发送出去,让电脑接收.

图1

写入程序后,将超声波传感器的输入输出端连接到Arduino的端口4和端口5,电源输入端连接到Arduino的高电平输出端,接地端连接到Arduino的接地端.这样超声波传感器与Arduino的连接就完成了.接下去开始写计算机端的Flash程序.

Arduino与Flash并不能直接通信,必须通过一个服务器转接,这里选择Serproxy进行转接.Serproxy的作用在于它会建立一个xml服务器,将来自Arduino的数据转换为xml格式,储存在它临时建立的虚拟服务器上.然后Flash便可以从serproxy建立的虚拟服务器中读取xml格式的数据.Serproxy服务器从国外的网站www.arduino.cc上直接下载得到.下面编写Flash端的程序,因为代码过多,此处省去,如有需要,可以向笔者索取.

程序完成了将得到的从Arduino发送的时间间隔转换为距离值,并且完成将距离值实时显示出来,以及用屏幕上的物块来实时模拟实际物体的移动.在按下记录按钮后能够每5 ms读取一个数据,然后对每4个数据取平均,以每20 ms记录一次将这些数据依次记录到数组中,并依次显示出来,同时画出距离—时间图像(如图2所示),还可以通过对图像的选择来保留选中的数据.

图2

通过上述程序,可以看到通过Arduino和Flash开发的这个课件具有实时的测量并记录物体位移的功能.有了这个功能,可以完成很多物理实验,例如研究物体加速度与力、质量的关系,研究小球简谐运动的图像等等.当然,这个课件在数据处理上的功能可能并不强大,但是我们可以将课件中记录下来的距离数据复制到 Excel中,利用Excel强大的功能来进行数据的分析和处理,甚至计算出每个时刻物体的速度,画出速度—时间图像等等.

3 用开发出来的DISLab进行物理实验

下面,我们就用刚开发的这个DISLab来完成一个简单的物理实验.

实验任务:研究小车在无外力作用下从某一速度减为零的运动过程,分析小车位移随时间变化的情况,画出小车的位移-时间图像,并用曲线拟合的方式分析小车的运动情况.

首先放置好器材,打开serproxy服务器,打开刚制作完的课件,如果显示出小车的距离,说明连接成功.试着移动小车,观察课件中小车的运动情况,如正常,点击开始采集数据按钮,然后马上推动小车给小车一个初速度.观察课件中的图线的变化情况,待小车停止后,点击暂停数据采集按钮.接下去点击图像选择按钮,在图像上点下鼠标左键并拖动鼠标,选择你所要保留的图像范围,最后点击保留选中数据按钮,在课件的数据表格内便得到了我们这次实验的数据.

然后将课件中数据表格内的数据全部复制到Excel表格中,注意使用文本导入向导,选择分隔符号,点击下一步,再选择空格,点击完成.这样就将课件中的数据复制到了Excel表格中了,这些数据有两列,第1列为时间,第2列为该时间对应的位移值,单位是cm.接下去便可以利用Excel强大的图像数据处理功能来分析数据了.选择插入—图表里面的XY散点图,选择平滑线散点图,点击下一步,再点击完成即可.这样就将得到的数据又复原成了位移-时间图像了(如图3所示).然后再对图像进行研究,右击图像中的图线,选择添加趋势线,在趋势线里面选择多项式,阶数选择2,然后在选项里面将显示公式前面的框里打上钩,最后点击确定.这样就完成了对图线的研究,观察趋势线与图线是否吻合,如果不吻合,则需要重新添加其他的趋势线,如吻合,则说明位移与时间满足这样的关系.通过位移与时间的关系,我们可以得出小车做的是匀减速直线运动,从关系式也可以得到小车的加速度的大小.

图3

虽然笔者写的这个Flash课件功能并不强大,但是因为Arduino的开源性,Flash的强大互动功能,相信可以开发出更多更有新意的实验课件.也可以一改以往使用传感器只能够使用厂商提供界面来操作的缺点,开发出更利于学生接受的全新的界面,并且融入课件与人的互动功能,甚至可以通过课件来控制一些互动器件,来完成一些远程的实验操作.

虽然现在传感器在中学课堂已经普及,但是一些农村学校或者经济状况不是很好的学校还是没有能力采购一整套的传感器设备.而利用Arduino和Flash开发的DISLab不仅功能上可以达到商用DISLab的功能,并且价格上有着很大的优势.唯一的不足是对教师的要求过高,但是也可以通过会编程的教师预先制作各个Flash程序模块,普通教师在制作时将各个模块拼接便可制作有个性的实验界面、甚至远程控制的实验项目等等.

随着科技的飞速发展,教师的教学工具乃至教学方法都在不断的发生着变化.对于一名普通的教师来说,是一直守着自己的那点知识不变还是不断的学习新的知识,决定了一名教师能否适应未来的教学.在一些商用DISLab不断在中学普及的时候,我们当然需要努力的学习这种新的教学工具带来的新的教学方法,并不断思考如何更好的利用这样新的教学工具.在应用的时候,也需要带着一种批判的眼光,毕竟并非科技含量越高的就越好.笔者也是因为在使用这些商业DISLab软件时感觉软件界面不是很适合课堂教学,所以才想到用Flash来开发DISLab的界面.但是自己制作的一些传感器精度上却很难达到预定的目标,所以Arduino和Flash开发DISLab的路其实非常艰难.笔者非常希望那些商业的DISLab厂商能够公开其传感器接口的具体参数,让我们教师也能使用自制的课件来读取商业传感器的数据,毕竟这是一个崇尚创新、崇尚个性的时代.

猜你喜欢
小车服务器课件
大车拉小车
自制小车来比赛
通信控制服务器(CCS)维护终端的设计与实现
刘老师想开小车
两轮自平衡小车的设计与实现
用Lingo编写Director课件屏幕自适应播放器
中国服务器市场份额出炉
得形忘意的服务器标准
计算机网络安全服务器入侵与防御
从“广用”到“省用”——谈音乐教学中课件使用的“度”