搜索
bottom↓
回复: 146

RC522开源门禁项目

  [复制链接]

出0入0汤圆

发表于 2013-3-29 10:40:15 | 显示全部楼层 |阅读模式
因最近项目快要收尾,想跟大家一起玩一玩RFID的项目。就选门禁吧,如果有想要学习这方面知识的人请加我的QQ17449357
项目大致可分为4步。
1.了解RFID的基础知识。熟悉M1卡的基本结构,了解读写基站芯片RC522的电气特性。
2.对RC522基本函数进行了解。操作request、Anticoll、select、AuthState、read、write等基本函数。并能够根据自己的读卡器读取M1卡的UID、
  修改每个扇区的密码和控制值。
3.了解门禁的逻辑。对产品芯片进行选型、设计门禁的产品硬件。因为是开源项目就不设计成网络门禁。
4.对项目进行总结。

先附上基本的M1卡的开发资料

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2013-3-29 11:12:25 | 显示全部楼层
前来围观,还以为是已经完成的项目。

出0入12汤圆

发表于 2013-3-29 11:17:32 | 显示全部楼层
RC522那个蛋疼的QFN噢,唉....
这玩意最蛋疼的就是天线
无限怨念啊

出0入0汤圆

发表于 2013-3-29 11:27:45 | 显示全部楼层
使用过rc522,感觉感应距离很小.

出0入0汤圆

发表于 2013-3-29 11:27:49 | 显示全部楼层
无线怨念,我现在RC632读TOPAZ卡还没搞定。。。

出350入8汤圆

发表于 2013-3-29 11:45:57 | 显示全部楼层
好东西呀!!

出0入0汤圆

发表于 2013-3-29 12:16:28 | 显示全部楼层
正想了解了解

出0入90汤圆

发表于 2013-3-29 12:42:31 | 显示全部楼层
楼主的资料看上去比较详细啊,收下了,先说声谢

出0入0汤圆

 楼主| 发表于 2013-3-29 12:52:59 | 显示全部楼层
skynet 发表于 2013-3-29 11:17
RC522那个蛋疼的QFN噢,唉....
这玩意最蛋疼的就是天线
无限怨念啊 ...

天线比较好调 毕竟不是高频的 对阻抗匹配没有太大要求

出0入0汤圆

 楼主| 发表于 2013-3-29 12:55:01 | 显示全部楼层
genhao2 发表于 2013-3-29 11:27
使用过rc522,感觉感应距离很小.

是你的天线匹配和RX电路没有设计好

另外你的天线尺寸很重要 我记得有一个R/2的盖帘 我现在60*70的天线可以做到8cm

出0入0汤圆

 楼主| 发表于 2013-3-29 12:56:47 | 显示全部楼层
javabean 发表于 2013-3-29 11:12
前来围观,还以为是已经完成的项目。

项目是一步步来做的  这样子学的东西比较多
现在我自己搞了一家公司 现在技术上我慢慢的放手不做了
所以想把我的技术告诉给需要的人 虽然我不是大牛

出0入0汤圆

 楼主| 发表于 2013-3-29 13:06:49 | 显示全部楼层
skynet 发表于 2013-3-29 11:17
RC522那个蛋疼的QFN噢,唉....
这玩意最蛋疼的就是天线
无限怨念啊 ...

QFN其实很好焊的 我现在做样板的话基本上都是手焊
因为RC522价格比较低 如果用RC500来做的话后面做项目不太可能了 现在貌似批量也要17块左右吧
RC522才8块多

如果有人说用复旦微的那我就没话说了。我也用过复旦微的1701 1702sl 1702nl

不想用它的原因有2
1.是官方放出来的代码有问题。比如他的程序读写块是没有问题的,但是如果读写扇区的话他,从第二块开始会修改传进去的参数。
2.复旦微的CRC校验寄存器是无用的。

出0入0汤圆

发表于 2013-4-1 13:15:24 | 显示全部楼层
你好,我使用的是MSP430G2553+RC522,现在使用硬件SPI口进行寄存器的读写。
读寄存器出来的值都和DATASHEETS上面的默认值相同

可是进行寄存器写操作的时候,再读出来,还是默认值。实在是不知道如何检查了,请教一下。谢谢

出0入0汤圆

发表于 2013-4-1 13:21:12 | 显示全部楼层
感谢楼主的分享

出0入0汤圆

发表于 2013-4-1 13:21:52 | 显示全部楼层
122402902 发表于 2013-3-29 12:56
项目是一步步来做的  这样子学的东西比较多
现在我自己搞了一家公司 现在技术上我慢慢的放手不做了
所 ...

