




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、rfid课程设计 计算机科学与工程 学院 物联网工程 专业 312 班 设计题目: 驾校计时系统 组长: 成员: 本人在组内完成的主要工作: wifi模块 成 绩: 设计方案20%完成功能20%设计报告20%态度能力10%演示答辩30%学 号: 姓 名: 时 间: 2016.1.10 目录一、设计方案11. 系统功能实现12. wifi连接功能实现13. 系统流程图1二、硬件原理31. wifi模块简介32. wifi模块图4三、系统设计51. 数据传输程序设计52. 数据接收程序设计7四、系统测试及结果91. wifi调试92. 测试结果10五、设计总结12六、参考文献13七、附录13一、设
2、计方案1. 系统功能实现以ic卡号作为驾校人员的编号,用mrfc522读出卡号,将mrfc522通过wifi信号与数据库连接,再通过java和数据库的链接及操作进行打卡功能。第一次打卡表示开始计时,第二次打卡表示结束计时,以此循环。 根据驾校计时系统的需要,用java做了以下功能:1、新卡打卡进行注册,不是新卡直接打卡开始计时。2、开始计时,结束计时,打卡时长以及剩余打卡时长以及打卡记录。 3、所有的数据均在数据库的表中。2.wifi连接功能实现通过pc发送wifi,使wifi模块与pc进行连接并向pc传送数据:1、按要求将pc连接电源。2、通过串口调试助手对wifi模块进行调试,发送at指令
3、对wifi模块进行检测,如at+rst指令,表示重启模块。发送at+cwjap指令让模块连上自己的路由器。如果调试成功,就表示该wifi模块可以使用。3、在wifi模块中烧录程序,程序中设置可以连接上的无线路由名字和密码,将程序中的ip地址设置成与本机上的ip地址相同。4、将pc路由名字和密码设置成与程序中的相同,然后就能进行wifi连接了。5、通过wifi传送数据。3. 系统流程图(1) 系统流程图:(3)数据流程图:二、硬件原理1. wifi模块简介wi-fi模块又名串口wi-fi模块,属于物联网传输层,功能是将串口或ttl电平转为符合wi-fi无线网络通信标准的嵌入式模块,内置无线网络协
4、议ieee802.11b.g.n协议栈以及tcp/ip协议栈。传统的硬件设备嵌入wi-fi模块可以直接利用wi-fi联入互联网,是实现无线智能家居、m2m等物联网应用的重要组成部分。嵌入式wi-fi模块,32位单片机,内置wi-fi驱动和协议,接口为一般的mcu接口如uart等。适合于各类智能家居或智能硬件单品。 技术参数:单5v或3.3v供电工作温度范围: -45c +85c尺寸:32mm x 20mm x 4.5mm2. wifi模块图(1)、esp模块图(2)、原理图3.ic卡 智能ic卡工作的基本原理是:射频读写器向ic卡发一组固定频率的电磁波,卡片内有一个ic串联协振电路,其频率与读
5、写器发射的频率相同,这样在电磁波激励下,lc协振电路产生共振,从而使电容内有了电荷;在这个电荷的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内存储,当所积累的电荷达到2v时,此电容可作为电源为其它电路提供工作电压,将卡内数据发射出去或接受读写器的数据。接触式ic卡接口技术原理 ic卡读写器要能读写符合iso7816标准的ic卡。3、 系统设计1. 数据传输程序设计(1)wifi模块传输设计wifi模块通过at指令进行重启,设置模块为sta和ap模式,让模块连上自己的路由器,启动模块多连接,让模块连上我们的tcp服务器和发送数据。部分代码:(1)重启:unsigned char
6、 xdata ch1=at+rstrn0;(2)设置模块为sta和ap模式:unsigned char xdata ch2=at+cwmode=3rn0;(3)让模块连上自己的路由器:unsigned char xdata ch3=at+cwjap=qwe,12341234rn;(4)启动模块多连接:unsigned char xdata ch4=at+cipmux=1rn0;(5)让模块连上我们的tcp服务器:unsigned char xdata ch5=at+cipstart=tcp,,9999rn;(6) 发送数据:void main( ) unsigned
7、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);delayms(1000) ; whi
8、le ( 1 ) p2=0x00; led_green = 0; status = pcdrequest(picc_reqall, g_uctempbuf); /复位操作 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; status = pcdauthst
9、ate(picc_authent1a, 1, defaultkey, g_uctempbuf);/验证卡密码 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)(0x30+mes1%10)
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); /写数据到卡片 if (status != mi_ok) continue;
11、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); /读卡数据 if (status != mi_ok) continue; p2=0xff; pcdhalt(); /进入休眠 2. 数据接收程序设计(1)wifi连接代码如下:package wifi;imp
12、ort 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();/启动服务器public void startserver()server
13、socket ss=null;try ss=new serversocket(9999);/设置连接端口为9999while(true)system.out.println(正在连接);socket s=ss.accept();/这是一个阻塞的方法system.out.println(连接成功);/创建出一个线程来 deviceuser deviceuser=new deviceuser(s);executorservice executorservice=executors.newfixedthreadpool(10);/设置一个最多只能容纳10个线程的线程池。 executorservic
14、e.execute(deviceuser);/执行该线程 catch (ioexception e) e.printstacktrace();(2)连入数据库代码如下:public static connection getconnection()string url = jdbc:derby:/localhost:1527/jsy;/jsy代表要使用的数据库string user = jjj;string pwd = jjj;/数据库的密码connection conn=null ;try class.forname(org.apache.derby.jdbc.clientdriver);
15、conn = drivermanager.getconnection(url, user, pwd); catch (exception e) / todo auto-generated catch blocke.printstacktrace(); return conn;(3) 接收wifi传递的数据代码如下:/ 构造函数,用于获取相应的通信的流public deviceuser(socket s) throws ioexception this.s = s;inputstream is = s.getinputstream();this.is = is;outputstream os =
16、 s.getoutputstream();this.os = os;/用于关闭流public void end() try this.os.close();this.is.close();this.s.close(); catch (exception e) e.printstacktrace();四、系统测试及结果1.硬件调试检测各硬件模块是否断路或者短路,根据电路图查看接线线路是否正确。检测接线无误后,接入电源,测量各芯片的供电电压,检查无误后,进入软件调试阶段。2. 测试结果pc端显示获取的数据:wifi连接成功五、设计总结两周的课程和设计让我受益良多。这次课程设计使我对esp8266w
17、ifi模块有了一定的了解,知道了一些at指令,如at+rst指令、at+cwjap指令以及at+cipsend指令等,同时也对通过wifi接收数据也有了一定的认识,同样,这次课程设计也使我深深地认识到了自己的不足,以便让我在之后的学习中应当更加努力。当通过wifi接收数据时,我遇到了很大困难,经过与小组成员一起协商思考以及其他同学的帮助后,最后还是解决了这个困难。这次实验的基本功能都已经实现,但总体思路比较简单,系统不够完善,功能也较为简单。总的来说这次课程设计我学会了很多知识,获得了一些开发设计经验,为今后能够完成其他的设计奠定了基础。六、参考文献1射频识别(rfid)原理与应用,单承赣、单
18、玉峰,电子工业出版社。2esp8266开发资料7、 附录设计代码:通过 wifi模块发送数据#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;un
19、signed char xdata ch5=at+cipstart=tcp,,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卡的某一块写为如下格式,则该块为钱包,可接收扣款和充值命令/4字节金额(低字节在前)4字节金额取反4字节金额1字节块地址1字节块地址取反1字节块地址1字
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+;
21、/change(stri+); while (!ti) ; /等待数据传送完毕 ti = 0; /清中断标志 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; /波特率9600 tr1 = 1;/ delayms(100);/ send_str(str1); /发送英文字符串
22、/ delayms(1000);/ txdata(n); /换行/ send_str(str2); /发送中文字符串/ delayms(1000);/ txdata(o);/ txdata(k);/ txdata(n); /换行/ delayms(1000);/ / send_str(g_uctempbuf); /发送序列号/void initwifi(void)send_sbuf(ch1);delayms(1000);send_sbuf(ch2);delayms(1000);send_sbuf(ch3);delayms(5000);send_sbuf(ch4);delayms(5000);s
23、end_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);dela
24、yms(1000);send_sbuf(123456rn0);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_uctempbuf); /防冲撞 if (status != mi_ok) continue; p2=0xff; status = pcdselect(g_uctempbuf); /选定卡片
25、 if (status != mi_ok) continue; status = pcdauthstate(picc_authent1a, 1, defaultkey, g_uctempbuf);/验证卡密码 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)
26、(0x30+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(
27、1, data1); /写数据到卡片 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); /读卡数据 if (status != mi_ok) continue; p2=0xff; pcdhalt(
28、); /进入休眠 /系统初始化/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.
29、util.concurrent.executors;public class server public static void main(string args) server server=new server();server.startserver();/启动服务器public void startserver()serversocket ss=null;try ss=new serversocket(9999);/设置连接端口为9999while(true)system.out.println(正在连接);socket s=ss.accept();/这是一个阻塞的方法system.o
30、ut.println(连接成功);/创建出一个线程来 deviceuser deviceuser=new deviceuser(s);executorservice executorservice=executors.newfixedthreadpool(10);/设置一个最多只能容纳10个线程的线程池。 executorservice.execute(deviceuser);/执行该线程 catch (ioexception e) e.printstacktrace();接收数据:package wifi;import java.io.ioexception;import java.io.i
31、nputstream;import 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 run
32、nable public socket s = null;public inputstream is = null;public outputstream os = null;/ 构造函数,用于获取相应的通信的流public deviceuser(socket s) throws ioexception this.s = s;inputstream is = s.getinputstream();this.is = is;outputstream os = s.getoutputstream();this.os = os;/用于关闭流public void end() try this.os.
33、close();this.is.close();this.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+小时); object option=打卡结束!
34、+本次打卡+hh+小时; joptionpane.showmessagedialog(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)+小时; joptionpane.showmessagedialog(null, option); string sq2=update meber set resttime=? where number=?; preparedstatement pstmt3=conn.preparestatement(sq2); pstmt3.seti
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司内部人员借款合同
- 2025电力工程施工质量检查、验收及评定管理办法
- 2025全国数据资源统计调查制度
- 押金合同增补协议
- 农民合作社聘用合同
- 2025年辽宁货运从业资格证结业考试答案
- 发动机推进控制系统战略市场规划报告
- 光电电视测斜仪战略市场规划报告
- 豆腐乳战略市场规划报告
- 化肥使用赔偿合同范本
- 2025年高考物理二轮复习的教学对策与思考讲座
- 血液透析并发症头痛
- 职业病防护设施与个体防护用品的使用和维护
- 2023年全国职业院校技能大赛-直播电商赛项规程
- 绿化养护服务投标方案(技术标)
- 医疗事故处理条例解读专家讲座
- 《三国演义》诸葛亮人物介绍
- 博物馆跨界合作的趋势与挑战
- 学习新思想做好接班人演讲稿(5篇)
- 【甲醇液相催化法生产一氯甲烷的工艺设计13000字(论文)】
- DB32T3916-2020建筑地基基础检测规程
评论
0/150
提交评论