版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、童履厌z夬辱rfid课程设计计算机科学与工程 学院 物联网工程专业 312 班设计题目:驾校计时系统组长:成员:本人在组内完成的主要工作:wifi模块成 绩:设计方案20%完成功能20%设计报告20%态度能力10%演示答辩30%学 号:姓 名:时 间:2016丄10目录一、设计方案21. 系统功能实现22. wifi连接功能实现33. 系统流程图3二、硬件原理41. wifi模块简介42. wifi模块图43.ic 卡6三、系统设计61. 数据传输程序设计62. 数据接收程序设计8四、系统测试及结果101. 侦件调试102. 测试结果11pc端显示获取的数据:wifi连接成功11五、设计总结1
2、1六、参考文献12七、附录12一、设计方案1. 系统功能实现以tc卡号作为驾校人员的编号,用mrfc522读出卡号,将mrfc522通过wifi信号与数 据库连接,再通过java和数据库的链接及操作进行打卡功能。第一次打卡表示开始计时, 第二次打卡表示结束计时,以此循环。根据驾校计时系统的需要,用java做了以下功能:1、新卡打卡进行注册,不是新卡直接打卡开始计吋。2、开始计时,结束计时,打卡时长以及剩余打卡时长以及打卡记录。3、所有的数据均在数据库的表中。2wifi连接功能实现通过pc发送wifi,使wifi模块与pc进行连接并向pc传送数据:1、按要求将pc连接电源。2、通过串口调试助手对
3、wifi模块进行调试,发送at指令对wifi模块进行检测,如at+rst 指令,表示重启模块。发送at+cwjap指令让模块连上自己的路由器。如果调试成功,就表 示该wifi模块可以使用。3、在wifi模块中烧录程序,程序中设置可以连接上的无线路由名字和密码,将程序中的tp 地址设置成与木机上的tp地址相同。4、将pc路由名字和密码设置成与程序中的相同,然后就能进行wifi连接了。5、通过wifi传送数据。3 系统流程图(1)系统流程图:(3)数据流程图:二、硬件原理1. wifi模块简介wifi模块又名串口wifi模块,属于物联网传输层,功能是将串口或ttl电平转为符合 wifi无线网络通信
4、标准的嵌入式模块,内置无线网络协ixieee802.11b.g.n协议栈以及 tcp/ip协议栈。传统的硬件设备嵌入wifi模块可以直接利用wifi联入互联网,是实现无线 智能家居、m2m等物联网应用的重耍组成部分。恢入式wifi模块,32位单片机,内置wifi 驱动和协议,接口为一般的mcu接口如uart等。适合于各类智能家居或智能硬件单品。技术参数:单5v或3.3v供电工作温度范围:45°0+85°0尺寸:32mm x 20mm x 4.5mm2. wifi模块图(2).原理图» nb3c卡智能tc卡工作的基木原理是:射频读写器向tc卡发一组固定频率的电磁波,
5、卡片内 有一个ic串联协振电路,具频率与读写器发射的频率相同,这样在电磁波激励卜lc协振 电路产生共振,从1何使电容内有了电荷;在这个电荷的另一端,接有一个单向导通的电子泵, 将电容内的电荷送到另一个电容内存储,当所积累的电荷达到2v时,此电容可作为电源为 其它电路提供工作电压,将卡内数据发射出去或接受读写器的数据。接触式1c卡接口技术 原理tc卡读写器要能读写符合is07816标准的tc卡。三、系统设计1 数据传输程序设计(1)wifi模块传输设计wifi模块通过at指令进行重启,设置模块为sta和ap模式,让模块连上自己的路 由器,启动模块多连接,让模块连上我们的tcp服务器利发送数据。部
6、分代码:(1)重启:unsigned char xdata chl = ,at+rstrn0"(2 )设置模块为 sta 和 ap 模式:unsigned char xdata ch2="at+cwmode=3rn0h;(3) 让模块连上自己的路由器:unsigned char xdata ch3=,at+cwjap=,qwe,>,12341234,rnh;(4) 启动模块多连接:unsigned char xdata ch4 = "at+cipmux=lrn0"(5) 让模块连上我们的tcp服务器:unsigned char xdata ch5=
7、”at+cipstart=”tcpj”192168:l9:l:l”,9999rrr'(6)发送数据:void main()unsigned unsigned unsigned unsigned unsignedchar status;char mes4;char card10;char str="at+cipsend=4j10rn0"int i;initializesystem(); pcdreset();pcdantennaoff(); pcdantennaon();inituart();initwifi();card0=,c,;cardl='a'
8、send_sbuf(,at+cipsend=4>6rn0");delayms(1000);send_sbuf(,123456rn0m);delayms(1000);while ( 1 )p2=0x00;led_green = 0;status = pcdrequest(picc_reqallj g_uctempbuf);/复位操作if (status != mi_ok)led_green = 1;continue;status = pcdanticoll(g_uctempbuf);/防冲撞if (status != mi_ok)continue;p2=0xff; status
9、= pcdselect(g_uctempbuf);/选定卡片if (status != mi_ok) continue;status = pcdauthstate(picc_authentla> 1, defaultkey? g_uctempbuf);/验证卡密码if (status != mi_ok) continue;p2=0xff; elsep2=0xff;for(i=0;i<4;i+)mesi=g_uctempbufi; /printf (,%c,>mesi);card2=(unsigned char)(0x30+mes0/10);card3=(unsigned ch
10、ar)(0x30+mes0%10); card7=(unsigned char)(0x30+mes2%10); card8=(unsigned char)(0x30+mes3/10); card9=(unsigned char)(0x30+mes3%10); card10=,0,;card4=(unsignedchar)(0x30+mesl/10);card5=(unsignedchar)(0x30+mes1%10);card6=(unsignedchar)(0x30+mes2/10);send_sbuf(uat+cipsend=4,10rn0n); delayms(1000);send_sb
11、uf(card); delayms(1000);status = pcdwrite(l, datal);/写数据到卡片if (status != mi_ok) continue;/扣款和充值p2=0xff; status = pcdvaluecpicdecrement, 1, data2);if (status != mi_ok) continue; status = pcdbakvalue(l> 2);/备份钱包if (status != mi_ok) continue;p2=0xff; status = pcdread(2, g_uctempbuf);/读卡数据if (status
12、!= mi_ok) continue;p2=0xff; pcdhalt();/进入休眠2. 数据接收程序设计(1) wifi 连接代码如下:package wifi;import java.io.ioexception;import .serversocket;import javanet.socket;import javautil.concurrentexecutorservice;import javautilconcurrentexecutors;public class server public static void main(string args) server server
13、二new server(); server.startserver();/启动服务器public void startserver()serversocket ss=null;try ss=new serversocket(9999);/设置连接端口为 9999 while(true)system. out printin (”正在连接”);socket s=ss.accept();/这是一个阻塞的方法system.out. print in ("连接成功”);/创建出一个线程来deviceuser devicellser=new devicellser(s);executorser
14、viceexecutorservice=executors.newfixedthreadpool(10);/设置一个最多只能容纳 10 个线 程的线程池。executorservice execute(deviceuser);/执 行该线程 catch (ioexception e) e.printstacktrace();(2)连入数据库代码如下:public static connection getconnection()string url = "jdbc: derby:/localhost: 1527/jsy"/jsy 代表要使用的数据 库string user
15、= "jjj"string pwd = "jjj"/数据库的密码connection conn=null ;try class forname("org.apachederbyjdbc clientdriver"); conn = drivermanager.getconnection(url, user, pwd); catch (exception e) / todo auto-generated catch block eprintstacktrace();return conn;(3)接收wifi传递的数据 代码如下:/构造函
16、数,川于获取相应的通信的流public deviceuser(socket s) throws ioexception this.s = s;inputstream is = s.getlnputstream(); this is = is;outputstream os = s>getoutputstream(); this.os = os;/用于关闭流public void end() try this.os.close();this.is.close(); this.s.close(); catch (exception e) e>printstacktrace();us系统
17、测试及结果1硬件调试检测各硬件模块是否断路或者短路,根据电路图查看接线线路是否正确。检测接线无误 后,接入电源,测量各芯片的供电电压,检査无误后,进入软件调试阶段。2. 测试结果pc端显示获取的数据:wifi连接成功123456cas09a4:2五、设计总结两周的课程和设计让我受益良多。这次课程设计使我对esp8266w1f1模块有了一定的了 解,知道了一些at指令,如at+rst指令、at+cwjap指令以及at+c1psend指令等,同时也 对通过wifi接收数据也有了一定的认识,同样,这次课程设计也使我深深地认识到了口己 的不足,以便让我在之后的学习中应当更加努力。当通过wifi接收数据
18、时,我遇到了很大 困难,经过与小组成员一起协商思考以及其他同学的帮助后,最后还是解决了这个闲难。这次实验的基木功能都已经实现,但总体思路比较简单,系统不够完善,功能也较为简 单。总的來说这次课程设计我学会了很多知识,获得了一些开发设计经验,为今后能够完成 其他的设计奠定了基础。六、参考文献1 射频识别(rftd)原理与应用,单承赣、单圭峰,电子工业出版社。2 esp8266开发资料七、附录设计代码:通过wifi模块发送数据#include "lpcreg.h"#include 11 main h'*#include "mfrc522.hh #inelude
19、 <stdio.h> /#include nreg52.h"#include “tempsh"unsigned unsigned unsigned unsigned unsignedcharcharcharcharcharint num =1;unsigned char unsignedxda taxda taxda taxdataxda taxda tachl=nat+rstrn0n;ch2=l,at+cwmode=3rn0,1;ch3=,at+cwjap=l,qwel,j,l12341234,rn11;ch4=,at+cipmux=lrn0,1;ch5=&q
20、uot;at+c:lpstart=tcpjt92:l68:l9:l:lj9999rrr;ch6 =i,at+cipsend=4,2rn0n;charcodedatal160x12,0x34,0x56,0x78,oxed.oxcb.oxag,0x87,0x12,0x34,0x56,0x78,0x01,0xfe,0x01,0xfe;/m2卡的某一块写为如下格式,则该块为钱包,可接收扣款和充值命令/4字节金额(低字节在前)+4字节金额取反+4字节金额+ 1字节块地址+ 1字节块地址収反+ 1字节 块地址+ 1字节块地址取反 void delayms(unsigned int ms) unsigned
21、 charcode data24=0x12,0,0,0;unsigned charcode defaultkey6 = 0xff, 0xff, 0xff, 0xff, 0xff, 0xff;unsignedchar g_uctempbuf20;int ij;for(i=0;i<ms;i+)for(j=0;j<114;j+)void send_sbuf(unsigned char *str) unsigned char i = 0;while (stri != 10*) sbuf = stri+;/change(stri+);while (!ti)等待数据传送完毕ti = 0; 淸中
22、断标志void inituart(void)/ unsigned char buff;/ p0 = 0xff;p2 = 0xff;scon = 0x50; /设定串口工作方式1,接收使能pcon = 0x00; /波特率不倍增tmod = 0x20; /定时器1工作于8位门动重载模式,用于产牛波特率ea = 1;tl1 = 0xfd;th1 = 0xfd; /波特率 9600tri = 1;1111illi delayms(100);illiilli send_str(strl); /发送英文字符串illi delayms(1000);illi txdatacxn*); /换行illi sen
23、d_str(str2); 发送中文字符串illi delayms(1000);illiilli txdata('o');illi txdata('k');illi txdatacn'); 换行illi delayms(1000);illiilli ii send_str(g_uctempbuf); 发送序列号/void initwifi(void)send_sbuf(chi);delayms(1000);send_sbuf(ch2);delayms(1000);send_sbuf(ch3);delayms(5000);send_sbuf(ch4);del
24、ayms(5000);send_sbuf(ch5);delayms(5000);void main()unsigned char status;unsigned char mes4;unsigned char card10;unsigned char str=hat+cipsend=4>10rn0n; unsigned int i;initializesys);pcdreset();pcdantennaoff();pcdantennaon();inituart();initwifi();card0='c*;cardl = lat;send_sbuf (l'at+cipse
25、nd=4j 6rn0h);delayms(1000);send_sbuf (l,123456rn0,1);delayms(1000);while ( 1 )p2=0x00;复位操作led_green = 0;status = pcdrequest(picc_reqall g_uctempbuf); if (status != mi_ok)led_green = 1;continue;status = pcdanticoll (g_uct empbuf);/防冲撞if (status != mi_ok)continue;p2=0xff; status = pcdselect(g_uctempbu
26、f);/选定卡片if (status != mi_ok) continue;status = pcdauthstatecpiccauthentla 1, defaultkey g_uctempbuf);/验证卡密码if (status != mi_ok)continue;p2=0xff; elsep2=0xff;for(i=0;i<4;i+)mesi=g_uctempbufi; /printf(“c”esi);card2=(unsigned char)(0x30+mes0/10); card3=(unsigned char)(0x30+mes0%10); card4=(unsigned
27、char)(0x30+mesl/10); card5=(unsigned char)(0x30+mesl%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 (llat+cipsend=4j 10rn0h); delayms(1000);send_sbuf(card);delayms(1000)
28、;status = pcdwrite(l, datal);/写数据到卡片if (status != mi_ok)continue;p2=0xff; /扣款和充值status = pcdvalue(picc_decrement,l,data2);if (status != mi_ok)continue;status = pcdbakvalue(l 2);/备份钱包if (status != mi_ok)continue;读卡数据p2=0xff; status = pcdread(2 g_uctempbuf); if (status != mi_ok)continue;p2=0xff; pcdha
29、lt();/进入休眠/系统初始化/void initializesystem()p0m1=0x0;p0m2 = 0x0;p1m1=0x0;p1m2 = 0x0;p3m1=0x0;p3m2 = 0xff;p0 =0xff;pl = 0xff; p3 = 0xff;连接wifi :package wifi;import java.io.ioexception;import serversocket;import .socket;import java.util.concurrentexecutorservice;import java.util.concurrent.executors;publi
30、c class server public static void main(string args) server server=new server();server.staltserver();/启动服务器public void startserver()serversocket ss=nu11;try ss=new serversocket(9999);/设置连接端口为 9999while(true)system. out. printin (” 正在连接”);socket s=ss.accept();/这是一个阻塞的方法system. out. printin ("连接成功
31、");/创建出一个线程來deviceuser deviceuser=new devicellser(s);executorservice executorservice=executors.newfixedthreadpool(10);/设置一个最多只能容纳10个线程的线程池。executorservice. execute (deviceuser); /执行该线程 catch (ioexception e) e.printstacktrace();接收数据:package wifi;import java.io.ioexception;import javaio.inputstre
32、am; import java.io.outputstream;import javanet>socket;import java>sql.connection;import javasqlpreparedstaternent; import java.sql.resultset;import java.sqles tat erne nt; import javatextsimpledateformat; import java>util>date;import javax.swing.joptionpane;public class deviceuser implem
33、ents runnable public socket s = null;public inputstream is = null;public outputstream os = null;/构造函数,用于获取相应的通信的流public devicellser(socket s) throws ioexception this.s = s;inputstream is = s.getlnputstream();this is = is;outputstrearn os = s.getoutputstream(); this.os = os;用于关闭流public void end() try
34、 this.os.close();this.is.close();thises<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.outprintin(cardnum);if(cardnum.length()<71|cardnum.equals("123456”);elsetryco
35、nnection conn=db.getconnection();statement stmt=null;resultset rs=nu11,rs2=nu11 rs3二nu11;stmt=conncreatestatement();string zh=null;int k=0;rs3=stmt.executequery("select *from code"); /编码队列 while(rs3next()if (card num. equals (rs3.ge tstrin g(llcode")system. out. print in (rs3. getstri
36、ng( "number ")+"为该卡号k=l;zh=rs3 getstring(”number"); break;if(k=l)rs=stmt. execut equery ("select *from ontime"); /数据库队列/ jtextfield2.settext(zh);/获取账号int z=0;while(rsnext()if (zh equals (rs getstring(''n umber")”);sys tem out print in (rs getstr ing( ”nu mb
37、er")+n :正在打卡 z=l;break;simpledateformat df = new simpledateformat(”yyyymmddssn); /时间system011上卩:111七1门(df.format(new date();/ jlabell. settext(df. format (new date();/显示打卡时if(z=0)int j=0;rs2=stmtexecutequery(”select *from meber");while(rs2.next()查看if (zh. equals(rs2.ge tstr in g(h nu mber1
38、1)是否有该账户sys tem out print in (rs2 getstr ing (” nu mber”)+ ”:正在打r j=l;break;if(j=l)object option="正在打卡";joptionpane.showmessagedialog(nu11, option);system. out. printin ("开始打卡");string sq=,finsert into ontime values?)”;preparedstatement pstmt=conn.preparestatement(sq); pstmtsetst
39、ring(l zh);pstmtsetstring(2df.format(new date();pstmtexecuteupdate();pstmtclose();else object option=h该卡号未注册“;joptionpane.showmessagedialog(nu11, option);elsesystem. out. printin (“打卡结朿“);/打卡结束string ll=df.format(new date();date dl=dfparse(ll);string 12二rs getstring(mestart”);date d2=df.parse(12);st
40、ring sqlrocord=hinsert into record values(?,?,?)”;/记录preparedstatementpstmtl=conn.preparestatement(sqlrocord);pstmtlsetstring(lzh);pstmtl setstring(2, 12);pstmtl.setstring(3, 11);pstmtlexecuteupdate();pstmtl>close();systemoutprintin(rs.getstring(ntimestart");long h2=d2.gettime();long hl=dl.g
41、ettime();long sj=hl-h2;int hh=(int) (sj/3600000);if(hh>=6) hh=6;system.out.println(h 打卡,+hh+n 小时”);object option=h打卡结束!”+“本次打卡"+hh+h小时”;joptionpane.showmessagedialog(nu11, option);日言息string sql="delete from ontime where number=?m;/删除打preparedstatement pstmt2=conn.prepaystatement(sql); p
42、stmt2.setstring(ljzh);pstmt2executeupdate();pstmt2.close();rs2=stmt.executequery(”select *from meber");while(rs2 .nexto)if(zh.equals(rs2.getstring(hnumber")break;int resttime=rs2 getlnt(f,resttime");if(resttimehh>0)object option0="还有"+(resttime-hh)+"ds时";joptionpane.showmessagedialog(nu11, option);string sq2=nupdate meber set resttime=? where number=?"preparedstatement pstmt3=connpreparestatement(sq2);pstmt3>setlnt(1,resttime-hh);pstmt3setstring(2, zh);pstmt3 execu tellpda te();pstmt3>close();elseobject option"
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年贵港客运从业资格证考试培训试题和答案
- 2024年宣城道路客运输从业资格证考试真题保过
- 2024年漯河客运上岗证模拟考试题
- 2024年太阳能光伏发电项目合同
- 第七章《复数》单元必刷卷(培优卷)(全解全析)
- 考点13免疫调节-2022年高考生物十年高考全国卷真题考点分类训练(原卷版)
- 2024年度智能家居产品销售合同
- 消防水鹤工程施工方案及主要技术措施
- 种子学基础知识
- 高刚度混杂碳纤维复合材料的制备与性能
- 南京理工大学2015年613物理化学(含答案)考研真题
- 初中数学应用题解题思路分享
- 安全生产科技创新与应用
- 人工智能在文化传承与遗产保护中的价值实现
- 2024年汽修厂开业计划书
- ISTA标准-2A、2B、2C系列解读(图文)
- 日间手术应急预案方案
- 退费账户确认书
- 幼儿园小班《汽车滴滴响》
- 杭州娃哈哈精密机械有限公司新增年产40000台展示冰柜产品生产线的技术改造项目环境影响报告
- 安徽省示范高中培优联盟2023-2024学年高一上学期冬季联赛数学试题(含答案)
评论
0/150
提交评论