999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Android和Ardunio的移動便攜點名系統開發

2014-02-26 05:49:16吳元君
巢湖學院學報 2014年3期
關鍵詞:設備系統

吳元君

(安徽財貿職業學院,安徽 合肥 230601)

1 引言

學生上課的出勤率是學校教務部門需要考查的一項重要數據,也是班級和學生評優評獎的重要指標。在高等院校,特別是多個班級合班的大課,教師在上課前點名會耗費大量時間。而且對于班主任而言,除了到班級檢查外,無法及時獲得曠課的學生信息。為了幫助授課教師提高點名的效率,協助班主任及時了解班級出勤率,為學生考試、評優提供依據,同時將這些數據共享發布,項目組研究開發了一個基于Android和Ardunio的移動便攜點名系統。

系統采用目前主流的射頻卡RFID(工作頻率為125KMHz,如飯卡、上機卡等)技術標識學生身份,采用相應的讀卡模塊,利用Arduino Nano讀取并處理射頻卡數據,并將該數據以目前廣泛普及的藍牙技術發送給移動智能設備客戶端,如采用Android操作系統的智能手機等,完成點名的操作,并最終利用智能設備的WIFI或3G功能將點名信息上傳至學校教務部門公網服務器,達到數據共享的目的[1]。該系統方案成本較低,不增加學生負擔,對教師而言,只需要配備一款基于Android操作系統的手機即可使用,具有一定的推廣價值。

2 關鍵技術

2.1 Android平臺

Android名詞源于法國作家的科幻小說《未來夏娃》中的小機器人,2005年Google收購了剛成立22個月的Android公司,開始開發名為Android的開放源代碼的移動系統,Android軟件系列包括了操作系統、中間件和一些關鍵應用。Android代碼開源的特性,利于開發人員明確細節,開發出差異化的應用程序。Android的源代碼遵循 Apache V2軟件許可,而不是 GPL v2許可證,非常利于商業開發。目前Android基于 QEMU開發的模擬器調試手段有限,僅支持通話、SMS等,且運行效率較低[2]。但是,Android豐富的開發工具,包括模擬機、調試工具、內存運行檢測,以及為 Eclipse所寫的 ADT插件,深受廣大開發人員歡迎。

2.2 Arduino平臺

Arduino是一個基于開放原始碼的軟硬體平臺,是一款便捷靈活、方便上手的開源電子原型平臺,包含硬件(各種型號的arduino板)和軟件(arduino IDE)。Arduino構建于開放原始碼simple I/O介面版,并且具有使用類似Java,C語言的Processing/Wiring開發環境。

Arduino能通過各種各樣的傳感器來感知環境,通過控制燈光、馬達和其他的裝置來反饋、影響環境。板子上的微控制器可以通過Arduino的編程語言來編寫程序,編譯成二進制文件,燒錄進微控制器。對Arduino的編程是利用 Arduino編程語言 (基于 Wiring)和Arduino開發環境(based on Processing)來實現的。基于Arduino的項目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上運行的軟件,他們之間進行通信(比如 Flash,Processing,MaxMSP)來實現[3]。

3 系統硬件原理及設計

3.1 RFID讀卡模塊

RDM630系列非接觸式射頻ID卡專用模塊,釆用先進的射頻接收線路及嵌入式微控制器設計,結合高效譯碼算法,完成對EM4100兼容式ID卡的數據接收。具有接收靈敏度高、工作電流小、穩定性高等特點,適用于門禁、考勤、收費、防盜、巡更等各種射頻識別應用領域。

該模塊可以讀取125K EM4100系列RFID卡,且使用方便,供電后串口連接Arduino主板即可。當有RFID卡進入讀卡范圍時,模塊會通過串口直接把卡號發送給Arduino。如果再用繼電器模塊連接Arduino的話,就可以實現簡單的門禁控制。

數據輸出格式如下:

(1)9600bps,N,8,1

(2)CHECKSUM:card 10byte DATA entire do XOR operation

?

卡號:62E3086CED

輸出:36H、32H、45H、33H、30H、38H、36H、43H、45H、44H

