王紅晨,劉漢軍
(海南師范大學(xué) 物理與電子工程學(xué)院,海南 海口 571158)
基于Arduino和Flash的DisLab設(shè)計(jì)
王紅晨,劉漢軍
(海南師范大學(xué) 物理與電子工程學(xué)院,海南 ???571158)
針對(duì)目前市場(chǎng)上的DisLab(Digital Information System Lab)數(shù)字化信息系統(tǒng)成本高,軟件移植性差等問(wèn)題,介紹一種利用傳感器、Arduino和Flash CS6開(kāi)發(fā)Dislab的方法.同時(shí),利用該方法開(kāi)發(fā)了一種驗(yàn)證機(jī)械能守恒的數(shù)字化信息系統(tǒng).結(jié)果表明,該方法設(shè)計(jì)的Dislab呈現(xiàn)的內(nèi)容直觀易懂、硬件成本低、可移植性強(qiáng),在教育教學(xué)中具有廣泛的應(yīng)用價(jià)值.
Arduino;Flash;DisLab;傳感器
DisLab主要由傳感器、數(shù)據(jù)采集器和計(jì)算機(jī)軟件三部分組成,其工作原理是由數(shù)據(jù)采集器采集傳感器上的數(shù)據(jù)[1-2],并傳輸給電腦上的軟件顯示出來(lái)。目前市場(chǎng)上有許多DisLab系統(tǒng),大都價(jià)格昂貴,而且計(jì)算機(jī)軟件不能夠在其它教學(xué)軟件中調(diào)用,軟件的界面設(shè)計(jì)過(guò)于專(zhuān)業(yè),在課堂教學(xué)中不適合進(jìn)行實(shí)驗(yàn)演示.
Arduino是一款便捷靈活、方便上手的開(kāi)源微控制平臺(tái)[3-4],該平臺(tái)包括硬件和軟件兩部分,硬件部分是Arduino電路板;軟件部分是計(jì)算機(jī)中的程序開(kāi)發(fā)環(huán)境Arduino IDE.Arduino把單片機(jī)編程中很多常用的功能如延時(shí)、數(shù)據(jù)讀寫(xiě)、中斷等模塊化封裝成一個(gè)個(gè)子程序供程序開(kāi)發(fā)者調(diào)用,程序開(kāi)發(fā)者只需著眼于程序的邏輯結(jié)構(gòu),而不必關(guān)心底層函數(shù)的設(shè)計(jì),從而降低了編程的復(fù)雜度.
Flash是一款集動(dòng)畫(huà)制作與應(yīng)用程序開(kāi)發(fā)于一體的動(dòng)畫(huà)創(chuàng)作軟件,其具備的腳本語(yǔ)言Actionscript 3.0(簡(jiǎn)稱(chēng)AS3.0)是一種強(qiáng)大的面向?qū)ο蟮木幊陶Z(yǔ)言[5-6].采用AS3.0語(yǔ)言編寫(xiě)的軟件具有很強(qiáng)的人機(jī)交互和數(shù)據(jù)交互的特點(diǎn),它還具備完善的事件處理機(jī)制,使程序員更容易設(shè)計(jì)和編寫(xiě)復(fù)雜的代碼.
本文提出的DisLab系統(tǒng)利用Arduino作為數(shù)據(jù)采集器[7-8],應(yīng)用Flash CS6編寫(xiě)上位機(jī)交互軟件,其結(jié)構(gòu)框圖見(jiàn)圖1.
1.1 數(shù)據(jù)采集器設(shè)計(jì)
硬件上Arduino的數(shù)據(jù)輸入輸出口與傳感器相連采集傳感器上的數(shù)據(jù),串口連接計(jì)算機(jī)用于數(shù)據(jù)的上傳;軟件上應(yīng)用Arduino IDE編寫(xiě)控制板上程序,實(shí)現(xiàn)傳感器信息的采集、處理并通過(guò)串口傳給上位機(jī).
1.2 計(jì)算機(jī)軟件設(shè)計(jì)
應(yīng)用Flash CS6軟件對(duì)系統(tǒng)界面進(jìn)行布局,通過(guò)AS3.0腳本語(yǔ)言編寫(xiě)系統(tǒng)的控制程序.由于AS3.0實(shí)現(xiàn)網(wǎng)絡(luò)通信是基于TCP/IP協(xié)議的,不能直接訪(fǎng)問(wèn)串口以獲取Arduino所采集的數(shù)據(jù),因此,串口和TCP之間必須要有一個(gè)串口-TCP轉(zhuǎn)換代理程序?qū)⒋诤蛃ocket進(jìn)行關(guān)聯(lián),該代理程序只完成數(shù)據(jù)的轉(zhuǎn)發(fā).
圖1 系統(tǒng)結(jié)構(gòu)框圖Fig.1Structure diagram of system
利用上述設(shè)計(jì)方案,以驗(yàn)證機(jī)械能守恒為實(shí)例,開(kāi)發(fā)了一種基于Arduino和Flash的DisLab.
2.1 實(shí)驗(yàn)原理
本文采用擺球法驗(yàn)證機(jī)械能守恒,原理見(jiàn)圖2.在鐵架臺(tái)上固定一個(gè)擺盤(pán)和擺球,在擺盤(pán)的A、B、C、D四點(diǎn)分別固定安裝一個(gè)光電門(mén)傳感器.在不計(jì)空氣阻力,只考慮重力做功的情況下,利用公式計(jì)算,擺球在任意點(diǎn)x處的機(jī)械能為:E=mv2x/2+mghx,實(shí)驗(yàn)中,擺球的直徑是0.008 m,質(zhì)量為0.0075 kg,擺球通過(guò)光電門(mén)傳感器擋光時(shí)間為tx,擺球在某點(diǎn)的速度為vx=0.008/tx.
圖2 實(shí)驗(yàn)裝置原理圖Fig.2Schematic diagram of experimental apparatus
2.2 硬件設(shè)計(jì)
本設(shè)計(jì)采用以槽型光耦WYCH2010為核心的光電門(mén)傳感器模塊,有遮擋時(shí)輸出高電平,無(wú)遮擋時(shí)輸出低電平,用Arduino的D3-D6口采集光電門(mén)輸出的數(shù)據(jù),電路連接圖見(jiàn)圖3.
圖3 Arduino與光電門(mén)連接圖Fig.3Connection diagram of Arduino and photoelectric door
2.3 軟件設(shè)計(jì)
2.3.1 Arduino端程序設(shè)計(jì)
Arduino端的主流程圖見(jiàn)圖4所示:當(dāng)系統(tǒng)上電或復(fù)位鍵被按下時(shí),系統(tǒng)初始化I/O口的工作模式、設(shè)定串口波特率及設(shè)定計(jì)數(shù)器初值,并一直監(jiān)測(cè)I/O是否接收到高電平,當(dāng)接收到高電平時(shí)計(jì)時(shí)開(kāi)始,高電平跳變到低電平時(shí)計(jì)時(shí)結(jié)束,并將計(jì)時(shí)時(shí)間傳輸給上位機(jī).
2.3.2 Flash端程序設(shè)計(jì)
Flash端程序設(shè)計(jì)主要包括,軟件界面設(shè)計(jì)子程序,通信子程序,數(shù)據(jù)處理和顯示子程序.通信子程序主要實(shí)現(xiàn)和串口代理的通信,接收Arduino發(fā)送來(lái)的數(shù)據(jù),將數(shù)據(jù)處理后顯示在flash編寫(xiě)的程序中. Flash端通信設(shè)計(jì)流程圖見(jiàn)圖5.
2.3.3 實(shí)驗(yàn)結(jié)果
計(jì)算機(jī)軟件測(cè)試圖如圖6所示:實(shí)驗(yàn)表明,基于Arduino和Flash開(kāi)發(fā)的驗(yàn)證機(jī)械能守恒的數(shù)字化信息系統(tǒng)不僅運(yùn)行穩(wěn)定,而且能精確快速的采集光電門(mén)數(shù)據(jù),同時(shí)以動(dòng)畫(huà)演示的形式生動(dòng)、直觀的展示實(shí)驗(yàn)現(xiàn)象,利用表格中的顯示數(shù)據(jù)分析實(shí)驗(yàn)結(jié)果.
Arduino支持的傳感器類(lèi)型很多,選擇不同類(lèi)型的傳感器,利用Arduino和Flash可以開(kāi)發(fā)各種演示實(shí)驗(yàn)的Dislab系統(tǒng).由于該方法的硬件投入成本低,軟件開(kāi)發(fā)后可以移植,開(kāi)發(fā)的數(shù)字化信息系統(tǒng)在物理實(shí)驗(yàn)教學(xué)中具有一定的實(shí)際意義.
圖4 Arduino端流程圖Fig.4Flow diagram of Arduino
圖5 Flash端流程圖Fig.5Flow diagram of Flash
圖6 軟件測(cè)試圖Fig.6 Software testing figure
[1]徐勤華,李俊麗.博采眾長(zhǎng)相得益彰——談DIS數(shù)字化信息系統(tǒng)在物理實(shí)驗(yàn)中的應(yīng)用[J].浙江教育技術(shù),2012(4):42-48.
[2]朱文靜,陳江洪,李紀(jì)強(qiáng),等.基于Dislab瞬時(shí)速度連續(xù)性的測(cè)量研究[J].大學(xué)物理實(shí)驗(yàn),2013,26(3):76-78.
[3]蔡睿妍.Arduino的原理及應(yīng)用[J].電子設(shè)計(jì)工程,2012,20(16):155-157.
[4]劉澤良,胡日新.物聯(lián)網(wǎng)技術(shù)下基于Arduino的智能公交系統(tǒng)模型設(shè)計(jì)[J].實(shí)驗(yàn)技術(shù)與管理,2014,31(11):140-143.
[5]胡奇光.基于Flash ActionScript3.0的動(dòng)畫(huà)設(shè)計(jì)的研究[J].計(jì)算機(jī)與數(shù)字工程,2010,38(7):147-150.
[6]孫曉波.基于Flash的遠(yuǎn)程工業(yè)監(jiān)控系統(tǒng)設(shè)計(jì)[J].電子設(shè)計(jì)工程.2012,20(9):64-65.
[7]翁浩峰.在Flash課件中使用傳感器[J].物理通報(bào).2010(6):35-37.
[8]翁浩峰.DIDLab在法拉第電磁感應(yīng)定律定量實(shí)驗(yàn)中的應(yīng)用[J].物理通報(bào),2012(8):83-84.
Design of Dislab Based on Arduino and Flash
WANG Hongchen,LIU Hanjun
(School of Physics and Electronic Engineering,Hainan Normal University,Haikou 571158,China)
Facing the issue of high cost and bad portability of Dislab(Digital Information System Lab)in the current market,we introduce a method by using senor,Arduino and Flash CS6 to develop Dislab.Meanwhile,we developed Dislab with this method which verified conservation law of mechanical energy.The results show that design of Dislab presents lots of advantages,which are straightforward content,low cost of hardware,high transportability and widespread application value in education and teaching.
Arduino;Flash;DisLab;Sensor
TP 274
A
1674-4942(2016)02-0230-03
2016-03-28
海南省教育科學(xué)“十二五”規(guī)劃項(xiàng)目(QJY125020)
海南師范大學(xué)學(xué)報(bào)(自然科學(xué)版)2016年2期