版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、圖書(shū)管理系統(tǒng)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告rfid課程設(shè)計(jì) 計(jì)算機(jī)科學(xué)與工程 學(xué)院 物聯(lián)網(wǎng)工程 專業(yè) 312 班 設(shè)計(jì)題目: 駕校計(jì)時(shí)系統(tǒng) 組長(zhǎng): 成員: 本人在組內(nèi)完成的主要工作: wifi模塊 成 績(jī): 設(shè)計(jì)方案20%完成功能20%設(shè)計(jì)報(bào)告20%態(tài)度能力10%演示答辯30%學(xué) 號(hào): 姓 名: 時(shí) 間: 2016.1.10 目錄一、設(shè)計(jì)方案11. 系統(tǒng)功能實(shí)現(xiàn)12. wifi連接功能實(shí)現(xiàn)13. 系統(tǒng)流程圖1二、硬件原理31. wifi模塊簡(jiǎn)介32. wifi模塊圖4三、系統(tǒng)設(shè)計(jì)51. 數(shù)據(jù)傳輸程序設(shè)計(jì)52. 數(shù)據(jù)接收程序設(shè)計(jì)7四、系統(tǒng)測(cè)試及結(jié)果91. wifi調(diào)試92. 測(cè)試結(jié)果10五、設(shè)計(jì)總結(jié)12六、參
2、考文獻(xiàn)13七、附錄13一、設(shè)計(jì)方案1. 系統(tǒng)功能實(shí)現(xiàn)以ic卡號(hào)作為駕校人員的編號(hào),用mrfc522讀出卡號(hào),將mrfc522通過(guò)wifi信號(hào)與數(shù)據(jù)庫(kù)連接,再通過(guò)java和數(shù)據(jù)庫(kù)的鏈接及操作進(jìn)行打卡功能。第一次打卡表示開(kāi)始計(jì)時(shí),第二次打卡表示結(jié)束計(jì)時(shí),以此循環(huán)。 根據(jù)駕校計(jì)時(shí)系統(tǒng)的需要,用java做了以下功能:1、新卡打卡進(jìn)行注冊(cè),不是新卡直接打卡開(kāi)始計(jì)時(shí)。2、開(kāi)始計(jì)時(shí),結(jié)束計(jì)時(shí),打卡時(shí)長(zhǎng)以及剩余打卡時(shí)長(zhǎng)以及打卡記錄。 3、所有的數(shù)據(jù)均在數(shù)據(jù)庫(kù)的表中。2.wifi連接功能實(shí)現(xiàn)通過(guò)pc發(fā)送wifi,使wifi模塊與pc進(jìn)行連接并向pc傳送數(shù)據(jù):1、按要求將pc連接電源。2、通過(guò)串口調(diào)試助手對(duì)wif
3、i模塊進(jìn)行調(diào)試,發(fā)送at指令對(duì)wifi模塊進(jìn)行檢測(cè),如at+rst指令,表示重啟模塊。發(fā)送at+cwjap指令讓模塊連上自己的路由器。如果調(diào)試成功,就表示該wifi模塊可以使用。3、在wifi模塊中燒錄程序,程序中設(shè)置可以連接上的無(wú)線路由名字和密碼,將程序中的ip地址設(shè)置成與本機(jī)上的ip地址相同。4、將pc路由名字和密碼設(shè)置成與程序中的相同,然后就能進(jìn)行wifi連接了。5、通過(guò)wifi傳送數(shù)據(jù)。3. 系統(tǒng)流程圖(1) 系統(tǒng)流程圖:(3)數(shù)據(jù)流程圖:二、硬件原理1. wifi模塊簡(jiǎn)介wi-fi模塊又名串口wi-fi模塊,屬于物聯(lián)網(wǎng)傳輸層,功能是將串口或ttl電平轉(zhuǎn)為符合wi-fi無(wú)線網(wǎng)絡(luò)通信標(biāo)準(zhǔn)
4、的嵌入式模塊,內(nèi)置無(wú)線網(wǎng)絡(luò)協(xié)議ieee802.11b.g.n協(xié)議棧以及tcp/ip協(xié)議棧。傳統(tǒng)的硬件設(shè)備嵌入wi-fi模塊可以直接利用wi-fi聯(lián)入互聯(lián)網(wǎng),是實(shí)現(xiàn)無(wú)線智能家居、m2m等物聯(lián)網(wǎng)應(yīng)用的重要組成部分。嵌入式wi-fi模塊,32位單片機(jī),內(nèi)置wi-fi驅(qū)動(dòng)和協(xié)議,接口為一般的mcu接口如uart等。適合于各類智能家居或智能硬件單品。 技術(shù)參數(shù):?jiǎn)?v或3.3v供電工作溫度范圍: -45c +85c尺寸:32mm x 20mm x 4.5mm2. wifi模塊圖(1)、esp模塊圖(2)、原理圖3.ic卡 智能ic卡工作的基本原理是:射頻讀寫(xiě)器向ic卡發(fā)一組固定頻率的電磁波,卡片內(nèi)有一個(gè)
5、ic串聯(lián)協(xié)振電路,其頻率與讀寫(xiě)器發(fā)射的頻率相同,這樣在電磁波激勵(lì)下,lc協(xié)振電路產(chǎn)生共振,從而使電容內(nèi)有了電荷;在這個(gè)電荷的另一端,接有一個(gè)單向?qū)ǖ碾娮颖?,將電容?nèi)的電荷送到另一個(gè)電容內(nèi)存儲(chǔ),當(dāng)所積累的電荷達(dá)到2v時(shí),此電容可作為電源為其它電路提供工作電壓,將卡內(nèi)數(shù)據(jù)發(fā)射出去或接受讀寫(xiě)器的數(shù)據(jù)。接觸式ic卡接口技術(shù)原理 ic卡讀寫(xiě)器要能讀寫(xiě)符合iso7816標(biāo)準(zhǔn)的ic卡。3、 系統(tǒng)設(shè)計(jì)1. 數(shù)據(jù)傳輸程序設(shè)計(jì)(1)wifi模塊傳輸設(shè)計(jì)wifi模塊通過(guò)at指令進(jìn)行重啟,設(shè)置模塊為sta和ap模式,讓模塊連上自己的路由器,啟動(dòng)模塊多連接,讓模塊連上我們的tcp服務(wù)器和發(fā)送數(shù)據(jù)。部分代碼:(1)重啟
6、:unsigned char xdata ch1=at+rstrn0;(2)設(shè)置模塊為sta和ap模式:unsigned char xdata ch2=at+cwmode=3rn0;(3)讓模塊連上自己的路由器:unsigned char xdata ch3=at+cwjap=qwe,12341234rn;(4)啟動(dòng)模塊多連接:unsigned char xdata ch4=at+cipmux=1rn0;(5)讓模塊連上我們的tcp服務(wù)器:unsigned char xdata ch5=at+cipstart=tcp,192.168.191.1,9999rn;(6) 發(fā)送數(shù)據(jù):void mai
7、n( ) unsigned char status; unsigned char mes4; unsigned char card10; unsigned char str=at+cipsend=4,10rn0; unsigned int i; initializesystem( ); pcdreset(); pcdantennaoff(); pcdantennaon(); inituart(); initwifi(); card0=c; card1=a; send_sbuf(at+cipsend=4,6rn0);delayms(1000);send_sbuf(123456rn0);delay
8、ms(1000) ; while ( 1 ) p2=0x00; led_green = 0; status = pcdrequest(picc_reqall, g_uctempbuf); /復(fù)位操作 if (status != mi_ok) led_green = 1; continue; status = pcdanticoll(g_uctempbuf); /防沖撞 if (status != mi_ok) continue; p2=0xff; status = pcdselect(g_uctempbuf); /選定卡片 if (status != mi_ok) continue; stat
9、us = pcdauthstate(picc_authent1a, 1, defaultkey, g_uctempbuf);/驗(yàn)證卡密碼 if (status != mi_ok) continue; p2=0xff; else p2=0xff;for(i=0;i4;i+)mesi=g_uctempbufi;/printf(%c,mesi);card2=(unsigned char)(0x30+mes0/10);card3=(unsigned char)(0x30+mes0%10);card4=(unsigned char)(0x30+mes1/10);card5=(unsigned char)
10、(0x30+mes1%10);card6=(unsigned char)(0x30+mes2/10);card7=(unsigned char)(0x30+mes2%10);card8=(unsigned char)(0x30+mes3/10);card9=(unsigned char)(0x30+mes3%10);card10=0;send_sbuf(at+cipsend=4,10rn0);delayms(1000); send_sbuf(card); delayms(1000) ; status = pcdwrite(1, data1); /寫(xiě)數(shù)據(jù)到卡片 if (status != mi_
11、ok) continue; p2=0xff; status = pcdvalue(picc_decrement,1,data2);/扣款和充值 if (status != mi_ok) continue; status = pcdbakvalue(1, 2);/備份錢包 if (status != mi_ok) continue; p2=0xff; status = pcdread(2, g_uctempbuf); /讀卡數(shù)據(jù) if (status != mi_ok) continue; p2=0xff; pcdhalt(); /進(jìn)入休眠 2. 數(shù)據(jù)接收程序設(shè)計(jì)(1)wifi連接代碼如下:pa
12、ckage wifi;import java.io.ioexception;import .serversocket;import .socket;import java.util.concurrent.executorservice;import java.util.concurrent.executors;public class server public static void main(string args) server server=new server();server.startserver();/啟動(dòng)服務(wù)器public void startserver()serverso
13、cket ss=null;try ss=new serversocket(9999);/設(shè)置連接端口為9999while(true)system.out.println(正在連接);socket s=ss.accept();/這是一個(gè)阻塞的方法system.out.println(連接成功);/創(chuàng)建出一個(gè)線程來(lái) deviceuser deviceuser=new deviceuser(s);executorservice executorservice=executors.newfixedthreadpool(10);/設(shè)置一個(gè)最多只能容納10個(gè)線程的線程池。 executorservice.
14、execute(deviceuser);/執(zhí)行該線程 catch (ioexception e) e.printstacktrace();(2)連入數(shù)據(jù)庫(kù)代碼如下:public static connection getconnection()string url = jdbc:derby:/localhost:1527/jsy;/jsy代表要使用的數(shù)據(jù)庫(kù)string user = jjj;string pwd = jjj;/數(shù)據(jù)庫(kù)的密碼connection conn=null ;try class.forname(org.apache.derby.jdbc.clientdriver); co
15、nn = drivermanager.getconnection(url, user, pwd); catch (exception e) / todo auto-generated catch blocke.printstacktrace(); return conn;(3) 接收wifi傳遞的數(shù)據(jù)代碼如下:/ 構(gòu)造函數(shù),用于獲取相應(yīng)的通信的流public deviceuser(socket s) throws ioexception this.s = s;inputstream is = s.getinputstream();this.is = is;outputstream os = s
16、.getoutputstream();this.os = os;/用于關(guān)閉流public void end() try this.os.close();this.is.close();this.s.close(); catch (exception e) e.printstacktrace();四、系統(tǒng)測(cè)試及結(jié)果1.硬件調(diào)試檢測(cè)各硬件模塊是否斷路或者短路,根據(jù)電路圖查看接線線路是否正確。檢測(cè)接線無(wú)誤后,接入電源,測(cè)量各芯片的供電電壓,檢查無(wú)誤后,進(jìn)入軟件調(diào)試階段。2. 測(cè)試結(jié)果pc端顯示獲取的數(shù)據(jù):wifi連接成功五、設(shè)計(jì)總結(jié)兩周的課程和設(shè)計(jì)讓我受益良多。這次課程設(shè)計(jì)使我對(duì)esp8266wif
17、i模塊有了一定的了解,知道了一些at指令,如at+rst指令、at+cwjap指令以及at+cipsend指令等,同時(shí)也對(duì)通過(guò)wifi接收數(shù)據(jù)也有了一定的認(rèn)識(shí),同樣,這次課程設(shè)計(jì)也使我深深地認(rèn)識(shí)到了自己的不足,以便讓我在之后的學(xué)習(xí)中應(yīng)當(dāng)更加努力。當(dāng)通過(guò)wifi接收數(shù)據(jù)時(shí),我遇到了很大困難,經(jīng)過(guò)與小組成員一起協(xié)商思考以及其他同學(xué)的幫助后,最后還是解決了這個(gè)困難。這次實(shí)驗(yàn)的基本功能都已經(jīng)實(shí)現(xiàn),但總體思路比較簡(jiǎn)單,系統(tǒng)不夠完善,功能也較為簡(jiǎn)單??偟膩?lái)說(shuō)這次課程設(shè)計(jì)我學(xué)會(huì)了很多知識(shí),獲得了一些開(kāi)發(fā)設(shè)計(jì)經(jīng)驗(yàn),為今后能夠完成其他的設(shè)計(jì)奠定了基礎(chǔ)。六、參考文獻(xiàn)1射頻識(shí)別(rfid)原理與應(yīng)用,單承贛、單玉峰
18、,電子工業(yè)出版社。2esp8266開(kāi)發(fā)資料7、 附錄設(shè)計(jì)代碼:通過(guò) wifi模塊發(fā)送數(shù)據(jù)#include lpcreg.h#include main.h#include mfrc522.h#include /#include reg52.h#include temps.hunsigned char xdata ch1=at+rstrn0;unsigned char xdata ch2=at+cwmode=3rn0;unsigned char xdata ch3=at+cwjap=qwe,12341234rn;unsigned char xdata ch4=at+cipmux=1rn0;unsi
19、gned char xdata ch5=at+cipstart=tcp,192.168.191.1,9999rn;int num =1;unsigned char xdata ch6=at+cipsend=4,2rn0;unsigned char code data116 = 0x12,0x34,0x56,0x78,0xed,0xcb,0xa9,0x87,0x12,0x34,0x56,0x78,0x01,0xfe,0x01,0xfe;/m1卡的某一塊寫(xiě)為如下格式,則該塊為錢包,可接收扣款和充值命令/4字節(jié)金額(低字節(jié)在前)4字節(jié)金額取反4字節(jié)金額1字節(jié)塊地址1字節(jié)塊地址取反1字節(jié)塊地址1字節(jié)塊
20、地址取反 unsigned char code data24 = 0x12,0,0,0;unsigned char code defaultkey6 = 0xff, 0xff, 0xff, 0xff, 0xff, 0xff; unsigned char g_uctempbuf20; void delayms(unsigned int ms)int i,j;for(i=0;ims;i+)for(j=0;j114;j+); void send_sbuf(unsigned char *str)unsigned char i = 0; while (stri != 0) sbuf = stri+;/c
21、hange(stri+); while (!ti) ; /等待數(shù)據(jù)傳送完畢 ti = 0; /清中斷標(biāo)志 void inituart(void) / unsigned char buff; / p0 = 0xff; p2 = 0xff; scon = 0x50; /設(shè)定串口工作方式1,接收使能 pcon = 0x00; /波特率不倍增 tmod = 0x20; /定時(shí)器1工作于8位自動(dòng)重載模式, 用于產(chǎn)生波特率 ea = 1; tl1 = 0xfd; th1 = 0xfd; /波特率9600 tr1 = 1;/ delayms(100);/ send_str(str1); /發(fā)送英文字符串/
22、delayms(1000);/ txdata(n); /換行/ send_str(str2); /發(fā)送中文字符串/ delayms(1000);/ txdata(o);/ txdata(k);/ txdata(n); /換行/ delayms(1000);/ / send_str(g_uctempbuf); /發(fā)送序列號(hào)/void initwifi(void)send_sbuf(ch1);delayms(1000);send_sbuf(ch2);delayms(1000);send_sbuf(ch3);delayms(5000);send_sbuf(ch4);delayms(5000);sen
23、d_sbuf(ch5);delayms(5000);void main( ) unsigned char status; unsigned char mes4; unsigned char card10; unsigned char str=at+cipsend=4,10rn0; unsigned int i; initializesystem( ); pcdreset(); pcdantennaoff(); pcdantennaon(); inituart(); initwifi(); card0=c; card1=a; send_sbuf(at+cipsend=4,6rn0);delaym
24、s(1000);send_sbuf(123456rn0);delayms(1000) ; while ( 1 ) p2=0x00; led_green = 0; status = pcdrequest(picc_reqall, g_uctempbuf); /復(fù)位操作 if (status != mi_ok) led_green = 1; continue; status = pcdanticoll(g_uctempbuf); /防沖撞 if (status != mi_ok) continue; p2=0xff; status = pcdselect(g_uctempbuf); /選定卡片 i
25、f (status != mi_ok) continue; status = pcdauthstate(picc_authent1a, 1, defaultkey, g_uctempbuf);/驗(yàn)證卡密碼 if (status != mi_ok) continue; p2=0xff; else p2=0xff;for(i=0;i4;i+)mesi=g_uctempbufi;/printf(%c,mesi);card2=(unsigned char)(0x30+mes0/10);card3=(unsigned char)(0x30+mes0%10);card4=(unsigned char)(0
26、x30+mes1/10);card5=(unsigned char)(0x30+mes1%10);card6=(unsigned char)(0x30+mes2/10);card7=(unsigned char)(0x30+mes2%10);card8=(unsigned char)(0x30+mes3/10);card9=(unsigned char)(0x30+mes3%10);card10=0;send_sbuf(at+cipsend=4,10rn0);delayms(1000); send_sbuf(card); delayms(1000) ; status = pcdwrite(1,
27、 data1); /寫(xiě)數(shù)據(jù)到卡片 if (status != mi_ok) continue; p2=0xff; status = pcdvalue(picc_decrement,1,data2);/扣款和充值 if (status != mi_ok) continue; status = pcdbakvalue(1, 2);/備份錢包 if (status != mi_ok) continue; p2=0xff; status = pcdread(2, g_uctempbuf); /讀卡數(shù)據(jù) if (status != mi_ok) continue; p2=0xff; pcdhalt();
28、 /進(jìn)入休眠 /系統(tǒng)初始化/void initializesystem() p0m1 = 0x0; p0m2 = 0x0; p1m1 = 0x0;p1m2 = 0x0; p3m1 = 0x0; p3m2 = 0xff; p0 = 0xff; p1 = 0xff; p3 = 0xff; 連接wifi:package wifi;import java.io.ioexception;import .serversocket;import .socket;import java.util.concurrent.executorservice;import java.util.concurrent.ex
29、ecutors;public class server public static void main(string args) server server=new server();server.startserver();/啟動(dòng)服務(wù)器public void startserver()serversocket ss=null;try ss=new serversocket(9999);/設(shè)置連接端口為9999while(true)system.out.println(正在連接);socket s=ss.accept();/這是一個(gè)阻塞的方法system.out.println(連接成功);/
30、創(chuàng)建出一個(gè)線程來(lái) deviceuser deviceuser=new deviceuser(s);executorservice executorservice=executors.newfixedthreadpool(10);/設(shè)置一個(gè)最多只能容納10個(gè)線程的線程池。 executorservice.execute(deviceuser);/執(zhí)行該線程 catch (ioexception e) e.printstacktrace();接收數(shù)據(jù):package wifi;import java.io.ioexception;import java.io.inputstream;import
31、java.io.outputstream;import .socket;import java.sql.connection;import java.sql.preparedstatement;import java.sql.resultset;import java.sql.statement;import java.text.simpledateformat;import java.util.date;import javax.swing.joptionpane;public class deviceuser implements runnable public socket s = nu
32、ll;public inputstream is = null;public outputstream os = null;/ 構(gòu)造函數(shù),用于獲取相應(yīng)的通信的流public deviceuser(socket s) throws ioexception this.s = s;inputstream is = s.getinputstream();this.is = is;outputstream os = s.getoutputstream();this.os = os;/用于關(guān)閉流public void end() try this.os.close();this.is.close();th
33、is.s.close(); catch (exception e) e.printstacktrace();overridepublic void run() try while (true) byte b = new byte20;int i = is.read(b);string cardnum = new string(b);system.out.println(cardnum); if(cardnum.length()=6) hh=6; system.out.println(打卡+hh+小時(shí)); object option=打卡結(jié)束!+本次打卡+hh+小時(shí); joptionpane.s
34、howmessagedialog(null, option); string sq1=delete from ontime where number=?; /刪除打卡信息 preparedstatement pstmt2=conn.preparestatement(sq1); pstmt2.setstring(1,zh); pstmt2.executeupdate(); pstmt2.close(); rs2=stmt.executequery(select *from meber); while(rs2.next() if(zh.equals(rs2.getstring(number) break; int resttime=rs2.getint(resttime); if(resttime-hh0) object option0=還有+(resttime-hh)+小時(shí); joptionpane.showmessagedialog(null, option); string sq2=update meber set resttime=? where number=?; preparedstatement pstmt3=conn.preparestatement(sq2
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年鋁合金活動(dòng)隔斷門制作與安裝工程合同
- 2024年規(guī)范化藥品招標(biāo)協(xié)議范例版B版
- 2024年版:版權(quán)購(gòu)買合同標(biāo)的說(shuō)明
- 2024退休員工遠(yuǎn)程工作服務(wù)合同3篇
- 2025年度碎石生產(chǎn)與市場(chǎng)推廣服務(wù)合同范本3篇
- 2024房地產(chǎn)全程代理銷售合作協(xié)議
- 2024年粵桂股份股權(quán)轉(zhuǎn)讓初步合作合同簽訂版B版
- 2025年全球及中國(guó)企業(yè)管理系統(tǒng)服務(wù)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年度安全認(rèn)證塔吊安裝與安全監(jiān)管服務(wù)合同3篇
- 2025年全球及中國(guó)電動(dòng)卷簾車庫(kù)門行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 大學(xué)生心理健康教育教學(xué)進(jìn)度計(jì)劃表
- 班主任育人故事(通用17篇)
- 食品公司冷庫(kù)崗位風(fēng)險(xiǎn)告知卡
- 崗位安全培訓(xùn)考試題參考答案
- 南京某商城機(jī)電安裝施工組織設(shè)計(jì)
- 娛樂(lè)場(chǎng)所消防安全操作規(guī)程
- 宗教教職人員備案表
- 八年級(jí)歷史期末考試試卷質(zhì)量分析試卷分析
- 煙草專業(yè)個(gè)人簡(jiǎn)歷模板
- 變電所建設(shè)用地指標(biāo)
- 2023年重點(diǎn)研發(fā)計(jì)劃重大科技專項(xiàng)申報(bào)指南
評(píng)論
0/150
提交評(píng)論