兄台的公司是做什么项目或产品?电工创业不容易。

出0入0汤圆

 楼主| 发表于 2013-4-1 14:19:20 | 显示全部楼层
就是做一卡通产品的 武汉市辛纳电子科技有限公司  www.whxinna.com

出0入0汤圆

 楼主| 发表于 2013-4-1 14:20:35 | 显示全部楼层
sunchao151 发表于 2013-4-1 13:15
你好,我使用的是MSP430G2553+RC522,现在使用硬件SPI口进行寄存器的读写。
读寄存器出来的值都和DATASHEETS ...

你最好能把你的程序贴出来
或者能够对下我传上来的程序是最好的
你要仔细看下寄存器描述  因为有些寄存器是Write Only

出0入0汤圆

 楼主| 发表于 2013-4-1 14:21:18 | 显示全部楼层
sunchao151 发表于 2013-4-1 13:15
你好,我使用的是MSP430G2553+RC522,现在使用硬件SPI口进行寄存器的读写。
读寄存器出来的值都和DATASHEETS ...

另外,我现在拿到了nxp新的读卡器芯片 CV520 8.5就可以拿货了

出0入0汤圆

发表于 2013-4-2 13:17:30 | 显示全部楼层
122402902 发表于 2013-4-1 14:21
另外,我现在拿到了nxp新的读卡器芯片 CV520 8.5就可以拿货了

以经解决了,使用的硬件SPI

出0入0汤圆

发表于 2013-4-2 13:38:41 | 显示全部楼层
RC522的天线还是很好搞的,一般门禁5cm以内能刷卡就可以了(距离太远反而不好,用户体验太差),这种要求,基本怎么折腾天线都能满足……

出0入0汤圆

发表于 2013-4-2 20:17:22 来自手机 | 显示全部楼层
mark,学习了

出0入0汤圆

发表于 2013-4-3 00:28:32 来自手机 | 显示全部楼层
这个要顶 哈哈     谢谢了

出0入0汤圆

发表于 2013-4-15 13:13:52 | 显示全部楼层
路过下载看看!!

出0入0汤圆

 楼主| 发表于 2013-4-15 13:18:41 | 显示全部楼层
上面的是项目需要的基础储备知识,5.1放假的时候我会把方案书,硬件架构和软件架构放上来。

出0入0汤圆

发表于 2013-4-15 15:24:33 | 显示全部楼层
关注,

出0入0汤圆

发表于 2013-4-15 16:20:30 | 显示全部楼层
我用RC522自己布了个板,但是怎么也调不通,后来请楼主 帮我看了下PCB,修改了下接收电阻,可以读到卡了,感谢楼主的耐心解答。改的地方,现在还没研究透,等研究透了,跟大家一起分享。楼主对我的布线,有如下几个建议,希望对大家有用,再次感谢楼主的无私解答。
1、天线的大致长宽要有保证2:5的比例
2、lc emc 滤波器电感和电容要尽可能靠近避免寄生电感的影响
3、tx电路中的电感要尽量靠近芯片如果空间不够在走线时最好能用20mil以上的线路
4、旁路电容的电源端要靠近芯片管脚

出0入0汤圆

发表于 2013-5-7 12:11:24 | 显示全部楼层
项目无进展了?

出0入0汤圆

发表于 2013-5-7 13:52:22 | 显示全部楼层
关注中,期待更新

出0入46汤圆

发表于 2013-5-8 18:01:07 | 显示全部楼层
弱弱的问下楼主fm1702和这个芯片差距大吗?不知道用哪个方案

出0入0汤圆

发表于 2013-5-8 20:10:14 | 显示全部楼层
非常感谢楼主的奉献,谢谢,收下了!

出0入0汤圆

发表于 2013-5-10 10:00:54 | 显示全部楼层
beiyong      

出0入0汤圆

发表于 2013-5-12 07:59:15 | 显示全部楼层
rc522距离是不太长,寻卡大概70mm,读写40mm以下,当然和天线有关,5c22 3.3v

出0入0汤圆

发表于 2013-5-12 09:04:36 | 显示全部楼层
我也收下了,谢谢楼主。

出0入0汤圆

发表于 2013-5-14 17:47:47 | 显示全部楼层
感谢楼主,资料收下了!mark

出0入0汤圆

发表于 2013-5-15 10:20:13 | 显示全部楼层
感谢楼主分享啊,小白弱问下,RC522的天线板可以设计得比较长不,比如20cm。。。。

出0入0汤圆

发表于 2013-5-15 13:47:31 | 显示全部楼层
收藏一下再说

出0入0汤圆

