【《基于RFID的衣物洗涤管理系统设计与实现》7300字】_第1页
【《基于RFID的衣物洗涤管理系统设计与实现》7300字】_第2页
【《基于RFID的衣物洗涤管理系统设计与实现》7300字】_第3页
【《基于RFID的衣物洗涤管理系统设计与实现》7300字】_第4页
【《基于RFID的衣物洗涤管理系统设计与实现》7300字】_第5页
已阅读5页,还剩31页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-[1]。在智能衣物洗涤管理系统上也有一定程度上的应用。1.3课题的主要研究内容本课题基于单片机平台,利用单片机技术、RFID技术和无线通信等技术,设计一种衣物洗涤管理系统。实现对衣物状态进行监测,对衣主进店次数进行记录。具体研究内容有:(1)对在液晶屏上显示衣主信息的方法进行研究;(2)对通信模块,驱动电路,降压模块,蜂鸣器模块等进行选型并进行相关模块的硬件电路设计,并且尽可能降低成本;(3)利用蜂鸣器报警提示读写卡;(4)对衣物洗涤管理系统进行硬件设计及调试,软件设计以及软件的调试,最后再进行整体的调试;

2系统设计方案本课题需要研究的系统设计方案有以下五部分。2.1系统总体设计方案本次课题所设计的系统主要由电源模块、通信模块、降压模块、LCD显示屏模块、蜂鸣器模块、下载模块、RFID模块和蓝牙模块组成。在进行RFID标签识别时,标签进入读写器发射射频场后,将天线获得的感应电流经升压电路后作为芯片的电源,同时将带信息的感应电流通过射频前端电路变为数字信号送入逻辑控制电路进行处理,需要回复的信息则从标签存储器发出,经逻辑控制电路送回射频前端电路,最后通过天线发回读写器。可以利用蓝牙模块和移动设备进行通信。系统框架如图2.1所示图2.1系统总体方案设计框图2.2微控制器设计方案本次的课题是基于微处理器平台实现功能,可供选择的单片机有STC89C51单片机以及STC89C52单片机:STC89C51:最高工作频率80MHz,芯片内集成了通用八位中央处理器和ISPFlash存储单元,有40个引脚,其功耗低,电路和编程简单,但是扩展性低,负载能力不是很突出,价格便宜,一般在4-6元之间。STC89C52:相比于STC89C51,STC89C52内部ROM增加了4K,内部FLASH变大,增加了128字节的内部RAM,还增加了一个定时器/计数器T2。价格一般在7-16元之间。在本次课题设计中,其实选用STC89C51和STC89C52都可以的,但是STC89C52选择性更优,更适合本系统的设计要求。2.3RFID设计方案关于本次的课题可供选择的RFID模块有RC522和PN532。PN532:此器件带40kBROM和1kBRAM的80C51微控制器内核,有高度集成的模拟电路,解调和译码效应,集成了数据模式检测器。支持SPI接口、I2C接口和串行UART。支持ISO/IEC14443A,只在读写器模式中支持ISO/IEC14443B协议。RC522:RC522是高集成度的调制解调电路,支持ISO/IEC14443TypeA通信协议,支持10Mbit/s的SPI接口和I2C接口以及串行UART,内置温度传感器,以便在芯片温度过高时自动停止RF发射,用相互独立的多组电源供电,以避免模块间的相互干扰,提高工作的稳定性。虽然PN532协议支持的类型比RC522多,但是RC522就已经符合本次设计的要求了,从实用性、综合性等角度考虑,本次设计所选用RFID器件为RC522。2.4无线传输设计方案在设计本系统无线传输数据的方案时,应该考虑到无线传输的传输效率。在本系统中,考虑到经济成本等因素,可供选择的有:(1)HC-04:HC-04属于低功耗蓝牙,可替换HC-05/06/08/09,具有尺寸小,性价比高等优点。(2)HC-05:HC-05虽然很实用,但是是蓝牙2.0的,是属于比较落后的了,若使用苹果手机无法进行测试。综上所述,考虑到成本、实际应用等因素,本系统的无线通信设计方案选用HC-04蓝牙模块,从而实现衣主的信息传输到移动设备端。2.5液晶显示设计方案本次课题设计的显示模块主要是将衣主数据信息传送到显示屏上,方便查看信息,因此可以供选择的有:(1)LCD1602:LCD1602是一种工业字符型液晶显示器,能够同时显示32个字符,显示原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示。优点:1、是字符型液晶,显示字母和数字比较方便。2、控制简单。3、成本较低。缺点:1、显示的字体有大小限制。2、不能显示图形等等。3、它不能显示曲线。(2)LCD12864液晶显示:LCD12864是一种图形点阵液晶显示器,可以完成图形的显示。优点:1、功耗低。2、体积娇小不占面积。3、重量轻,超薄等。缺点:1、LCD12864液晶显示信息量大,相当来说程序和电路都比较复杂。2、价格较高。根据实际应用的情况,LCD1602就能满足此次课题设计要求,并且成本还较低,因此液晶显示屏选择LCD1602。