CHECKSUM:(62H)XOR (E3H)XOR (08H)XOR (6CH)XOR (EDH)=08H

3.2 藍牙模塊

核心模塊使用HC-06從模塊,引出接口包括VCC、GND、TXD、RXD,預留LED狀態輸出腳。led指示藍牙連接狀態,閃爍表示沒有藍牙連接,常亮表示藍牙已連接并打開了端口。底板設置LDO,輸入電壓3.6-6V,未配對時電流約30mA,配對后約10mA。接口電平3.3V,可以直接連接各種單片機(51,AVR,PIC,ARM,MSP430等)。配對以后當全雙工串口使用,僅支持8位數據位、1位停止位、無奇偶校驗的通信格式。配對后只需要當成固定波特率的串口一樣使用即可,因此只要是以“固定波特率,8位數據位,無奇偶校驗”通信格式的串口設備都可以直接取代原來的有線串口而不需要修改程序。如數據采集、智能車、串口打印機、戶外點陣條屏控制等[4]。適合手機跟設備間通過藍牙串口通信。

3.3 Arduino Nano

Arduino Nano是Arduino USB接口的微型版本,最大的不同是沒有電源插座以及USB接口是Mini-B型插座。Arduino Nano是尺寸非常小的而且可以直接插在面包板上使用。其處理器核心是ATmega328(或ATmega168),同時具有14路數字輸入/輸出口(其中6路可作為PWM輸出),8路模擬輸入,一個16MHz晶體振蕩器,一個mini-B USB口,一個ICSP header和一個復位按鈕。

該板提供一個硬件串口(TX pin、RX Pin),可以連接其它TTL電平設備,作為數據通訊[5]。作為擴展,可以通過SoftSerial類創建軟串口,連接其它串口設備。實現后的藍牙RFID讀卡器原理圖如圖1。

圖1 藍牙RFID讀卡器原理圖

4 系統軟件環境及設計

4.1 軟件環境

本系統硬件設備部分,使用開源的eclipse集成開發環境,并安裝了Arduino插件以提供支持。應用系統部分,使用微軟Visual Studio 2010,配合微軟SQLServer 2008 R2 Express完成數據的存儲,并提供Web服務。

4.2 對RFID讀卡模塊的封裝

該部分主要是利用面向對象的方法,將硬件設備抽象為類,如類Rfid表示RFID讀卡器,類Led表示指示燈,類Buzzer表示蜂鳴器等。這樣做可以極大提供代碼的利用率,提高程序的可讀性[6]。關鍵代碼如下:

bool Rfid::nextCard(unsigned char*card) {

hasCard=false;

//把現有的數據放入數組

while (Serial.available() > 0) {

//加入判斷,位置0時,數據應為2,位置13時,數據應為3

unsigned char c;

c=Serial.read();

if(currentByte==0&&c!=2) {

continue;

}

if(currentByte==13&&c!=3) {

currentByte=0;

continue;

}

newData[currentByte++]=c;

//放入14個以后,退出

if(currentByte >=14) {

//比較前后兩次讀取的是否一致,如果不一致,則表示是新卡

for(currentByte=0;currentByte<14;currentByte++){

if (preData[currentByte]!=newData[currentByte]){

preData[currentByte]=newData[currentByte];

hasCard=true;

}

}

if(hasCard==true) {

for(currentByte=0;currentByte< 14;currentByte++){

card[currentByte]=newData[currentByte];

}

}

4.3 Arduino Nano上的程序

Nano上首先實例化RFID讀卡器,不停的查詢是否有磁卡接近,當有磁卡接近,讀取卡號并將卡號發送給藍牙模塊。關鍵代碼如下:

#include “SendCardByBT3.h”

#include “Rfid.h”

#include “SoftwareSerial.h”

//因為Nano版只有一個硬串口,所以使用軟串口連接藍牙

SoftwareSerial mySerial(7,8);//使用Pin7作為軟串口的RX,使用Pin8作為軟串口的TX

//RFID模塊

Rfid*rfid;

//存儲卡號的臨時數組

unsigned char card[14];

//存儲卡號的臨時字符串對象

String s;

//蜂鳴器//Buzzer*buzzer;

void setup() {

rfid=new Rfid();//實例化 RFID 讀卡器模塊

//buzzer=new Buzzer(4);//實例化蜂鳴器,用 Pin4 進行控制

//

mySerial.begin(9600);//軟串口開始工作,準備向藍牙模塊發送卡片信息

}

void loop() {

//當讀到有卡片時,從藍牙將卡號發出

if(rfid->nextCard(card) ==true) {

s= “”;

for(int i=1;i< 11;i++){

s.concat((char)card[i]);

}

mySerial.println(s+ “ ”);//把卡號發送到藍牙模塊,并附帶換行符,以便 Java

//能順利讀取數據

//buzzer->beep();//讀取一個磁卡,蜂鳴器發出一次聲音

}

}

4.4 Android手機上連接藍牙獲取磁卡信息的程序

手機端藍牙與藍牙模塊配對后,會一直讀取藍牙模塊輸入流的數據,以判斷是否有新卡信息到達[7]。當有新卡信息到達時,會自動更新對應學生的出勤狀態;否則,繼續等待。如果這個操作在Activity主線程中運行的話,必然導致界面無法響應用戶操作。因此,在獲取藍牙輸入流后,需要單獨開啟一個線程運行讀卡信息的操作。當藍牙模塊關閉或Activity主線程結束時,該讀卡信息的線程會自動結束。該過程可參照流程圖見圖2,關鍵代碼如下。

圖2 流程圖

//啟用手機藍牙設備

@Override

protected void onStart(){//在Activity啟動時,判斷手機藍牙是否啟用

super.onStart();

if(!bluetoothAdapter.isEnabled()) {

//請求藍牙權限

Intent intent=new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);

startActivityForResult(intent,REQUEST_BLUETOOTH_ENABLED);

}

}

//連接藍牙讀卡器后需要進行讀卡操作,因此使用單獨的線程運行

private void connectDevice(final String address) {

new Thread(new Runnable(){

public void run() {

try{

//獲取要連接的藍牙設備

BluetoothDevice device=bluetoothAdapter

.getRemoteDevice(address);

/

/創建Socket連接

bluetoothSocket=device

.createRfcommSocketToServiceRecord(MY_UUID);

//進行連接

bluetoothSocket.connect();

Log.d(“Message”, “啟動讀卡線程“);//輸入操作日志

//開始讀卡

readCards();

}catch (Exception e) {

e.printStackTrace();

}

}

}).start();

}

//讀卡操作的線程

private void readCards() {

BufferedReader reader=null;

String nextCard=null;

String preCard=null;

try{

reader=new BufferedReader(new InputStreamReader(

bluetoothSocket.getInputStream()));

while ((nextCard=reader.readLine()) !=null) {

if(!nextCard.equals(preCard)) {

//讀到新卡信息,更新對應學生出勤狀態

}

}

}catch (Exception e) {

}finally{//…

}

}

5 系統實現

該系統基于RFID技術標示學生身份,采用開源的硬件平臺Arduino作為主控設備,與采用單片機作為主控設備相比,該方案可擴展性更強,操作更為方便;同時,利用藍牙技術,在智能設備與Arduino之間建立起連接,借助智能設備的WIFI或3G功能共享數據[8]。使用智能Android設備配合射頻卡完成上課點名的操作是本系統的亮點,此外,系統還設計了完整的應用程序,方便用戶操作。系統結構圖如圖3所示。

圖3 系統結構圖

6 結束語

系統有較強的實用性,RFID藍牙讀卡器價格普遍在500元以上,而該方案的成本可以控制在200元以內,利用該系統不僅可以極大提高點名效率,而且教學相關人員可以及時了解和監控學生上課情況。該系統支持多種Android終端設備,如手機、電腦等,RFID技術的普及、智能設備的廣泛使用也都為該系統在校園的普及奠定了基礎。

[1] 楊豐盛.Android應用開發揭秘[M].北京:機械工業出版社,2010.

[2] 楊明極,畢晶.基于 Android 視頻客戶端的設計[J].電視技術,2012,(3):43-47.

[3] H.Hagras,Victor Callaghan,Martin Colley,Graham Clarke,Anthony Pounds-Cornish,and Hakan Duman.Creating an ambient-telligence environment using embedded agents[J].IEEE Intelligent Systems,2004,(4):12-20.

[4] 周時偉,謝維波.基于Android的智能家居終端設計與實現[J].微型機與應用,2012,(14):10-13

[5] 王朝華,陳德艷,黃國宏,等.基于Android的智能家居系統的研究與實現[J].計算機技術與發展,2012,(6):225-228.

[6] 詹成國,朱偉,徐敏.基于Android的測控裝置人機界面的設計與開發[J].電力自動化設備,2012,(1):119-122

[7] 唐賽武,滿君豐,謝成劍.便于省時排隊的無線監測系統的研制[J].福建電腦,2012,(11):35-37.

[8] 宮磊,周聰.基于Android的移動終端應用程序開發與研究[J].計算機與現代化,2008,(8):85-89

猜你喜歡
設備系統
諧響應分析在設備減振中的應用
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
基于VB6.0+Access2010開發的設備管理信息系統
基于MPU6050簡單控制設備
電子制作(2018年11期)2018-08-04 03:26:08
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
500kV輸變電設備運行維護探討
工業設計(2016年12期)2016-04-16 02:52:00
主站蜘蛛池模板: 久久国产热| 伦伦影院精品一区| 狠狠综合久久| 中文字幕久久精品波多野结| 九九九九热精品视频| 欧美亚洲一区二区三区在线| 看国产一级毛片| 国产制服丝袜91在线| 国产精品嫩草影院av| 成人综合久久综合| 精品国产免费人成在线观看| 日本黄网在线观看| 亚洲国产综合精品一区| 美女啪啪无遮挡| 婷婷久久综合九色综合88| 亚洲精品无码人妻无码| 国产成a人片在线播放| 久久无码av三级| 亚洲色欲色欲www网| 91精品伊人久久大香线蕉| 无码久看视频| 在线看免费无码av天堂的| 九色综合视频网| 91精品人妻互换| 日韩精品成人在线| 国产白浆在线观看| 午夜综合网| 波多野结衣视频一区二区 | 国产自在线播放| 国产主播在线观看| 露脸国产精品自产在线播| 97超级碰碰碰碰精品| 国产a网站| 国产精品对白刺激| 欧美成人二区| 国产免费看久久久| 中文字幕亚洲另类天堂| 久久精品视频一| 香蕉精品在线| 欧美午夜一区| 欧美精品亚洲精品日韩专区| 日本91在线| 国产人成午夜免费看| 国产精品美乳| 欧美国产精品不卡在线观看| 欧美国产在线一区| 九九久久精品国产av片囯产区| 一级毛片免费观看久| 欧美一级黄片一区2区| 2018日日摸夜夜添狠狠躁| 国产精品无码一区二区桃花视频| 免费毛片网站在线观看| 手机在线国产精品| 亚洲精品无码专区在线观看| 高清不卡一区二区三区香蕉| 欧美性精品不卡在线观看| 露脸一二三区国语对白| 精品成人一区二区| 国产在线拍偷自揄观看视频网站| 久久精品国产一区二区小说| 伊人久久婷婷| 婷婷成人综合| 国产丝袜无码一区二区视频| 欧美成人综合在线| 国产噜噜噜| 亚洲精品在线影院| 三级毛片在线播放| 三上悠亚在线精品二区| 在线国产你懂的| 婷婷午夜影院| 亚洲精品波多野结衣| 国产传媒一区二区三区四区五区| 亚洲欧美激情另类| 中文字幕首页系列人妻| 国产丝袜无码精品| 91小视频在线播放| 伦伦影院精品一区| 中文字幕调教一区二区视频| 91精品专区国产盗摄| 特级毛片8级毛片免费观看| 国产白浆在线| 午夜成人在线视频|