发表于 2013-5-29 10:39:39 | 显示全部楼层
收藏下  谢谢楼主了

出0入0汤圆

发表于 2013-6-6 14:02:21 | 显示全部楼层
标记下,学习了

出0入0汤圆

发表于 2013-6-6 14:31:22 | 显示全部楼层
赞扬............

出0入0汤圆

发表于 2013-9-11 22:37:35 | 显示全部楼层
很不错,值得赞一个

出0入0汤圆

发表于 2013-10-30 09:13:16 | 显示全部楼层
不错呀!

出0入0汤圆

发表于 2013-11-2 10:42:41 | 显示全部楼层

出0入0汤圆

发表于 2013-11-4 16:43:00 | 显示全部楼层
只想问,为什么这些模块抄的都是一个样,中断引脚都没引出来的,就只能用软件查询方式来解解,
但现在程序中不只只是处理一个刷卡而已,还有好多的资源需要处理,真的是一个纠结,只能自己焊上去了

出0入16汤圆

发表于 2013-11-4 17:02:17 | 显示全部楼层
有时间参考学习一下!谢谢楼主的共享!

出0入4汤圆

发表于 2013-11-4 17:21:52 | 显示全部楼层
留意RC522开源门禁项目

出0入0汤圆

发表于 2013-11-6 15:55:32 | 显示全部楼层
就没有用过pn532的吗 怎么都是RC522

出0入0汤圆

发表于 2013-11-6 15:59:00 | 显示全部楼层
122402902 发表于 2013-3-29 13:06
QFN其实很好焊的 我现在做样板的话基本上都是手焊
因为RC522价格比较低 如果用RC500来做的话后面做项目不 ...

复旦微电子的FM1935怎么样啊?打算用这个呢。。

出0入0汤圆

发表于 2013-11-6 16:25:52 | 显示全部楼层
多谢!!!!!!!!!!

出0入0汤圆

发表于 2013-11-19 16:22:44 | 显示全部楼层
收藏下  谢谢楼主了!

出0入0汤圆

发表于 2013-12-19 17:38:04 | 显示全部楼层
感谢楼主分享,最近正在学习

出0入0汤圆

发表于 2013-12-19 17:46:25 | 显示全部楼层
MARK一下

出0入0汤圆

发表于 2013-12-19 18:56:44 | 显示全部楼层
路过下载看看!!

出0入0汤圆

发表于 2014-2-18 17:12:40 | 显示全部楼层
谢谢楼主,加深下一卡通资料!

出0入0汤圆

发表于 2014-2-21 14:06:19 | 显示全部楼层
楼主能讲解下天线如何设计吗?

出0入0汤圆

发表于 2014-2-28 16:48:02 | 显示全部楼层
不明觉厉!!

出0入0汤圆

发表于 2014-2-28 17:17:07 | 显示全部楼层
MARK一下

出0入0汤圆

发表于 2014-2-28 20:16:02 | 显示全部楼层
下载过看看…………

出0入0汤圆

 楼主| 发表于 2014-3-25 20:12:40 | 显示全部楼层
中国人 发表于 2013-11-4 16:43
只想问,为什么这些模块抄的都是一个样,中断引脚都没引出来的,就只能用软件查询方式来解解,
但现在程序 ...

这个要和你使用的系统有关系。
普通的读卡头基本采用轮训的方式就可以了。而不用采用中断的方式去增加系统的复杂度。

如果整个系统需要能够快速响应的话,那就必须要使用中断方式了。中断方式修改的话也比较简单,只需要求改里面的一个函数就可以了。

出0入0汤圆

发表于 2014-3-26 13:25:18 | 显示全部楼层
谢谢分享!

出0入0汤圆

发表于 2014-3-26 20:06:44 | 显示全部楼层
不错,收藏一下

出0入0汤圆

发表于 2014-3-29 21:32:51 | 显示全部楼层
严重赞扬楼主这种助人为乐的品格!

出0入0汤圆

发表于 2014-3-29 22:41:37 | 显示全部楼层
这个帖子必须mark,lz,thx

出0入0汤圆

发表于 2014-4-16 15:38:04 | 显示全部楼层
想要套程序参考一下

出0入0汤圆

发表于 2014-4-24 02:06:06 | 显示全部楼层
Mark一下,准备先利用串口设计不含模块的源代码

出0入0汤圆

发表于 2014-4-29 15:36:07 | 显示全部楼层
收藏下!!!

出0入0汤圆

发表于 2014-5-15 09:43:22 | 显示全部楼层
MARK~~~~~资料不错

出0入53汤圆