3系统硬件设计本次课题设计的系统硬件电路设计主要分为以下八个部分。3.1STC89C52单片机最小系统电路本系统采用的单片机是STC89C52单片机,STC89C52是一种低功耗、高性能CMOS8位微控制器,其最小系统包括主控芯片,晶振以及I/O口。提供复位(见电源开关)和时钟晶振,外加两个电容帮助晶振起振以及维持振荡信号的稳定。图3.1STC89C52最小系统原理图3.2RFID模块本设计的RFID模块所选用的为RC522。RC522利用先进的调制和解调概念,完全集成了在13.56MHz下所有类型的被动非接触式通信方式和协议。支持快速CRYPTO1加密算法,用语验证MIFARE系列的产品。此外还支持14443A兼容应答器信号。数字部分处理ISO14443A帧和错误检测。RC522支持MIFARE系列更高速的非接触式通信,双向数据的传输速率高达424kbit/s。图3.2RC522原理图3.3蓝牙模块本设计采用HC-04蓝牙通信模块。HC-04无线通信模块接口原理图如图3.3所示。图3.3无线通信模块接口原理图3.4LCD模块本次设计采用LCD1602显示屏显示衣主信息。LCD1602液晶显示优点是字符型液晶,显示字母和数字比较方便、控制简单、成本较低。该模块有16个引脚,第一个引脚为GND接电源地;第二个引脚VCC接5V电源正极;第七到十四引脚为8位双向数据端。其电路原理图如图3.4所示。图3.4OLED显示模块原理图3.5蜂鸣器模块蜂鸣器工作原理为外部提供恒定直流电压,先提供能量给多谐振荡器,然后多谐振荡器起振,并提供变化的电压和频率给压电陶瓷,最后压电陶瓷将电能转化为机械能,发出了声音。当RFID模块检测到卡的信息时,蜂鸣器会报警提示。蜂鸣器原理图如图3.5所示。图3.5蜂鸣器原理图3.6电源接口模块电源采用的是USB供电,其供电电源接口原理图如图3.6所示图3.6电源接口原理图3.7降压电路AMS1117-3.3是一种输出电压为3.3V的正向低压降稳压器,将5V电压将转换为3.3V,是属于线性的降压。降压模块作用可固定输出电压。3.3V降压电路原理图如图3.7所示。图3.7降压电路原理图3.8下载模块电路本次课题采用的是四排针插座作为程序下载外接口。使用此电路下载程序,其电路原理图如图3.8所示。图3.8下载模块电路原理图

4系统软件设计本次课题设计的实现需要用到Keil来编写单片机部分代码和Andriodstudio来编写蓝牙模块部分代码,因此用到的软件有Keil和Andriodstudio等软件进行编程。Keil属于目前最流行的开发MCS-51系列单片机的一种软件,Keil软件是一款有着丰富的库函数和功能强大的集成开发调试工具,其中Keil提供了连接器、C编译器、库管理等完整的开发方案。Andriodstudio是谷歌推出的一种基于IntelliJIDEA且类似于EclipseADT的Android集成开发工具。其具有丰富的性能和测试工具,还具有强大的布局编辑器,有着快速和功能丰富的模拟器,总之是一款提供了更多提高Andriod应用的构建效率的功能的软件。4.1Keil主程序设计此主程序主要实现的是:实现对各模块的器件的连接以及综合测试各模块功能是否良好无误。主程序流程图如图4.1所示。图4.1Keil主程序流程图4.2RC522程序设计关于RFID模块,本次设计使用RC522模块,此程序进行简单的读寻卡操作,以及进行接收数据。程序流程图如图4.2所示。图4.2RC522程序流程图4.3无线通信程序设计此次设计所用的蓝牙型号为HC-04,此程序主要实现的是:利用蓝牙HC-04模块传输数据。无线通信程序流程图如图4.3所示。图4.3无线通信程序流程图4.4LCD1602显示程序设计LCD1602显示程序主要实现的是:显示衣主的信息数据以及对衣主进入店次数进行显示。显示程序流程图如图4.4所示。图4.4显示程序流程图

