做RFID卡开门器的一些总结(未完)

      最近和基友一起做了一个刷卡开门器,原理并不复杂:存卡模式:用STC89C52单片机控制RFID-RC522射频器,发射电磁波与一卡通进行通信,读取UID卡号存到单片机内部的EEPROM(内存)中(每张IC卡都有一个固定的UID卡号,不会重复);读卡模式:同样读取接近射频模块的IC卡(一卡通,银行卡...都可以哦)的UID卡号,与EEPROM中的卡号相对照,如果对照得上,则用单片机控制舵机旋转一定角度,拉动门上的开关,这样门就开了。

附上图片:

 
总结下这次制作的经验教训
首先,热烈祝贺此次制作非圆满完成,感谢自己和基友的付出有了回报,感谢实验室的各位基友和海嵌工作室的指导。
从制作开始至今已有半月,这半个月来花费不少时间在这个制作中,以致作业都落下了。
经过这次制作,我懂得了,“有些东西很难,是以为你没下定决心去做”,半个月前,我无意间看到一个师兄在制作这个射频卡开门器,我首先想的是“好厉害,好高级,好像很好玩的样子”,我问了下师兄:你会做这个?他说买来研究研究。回头我想了想,要不要也买个来研究研究,犹豫了一两天,最后下定决心,所以就下单买了个舵机和RC522模块。
制作第一步:研究这块模块所配的资料,看它里面芯片的技术手册,一开始都看傻了,有五六十个寄存器,每个都了解他们功能,好难。不过经过几天的研究,还有好友们的思路指导,总算对这模块有了一知半解。
第二步:我开始尝试着去写这个模块的程序,可是没办法,写程序的能力完全不够,所以就后选择 边参考这模块所配来的官方程序,不过这样也不简单,因为我不想完全照搬它的程序,这样做没意义,所以就得先一步一步理解它的程序,再自己敲代码,不过最后改来改去,都快接近它的程序啦。
第三步:写EEPROM和舵机程序。为什么要用到EEPROM来存储卡号呢?因为如果单片机掉电的话,EEPROM中的数据不会遗失,而如果直接用数组储存数据的话,掉电后再上电,所储存的卡号将遗失,就得重新储存我们所有人的卡号进去,这样很麻烦。所有我在百度上寻找关于51单片机eeprom的资料,了解他的寄存器,参考他的例程,这部分就完成了,而舵机的程序交给另外一位基友来写,他也不负我的重托把舵机的程序完成了,舵机控制主要是用定时器模仿PWM产生一定的占空比,不同的占空比会让舵机停留在不同的角度上。(差不多一个星期过去了)
第四步:将所有程序整合到一起,然后整理完后下载到单片机开发板上,连上RC522和舵机进行测试,这测试过程中出现了这样那样的问题,然后一步步耐心得检查,再一个个错误慢慢解决,有时候一个小小的问题需要花很长时间才检查出来(我还是太粗心了),这一步骤要有很大的耐心。不过最终还是调试好了,体会到成功的喜悦。
第五步:画PCB板。由于我的小伙伴还没画过PCB板,所以我把这个流程交给他来做,我当个“技术指导”(其实我也只画过一次而已)。画板过程中也出现了很多问题,例如从原理图转换为PCB时老是出现一些未知的错误,不过最后通过各种方法解决了。
  第六步:做电路板。首先得将PCB打印在热转印纸上,再用熨斗将PCB图印在覆铜板上,再用腐蚀剂进行腐蚀,将多余的铜腐蚀掉,这样就把板做好了,剩下的就是焊接元件了。在焊接过程中,我发现了一个“极其严重”的问题,整块板打印的时候印反了,原来是我们最开始要把背面上字印正而把整块板镜像打印所导致,说到底,还是缺乏经验。没办法,只能把单片机焊接在背面了,这样显得比较难看。
  第七步:继续调试程序。虽然程序已经写好,但是还没在我们自己做的板上真正试验过,下载进去后,果然还存在很多问题,有的是电路板制作的问题,PCB排布不规范,电路上的元件虚焊,程序也存在问题。一步一步地排查,花费很多时间,这是很考验耐心的,有时几乎想要放弃,但最终没有放弃,最终做好了这个不太完美的小作品。
再次感谢各位的帮忙,感谢自己和基友的辛勤付出。
经过这次制作,让我积累了宝贵的经验,这是很重要的。让我懂得了,学单片机不仅仅是看看视频,看看书,玩玩开发板,重要的是积累项目经验,做出一些实实在在的东西出来。学到的东西,要去用它,没去用的话,不用多久就快忘光了。制作过程虽然很耗费时间精力,但这是值得的,每一个错误都让我们吸取了教训,让我们更向前迈进了一步,也许只是一小步。
 
好吧,写多了估计看的了都睡着了。
 
 
 
 
射频卡模块头文件程序
#ifndef  __MFRC522_H
#define  __MFRC522_H
#define uchar unsigned char 
#define uint  unsigned int 

/
//MF522命令字
/
 #define PCD_IDLE              0x00               //取消当前命令
#define PCD_AUTHENT           0x0E               //验证密钥
#define PCD_RECEIVE           0x08               //接收数据
#define PCD_TRANSMIT          0x04               //发送数据
#define PCD_TRANSCEIVE        0x0C               //发送并接收数据
#define PCD_RESETPHASE        0x0F               //复位
#define PCD_CALCCRC           0x03               //CRC计算

/
//Mifare_One卡片命令字
/
#define PICC_REQIDL           0x26               //寻天线区内未进入休眠状态
#define PICC_REQALL           0x52               //寻天线区内全部卡
#define PICC_ANTICOLL1        0x93               //防冲撞
#define PICC_ANTICOLL2        0x95               //防冲撞
#define PICC_AUTHENT1A        0x60               //验证A密钥
#define PICC_AUTHENT1B        0x61               //验证B密钥
#define PICC_READ             0x30               //读块
#define PICC_WRITE            
  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值