发表于 2014-5-17 14:19:01 | 显示全部楼层
学习了  现在只不过是买的RC523想研究一下二*代 请问LZ接触过吗

出0入0汤圆

发表于 2014-6-3 14:46:24 | 显示全部楼层
多谢楼主分享,RC522最近调不通,可以读写FIFO,就是天线用不了

出0入0汤圆

发表于 2014-6-10 19:26:36 | 显示全部楼层
很好,非常有用

出0入0汤圆

发表于 2014-6-11 12:37:29 | 显示全部楼层
你的这个读卡器读卡距离能达到多少?

出0入0汤圆

发表于 2014-6-16 12:34:04 | 显示全部楼层
谢谢分享!

出0入0汤圆

发表于 2014-7-24 10:24:54 | 显示全部楼层
持续关注

出0入0汤圆

发表于 2014-7-30 15:03:35 | 显示全部楼层
好好研究下,谢谢楼主了

出0入4汤圆

发表于 2014-7-30 15:31:03 | 显示全部楼层
mark         

出0入0汤圆

发表于 2014-7-30 16:44:31 | 显示全部楼层
好东西呀!!

出0入0汤圆

发表于 2014-8-4 10:09:04 | 显示全部楼层
资料不错
值得学习

出0入0汤圆

发表于 2014-8-12 22:40:26 | 显示全部楼层
mark,RC522 RFID资料,谢谢分享啊

出0入0汤圆

发表于 2014-8-13 00:39:23 | 显示全部楼层
谢谢楼主分享

出0入0汤圆

发表于 2014-8-13 00:53:54 | 显示全部楼层
感谢分享,一直想有时间学习下这方面。

出0入0汤圆

发表于 2014-8-13 08:41:26 | 显示全部楼层
正要学习一下,谢谢楼主啦

出0入0汤圆

发表于 2014-8-20 16:09:18 | 显示全部楼层
谢谢 楼主的无私分享

出0入0汤圆

发表于 2014-8-20 18:54:36 来自手机 | 显示全部楼层
很好,学习了

出0入0汤圆

 楼主| 发表于 2014-8-28 22:52:04 | 显示全部楼层
如果大家需要我帮忙解决问题的。请帮忙在我的淘宝店里面拍个1元的技术支持宝贝。纯当是支持我的。不要什么都不做就一直问。另外,如果如果是买了别人模块需要我帮忙调试的。请帮忙发邮件到我的邮箱zouxinliang@126.com吧电路图程序和您的问题一起发给我。我会即时的回复的。因为我白天要上班。所以QQ直接问的话可能有时候不能即时的回复的。

出0入0汤圆

发表于 2014-8-29 08:46:13 | 显示全部楼层
资料多的

出0入0汤圆

发表于 2014-9-5 21:12:05 | 显示全部楼层
里面有关于522 驱动电路的PCB文件吗?没有的话,天线要怎么处理?

出0入10汤圆

发表于 2014-10-9 17:02:19 | 显示全部楼层
122402902 发表于 2014-3-25 20:12
这个要和你使用的系统有关系。
普通的读卡头基本采用轮训的方式就可以了。而不用采用中断的方式去增加系 ...

正在用RC522,请问如果想采用中断方式的话,需要修改哪个函数呢?

出0入0汤圆

 楼主| 发表于 2014-10-9 17:27:47 | 显示全部楼层
lklhzu 发表于 2014-10-9 17:02
正在用RC522,请问如果想采用中断方式的话,需要修改哪个函数呢?

修改命令发送函数 5个命令都会调用那个函数。之前里面是采用的i=0x7FF;轮询的

出0入10汤圆

发表于 2014-10-9 17:41:00 | 显示全部楼层
本帖最后由 lklhzu 于 2014-10-9 17:49 编辑

122402902 发表于 2014-10-9 17:27
修改命令发送函数 5个命令都会调用那个函数。之前里面是采用的i=0x7FF;轮询的 ...