5系统调试5.1硬件调试对硬件的调试是为了进行测试硬件电路是否可以正常使用,主要对以下四个方面进行调试检测:首先对照预先对照原理图列出的器件清单检查自己所购买的器件是否已经齐全以及是否正确。无误后可进行下一步操作。然后对照所画原理图以及PCB完成板的焊接,使用万用表检查是否有误,倘若没有出现电源正极与负极间通路的现象,并且没有空余的焊盘,说明焊接完成良好。然后再对板进行上电检查。若显示屏正常发亮,如图5.1所示,且没有冒烟现象、不正常发热的发热现象、以及烧焦的味道等短路现象出现,说明各模块的电路可以正常使用。图5.1上电显示结果最后再进行整体的电路调试。若电路整体运行稳定,说明硬件调试成功。5.2软件调试本系统的软件调试主要分为两部分:单片机主程序的代码编写:主要是对RC522、LCD1602显示屏的代码编写。首先实现对各部分的代码编写,然后编写单片机主函数。编译结果如图5.2所示。图5.2编译结果(2)蓝牙模块HC-04部分的代码编写:主要是利用AndroidStudio对代码进行编写。首先编写各个部分的子函数,然后编写主函数。然后先用虚拟机进行演示,演示结果如图5.3所示。图5.3安卓手机程序编译结果5.3系统综合调试综合调试是将解决整体运行后出现的逻辑错误等问题,并判断最终现象是否符合研究内容。将程序烧录后,然后给板子通电后,能准确读取到衣主信息并在LCD1602上进行显示。如图5.4所示。图5.4LCD1602显示信息当手机打开蓝牙,进行蓝牙搜索后找到HC-04并进行连接后,在板子上按下读取键。手机上显示衣主信息和衣物状态信息和LCD1602显示衣主信息。调试结果如图5.6所示。图5.5手机端显示衣主及衣物状态信息结果

结论本次课题设计是基于RFID的衣物洗涤管理系统,完成此次设计需要用到Keil和Andriodstudio等编程软件进行对程序的编写。且在基于RFID的进行功能实现,RFID发展前景也是非常大。具有一定的研发意义以及社会性价值。首先得确定系统的总体设计方案,此次方案各模块系统由电源模块;通信模块、降压模块、LCD显示模块、蜂鸣器模块、下载模块、RFID模块和蓝牙模块组成,进行各模块的初步设计以及选型。在进行RFID标签识别时,标签进入读写器发射射频场后,将天线获得的感应电流经升压电路后作为芯片的电源,同时将带信息的感应电流通过射频前端电路变为数字信号送入逻辑控制电路进行处理,需要回复的信息则从标签存储器发出,经逻辑控制电路送回射频前端电路,最后通过天线发回读写器。可以利用蓝牙模块和移动设备进行数据的传输。使用Keil编写单片机的主程序以及LCD1602和RC522模块的程序,编写完成后在进行编译,查看编译是否有误,无误后再准备最后的软件以及硬件进行综合调试。然后用Andriodstudio对蓝牙模块部分代码进行编写,编译无误后,用虚拟机进行界面的演示是否符合自己要求,在进行apk的转换,以待最后的综合调试。理论上本次设计在洗衣店中是能够用到的,其次后面的功能可以再进行细节上的完善。本文具体分析了各硬件电路的设计方法以及各个模块的器件选型,并且给出了对应的软件开发程序以及软件的程序流程图。最后在本次设计的整个研究过程中,本次设计充分的考虑经济成本以及实用性还有合理性和美观性等因素。在选择器件时应充分考虑成本和实用性。在进行硬件的焊接时,应该选择适合的焊接工具,以及使用毒性比较小的无铅焊锡。保证每次焊接结束时及时切断电烙铁的电源,以免长时间的通电导致工具的损坏和避免发生火灾危险。焊接时应当仔细确认器件型号以及对照原理图进行焊接。

参考文献尹俊明.许升.黄振兴.RFID衣物识别技术在洗衣机上的应用和研究.青岛海尔滚筒洗衣机有线公司,2018.周航慈.饶运涛.单片机程序设计基础[M].北京:北京航空航天大学出版社,2001.KlausFinkenzeller,陈天才.射频识别(RFID)技术[M].北京:电子工业出版社,2001.桂舜尧.智能洗衣机模糊控制系统[D]。上海:上海交通大学,1997.李玉斌,余国修.基于条形码-RFID复合标签的资产盘点系统[J].电子科技,2018,31(11):69-71.格兰仕力推“G+滴嘀”智能滚筒洗衣机[J].赵明.

电器.

2015(08)基于RFID的一次设备无源测温系统的设计与实现[J].虞坚阳,杨正平,蒋春亚,李水祥,覃兆宇.华中师范大学学报(自然科学版).

2015(04)基于单片机的实现远程控制的智能除湿衣柜[J].郁一波,陈锐,赵紫权,唐武宾,张林鹏,孟祥兴,王丹.工业控制计算机.

2018(10)S.Chawathe,V.Krishnamurthy,S.Ramachandran,andS.Sarma.ManagingRFTDdata.InProc.Intl.Conf.VeryLargeDatabases(VLDB

04).K.finkenzeler.RFIDManual:thebasisandapplicationofcontactlesssmartcardandidentification.JohnWileyandson,2003UHFRFIDtagantennawithbroadbandcharacteristic.XuL,HuBJ,WangJ.ElectronicsLetters.2008Antennaefficiencysalculationsforelectricallyantennaefficiencycalculationsforelectrically.AmirGalehdar,DavidVThiel,StevenG.O‘Keefe.IEEEAntennasandWirelessPropagationLetters.2007

附录A硬件原理图及PCB图

附录B软件代码#include"lpcreg.h"#include"main.h"#include"mfrc522.h"#include"1602.h"#include<STDIO.H>#include<string.h>sbitkey1=P3^7; //按键接口sbitbe=P3^6; //蜂鸣器接口charbuf[15];unsignedcharstatus,i;unsignedinttemp;unsignedcharg_ucTempbuf[20];voiddelay1(unsignedintz){ unsignedintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }voidbess(){be=0;delay1(200); be=1;}voidmain(){ intzs=0,ls=0; InitializeSystem(); lcd1602_init();//液晶初始化 hz_lcdDis(0,2,"RFID-System");hz_lcdDis(1,0,"name:--null--");EA=1; //开启总中断PcdReset();PcdAntennaOff();PcdAntennaOn(); printf("initok");be=1; while(1){ if(key1==0){//读卡操作序列号 hz_lcdDis(1,0,"name:--null--"); status=PcdRequest(PICC_REQALL,g_ucTempbuf);//寻卡 if(status!=MI_OK) { InitializeSystem(); PcdReset(); PcdAntennaOff(); PcdAntennaOn(); continue;//等待 } status=PcdAnticoll(g_ucTempbuf);//防冲撞 if(status!=MI_OK) {continue;} for(i=0;i<1;i++) { temp=g_ucTempbuf[i];//读序列号前3位 bess(); sprintf(buf,"%d",temp); hz_lcdDis(1,5,buf); } if(temp==67){//T恤 zs++; printf("1%ds",zs); sprintf(buf,"ZSNO_%d",zs); hz_lcdDis(1,5,buf); } if(temp==106){//裤子 ls++; printf("2%ds",ls); sprintf(buf,"LSNO_%d",ls); hz_lcdDis(1,5,buf); } } }}///////////////////////////////////////////////////////////////////////系统初始化/////////////////////////////////////////////////////////////////////voidInitializeSystem(){ P0M1=0x0;P0M2=0x0; P1M1=0x0; P1M2=0x0; P3M1=0x0;P3M2=0xFF; P0=0xFF;P1=0xFF;P3=0xFF;P2=0xFF; TMOD=0x21; //设T0为方式1,GATE=1; SCON=0x50; TH1=0xFd;//波特率为4800bps TL1=0xFd; TH0=0; TL0=0; TR0=1; ET0=1;//允许T0中断 TR1=1; //开启定时器 TI=1; ES=1; RI=1;}

附录C安卓软件代码HandlerbluetoothMessageHandle=newHandler(){

publicvoidhandleMessage(Messagemsg){

if(msg.what==0x1234){

show_result((byte[])msg.obj,msg.arg1);//接收数据,并显示到界面上

}

}

};

//Devicescancallback.

privateBluetoothAdapter.LeScanCallbackmLeScanCallback=

newBluetoothAdapter.LeScanCallback(){

@Override

publicvoidonLeScan(finalBluetoothDevicedevice,intrssi,byte[]scanRecord){

runOnUiThread(newRunnable(){

@Override

publicvoidrun(){

if(device==null)return;

StringstrTemp=device.getName();

if(strTemp==null||strTemp.length()<1)

return;

strTemp=device.getAddress();

if(strTemp==null||strTemp.length()<1)

return;

//回调函数,扫描到的设备都保存起来

if(addressList.contains(device.getAddress()))return;//已经存在的就不用加到列表中了

mLeDevices.add(device);

deviceNamelist.add(device.getName());

addressList.add(device.getAddress());

}

});

}

};