/////////////////////////////////////////////////////////////////////
//功    能:通过RC522和ISO14443卡通讯
//参数说明:Command[IN]:RC522命令字
//          pInData[IN]:通过RC522发送到卡片的数据
//          InLenByte[IN]:发送数据的字节长度
//          pOutData[OUT]:接收到的卡片返回数据
//          *pOutLenBit[OUT]:返回数据的位长度
/////////////////////////////////////////////////////////////////////
char PcdComMF522(unsigned char Command,
                 unsigned char *pInData,
                 unsigned char InLenByte,
                 unsigned char *pOutData,
                 unsigned int  *pOutLenBit)
{
    char status = MI_ERR;
    unsigned char irqEn   = 0x00;
    unsigned char waitFor = 0x00;
    unsigned char lastBits;
    unsigned char n;
    unsigned int i;
    switch (Command)
    {
       case PCD_AUTHENT:
          irqEn   = 0x12;
          waitFor = 0x10;
          break;
       case PCD_TRANSCEIVE:
          irqEn   = 0x77;
          waitFor = 0x30;
          break;
       default:
         break;
    }
   
    WriteRawRC(ComIEnReg,irqEn|0x80);
    ClearBitMask(ComIrqReg,0x80);
    WriteRawRC(CommandReg,PCD_IDLE);
    SetBitMask(FIFOLevelReg,0x80);
   
    for (i=0; i<InLenByte; i++)
    {   WriteRawRC(FIFODataReg, pInData);    }
    WriteRawRC(CommandReg, Command);
   
   
    if (Command == PCD_TRANSCEIVE)
    {    SetBitMask(BitFramingReg,0x80);  }
   
    i = 600;//根据时钟频率调整,操作M1卡最大等待时间25ms
    do
    {
         n = ReadRawRC(ComIrqReg);
         i--;
    }
    while ((i!=0) && !(n&0x01) && !(n&waitFor));
    ClearBitMask(BitFramingReg,0x80);
         
    if (i!=0)
    {   
         if(!(ReadRawRC(ErrorReg)&0x1B))
         {
             status = MI_OK;
             if (n & irqEn & 0x01)
             {   status = MI_NOTAGERR;   }
             if (Command == PCD_TRANSCEIVE)
             {
                       n = ReadRawRC(FIFOLevelReg);
                               
                      lastBits = ReadRawRC(ControlReg) & 0x07;
                if (lastBits)
                {   *pOutLenBit = (n-1)*8 + lastBits;   }
                else
                {   *pOutLenBit = n*8;   }
                if (n == 0)
                {   n = 1;    }
                               
                if (n > MAXRLEN)
                {   n = MAXRLEN;   }
                for (i=0; i<n; i++)
                {   pOutData = ReadRawRC(FIFODataReg);
                                _nop_();_nop_();_nop_();_nop_();_nop_();
                                }
                               
            }
         }
         else
         {   status = MI_ERR;   }
        
   }
   

   SetBitMask(ControlReg,0x80);           // stop timer now
   WriteRawRC(CommandReg,PCD_IDLE);
   return status;
}

具体需要怎样修改呢?麻烦请再指教下!
现在遇到FIFO溢出的情况,想采用中断的方式试一下。

出0入0汤圆

 楼主| 发表于 2014-10-9 18:10:15 | 显示全部楼层
lklhzu 发表于 2014-10-9 17:41
/////////////////////////////////////////////////////////////////////
//功    能:通过RC522和ISO14 ...

这几天有空了发到论坛里面。不过是RC500的

出0入10汤圆

发表于 2014-10-9 19:33:16 | 显示全部楼层
122402902 发表于 2014-10-9 18:10
这几天有空了发到论坛里面。不过是RC500的

好的,静候佳音!

出0入10汤圆

发表于 2014-10-12 10:47:57 | 显示全部楼层
122402902 发表于 2014-10-9 18:10
这几天有空了发到论坛里面。不过是RC500的

楼主你好,你那个程序还没传吗?等的黄花菜都凉了!

出0入0汤圆

发表于 2014-10-12 14:31:52 | 显示全部楼层
卧虎藏龙之地

出0入10汤圆

发表于 2014-10-14 10:58:13 | 显示全部楼层
122402902 发表于 2014-10-9 18:10
这几天有空了发到论坛里面。不过是RC500的

你好楼主,对于RC522接收大于64字节数据,可否再指点下,调了两天依然没有头绪。

出0入0汤圆

发表于 2014-10-18 13:37:13 | 显示全部楼层
感谢楼主的分享

出0入0汤圆

发表于 2014-10-18 14:38:36 | 显示全部楼层
RC522买现成的模块 ,比自己加工都便宜多了。市场上面做好的模块价格太低太低了。

出0入0汤圆

发表于 2014-10-18 15:43:44 | 显示全部楼层
谢谢楼主。。。。

出0入0汤圆

发表于 2014-10-18 15:44:37 | 显示全部楼层
RC522  RFID 门禁

出0入0汤圆

发表于 2014-10-18 18:35:51 | 显示全部楼层
学习一下!!!

出0入0汤圆

发表于 2014-10-18 18:44:01 | 显示全部楼层
谢谢楼主分享!

出0入0汤圆

发表于 2014-10-25 19:49:33 | 显示全部楼层
谢谢楼主,下载了!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 06:25

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表