voidsend_cmd(byte[]cmd,Stringtips){

if(rs232_out_characteristic==null){

Toast.makeText(getApplicationContext(),"无法发送",Toast.LENGTH_SHORT).show();

return;

}

rs232_out_characteristic.setValue(cmd);//将cmd内容发送给蓝牙下位机

if(mBluetoothGatt.writeCharacteristic(rs232_out_characteristic)){

Toast.makeText(getApplicationContext(),tips+"发送成功",Toast.LENGTH_SHORT);

}else{

Toast.makeText(getApplicationContext(),tips+"发送失败",Toast.LENGTH_SHORT);

}

vib.vibrate(100);//震动100ms

}

@Override

protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){

if(requestCode==REQUEST_ENABLE_BT&&resultCode==Activity.RESULT_CANCELED){

finish();

return;

}

super.onActivityResult(requestCode,resultCode,data);

}

privatevoidscanLeDevice(finalbooleanenable){

if(enable){

//Stopsscanningafterapre-definedscanperiod.

mHandler.postDelayed(newRunnable(){

@Override

publicvoidrun(){

mScanning=false;

mBluetoothAdapter.stopLeScan(mLeScanCallback);//停止搜索

adapter.notifyDataSetChanged();

Toast.makeText(getApplicationContext(),"搜索完成",Toast.LENGTH_SHORT).show();

}

},SCAN_PERIOD);

mScanning=true;

mBluetoothAdapter.startLeScan(mLeScanCallback);//开始搜索

}else{

mScanning=false;

mBluetoothAdapter.stopLeScan(mLeScanCallback);//停止搜索

}

}

publicstaticfinalStringCLIENT_CHARACTERISTIC_CONFIG="00002902-0000-1000-8000-00805f9b34fb";

privatefinalBluetoothGattCallbackmGattCallback=newBluetoothGattCallback(){

@Override

publicvoidonConnectionStateChange(BluetoothGattgatt,intstatus,intnewState){

if(newState==BluetoothProfile.STATE_CONNECTED){

mConnectionState=STATE_CONNECTED;

mBluetoothGatt.discoverServices();//蓝牙模块连接成功,开始发现服务操作

}elseif(newState==BluetoothProfile.STATE_DISCONNECTED){

mConnectionState=STATE_DISCONNECTED;//设置状态为断开

}

}

@Override

publicvoidonServicesDiscovered(BluetoothGattgatt,intstatus){

booleanin_ok=false,out_ok=false;

StringstrRs232_out_servier_Uuid="0000ffe0-0000-1000-8000-00805f9b34fb";

StringstrRs232_out_chars_uuid="0000ffe1-0000-1000-8000-00805f9b34fb";

StringstrRs232_in_servier_Uuid="0000ffe0-0000-1000-8000-00805f9b34fb";

StringstrRs232_in_chars_uuid="0000ffe1-0000-1000-8000-00805f9b34fb";

//NBee新一信息XY-MBD07A蓝牙模块(BroadCom双模芯片方案)

if(status==BluetoothGatt.GATT_SUCCESS){

bleServiceList=gatt.getServices();

for(BluetoothGattServicebs:bleServiceList){

StringstrUuid=bs.getUuid().toString();

if(strRs232_out_servier_Uuid.equals(strUuid)){//查找outserviceuuid

List<BluetoothGattCharacteristic>list_chars=bs.getCharacteristics();

for(BluetoothGattCharacteristicachars:list_chars){

StringstrCharUUid=achars.getUuid().toString();

if(strRs232_out_chars_uuid.equals(strCharUUid)){

rs232_out_characteristic=bs.getCharacteristic(achars.getUuid());

out_ok=true;

}

}

}

if(strRs232_in_servier_Uuid.equals(strUuid)){//查找inserviceuuid

List<BluetoothGattCharacteristic>list_chars=bs.getCharacteristics();

for(BluetoothGattCharacteristicachars:list_chars){

StringstrCharUUid=achars.getUuid().toString();

if(strRs232_in_chars_uuid.equals(strCharUUid)){

rs232_in_characteristic=bs.getCharacteristic(achars.getUuid());

try{

Thread.sleep(150);//延时

}catch(InterruptedExceptione){

e.printStackTrace();

}

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论