搜索
bottom↓
楼主: whimsy

原创:用Mega32通过U2270B读取H4001RFID卡号的范例

[复制链接]

出0入0汤圆

发表于 2008-5-4 10:42:21 | 显示全部楼层
请教一下whimsy ,你有用过U2270B加输入放大电路提高读卡距离吗?我按照ATMEL的AP上来做,没什么效果。

出0入0汤圆

发表于 2008-5-8 11:28:47 | 显示全部楼层
我用EM4095,SHD(14脚)接低电平,Dm_out(13脚)信号正常,但是我连上C2051时Dm_out 脚的信号就变成低电平了,这是为什么,中间出了什么错,我刚学编程,是不是程序有问题影响的

出0入0汤圆

发表于 2008-5-9 15:07:07 | 显示全部楼层
由于 EM4095DMOD_IN(第8脚)与地之间的电容放电过慢造成无没断电后立即开电读卡,就是要断电后十几分钟才能再开通电进行测试,这样就不会有问题,有什么方法可以使DMOD_IN与地之间那个电容快速放电啊.求救啊,急

出0入0汤圆

 楼主| 发表于 2008-6-18 17:03:12 | 显示全部楼层
103楼,应该不是这个问题吧,如果要电容快速放电,加个二极管不就可以快速放电了

出0入0汤圆

 楼主| 发表于 2008-6-18 17:06:59 | 显示全部楼层
TO: 101

没做过尝试,因为我的应用基本上不超过5cm的应用,所以对距离要求不高,

其实算法对读卡的距离影响也是不容忽视的。

出0入4汤圆

发表于 2008-9-17 09:12:32 | 显示全部楼层
楼主的超简单电路比较部分综于给防真出来了,再请教一下楼主,分立接法多是迟滞比较,
你这样接的话,迟滞比较部分是不是需要软件处理?
&nbsp;<font color=green>(原文件名:1.jpg.jpg.jpg)&nbsp;

出0入0汤圆

发表于 2009-2-26 15:20:02 | 显示全部楼层
谢谢楼主提供这么详细的资料   对我这个新人非常有帮助。
另程序里unsigned char decode[192],head=0,rfiddata[54];这句rfiddata[54]应该是64吧。

出0入0汤圆

发表于 2009-2-26 15:55:26 | 显示全部楼层
一定要玩一玩.

出0入0汤圆

发表于 2009-2-26 16:41:51 | 显示全部楼层
to 106楼,你看一下emid卡的格式吧,前九个是1,表示包头,最后一个是0,固定的结尾。64个除掉这10个才是有用的数据,也就是54个,需要检验,解释的数据。
对楼主的这个东西很感兴趣,不过开辟192,54个字节的存储区如果自己玩无所谓,可是如果是在复杂的项目中应用可能有些不妥了。毕竟ram还是宝贵的。我在想把他改成位域的形式。
改好再上传了~~

出0入0汤圆

发表于 2009-2-26 16:47:07 | 显示全部楼层
to 106楼,你看一下emid卡的格式吧,前九个是1,表示包头,最后一个是0,固定的结尾。64个除掉这10个才是有用的数据,也就是54个,需要检验,解释的数据。
对楼主的这个东西很感兴趣,不过开辟192,54个字节的存储区如果自己玩无所谓,可是如果是在复杂的项目中应用可能有些不妥了。毕竟ram还是宝贵的。我在想把他改成位域的形式。
改好再上传了~~

出0入0汤圆

发表于 2009-2-27 14:37:47 | 显示全部楼层
to 109楼  谢谢了    仔细看了下前后,那应该这句写错了,确实是去掉数据头尾的。
void R_H4001()                    //读卡
    {              
               ...
         for (i=0;i<64;i++) {
         rfiddata=0;
                }
              ...
    }

出0入0汤圆

发表于 2009-2-27 15:07:33 | 显示全部楼层
还有1点没看懂   程序里只有定时器timer1的初始化,没看到timer1的中断处理函数,timer1是没用的吗。

出0入0汤圆

发表于 2009-2-27 16:50:36 | 显示全部楼层
to 111:
看来你没有仔细看楼主的程序,也没有真正理解哦,TCNT1不就是timer1的计数值嘛
timer1并没有需要中断
只是需要计数值来计算时间罢了,读取曼切斯特_码的时候,延跳变的时间间隔是很重要的信息。得到数据全靠这个时间依据了。

出0入0汤圆

发表于 2009-3-10 10:02:40 | 显示全部楼层
很感兴趣楼主的东西
自己改写了一下,把卡数据按照bit来存取了。节省了很多的RAM空间。
因为读卡的程序是完全仿照楼主写的
就不再另开主题了。放在这里,也表示对楼主的感谢。
环境,ICCAVR7.14C,主控芯片:mega162,时钟8M,F/64模式
更改时只需更改对应的IO端口,方向,上拉等。还有H_Leval的值即可。

点击此处下载 ourdev_424714.rar(文件大小:2K) (原文件名:EMID.rar)

出0入0汤圆

 楼主| 发表于 2009-3-10 12:04:29 | 显示全部楼层
看来对RFID感兴趣的大有人在,谢谢大家的参与

出0入0汤圆

发表于 2009-3-13 19:23:55 | 显示全部楼层
请问出现  0E  说明什么??如何解决 ?

if(head==1)
{
   for(i=0;i<54;i++)
   {
     if(decode[post+i]== 0x0e )
      error++;
     rfiddata=decode[post+i];
   }

出0入0汤圆

 楼主| 发表于 2009-3-16 14:10:16 | 显示全部楼层
回楼上,出现0x0E,说明跳变的长度符合要求(半拍或1拍),但是属于非法的跳变,就要重新采集再解码

出0入0汤圆

发表于 2009-5-20 18:13:36 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-5-20 23:16:08 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-5-21 08:43:02 | 显示全部楼层
收藏了

出0入0汤圆

发表于 2009-5-21 20:17:03 | 显示全部楼层
mark

出0入228汤圆

发表于 2009-6-30 00:20:33 | 显示全部楼层
mark

出0入228汤圆

发表于 2009-7-2 01:33:24 | 显示全部楼层
用逻辑分析仪捕获的2270输出波形,再在COREL DRAW中划分的图形,这样直观很多了。


(原文件名:卡波形.jpg)

出0入0汤圆

发表于 2009-7-2 02:11:37 | 显示全部楼层
到底是怎么编码的,还没有搞清楚,但是读头进来,读到的码号,非常一致,试一百多次,读到的数据都是一样,但是怎么也跟那个给你编码值对应上,能否帮忙分析下,可能是什么原因?

例如:读到统一的64位卡号为:FFF9 9028 9B52 00E2

应该对应的编码是:1A 00 6D FB 69

十进制的数是: 0007207785

怎么都对应不上,说有误,但读头进来的数据没有偏差过,二张卡一起放,读不出来,想程序应该没有问题,费解,请DX帮忙,谢谢!

出0入0汤圆

发表于 2009-7-2 08:03:04 | 显示全部楼层
谢谢,mark

出0入228汤圆

发表于 2009-7-2 14:18:46 | 显示全部楼层
12楼:你应该没搞清楚卡号的表达方式:

由于各个厂家的读卡器译码格式不尽相同,在读卡输出时,读出的二进制或十六进制(Hex)结果应该是唯一的,但是又可以通过以下几种主要换算办法,输出不同结果的十进制卡号(Dec),因此,请您一定在购买卡片或卡片喷号时,注意卡号格式的一致性:
1、格式0:10位十六进制的ASCII字符串,即10 Hex格式。
如:某样卡读出十六进制卡号为:“01026f6c3a”。
2、格式1:将格式0中的后8位,转换为10位十进制卡号,即8H---10D。
即将“ 026f6c3a”转换为:“0040856634”。
3、格式2:将格式0中的后6位,转换为8位十进制卡号,即6H---8D。
即将“ 6f6c3a”转换为:“07302202”。
4、格式3:将格式0中的倒数第5、第6位,转换为3位十进制卡号,再将后4位,转换为5位十进制卡号,中间用“,”分开,即“2H + 4H”。
即将2H“ 6f”转换为:“111”,4H “6c3a”转为“27706”。 最终将2段号连在一起输出为“111,27706”。
5、格式4:将格式0中后8位的前4位,转换为5位十进制卡号,再将后4位,转换为5位十进制卡号,中间用“,”分开,即“4Hex + 4Hec”。
照此推算结果为:00623,27706 (4H+4H)

出0入0汤圆

 楼主| 发表于 2009-7-2 23:56:58 | 显示全部楼层
看来楼上的朋友对EM4100兼容卡相当熟悉了,我也只知道格式1和格式3,其他的没怎么看到

出0入0汤圆

发表于 2009-7-15 22:33:13 | 显示全部楼层
哇!楼上的都是专家,小弟近来也在研究这方面的知识,我在做一个T5557卡的读卡器,频率也是125kHz,也用到了U2270B这块芯片,我参考了网上的一些硬件原理图的资料,自己动手做了一个读卡器,但是硬件调试时,不管有没有卡,U2270B的第2 个引脚都没有信号输出,我用示波器测了一下第4引脚的输入信号,发现没卡时是无波形,有卡时会出现一些不规则的波形,幅度大约只有0.5V,而且出现重影,我调了一下LC电容,但是U2270B仍然没有信号输出,不知道哪里出了问题,是不是我电路的参数选择不对?还有我是用电脑的USB接口的5V电源来调试的,不知道有没有问题?还望楼上的高手指点一下?
U2270B读卡器原理图 (原文件名:U2270B.jpg)

出0入0汤圆

发表于 2009-7-16 10:06:18 | 显示全部楼层
记个号吧

出0入0汤圆

发表于 2009-7-16 12:35:08 | 显示全部楼层
记个号吧 ?

出0入0汤圆

发表于 2009-7-17 08:42:07 | 显示全部楼层
关于U2270B的一些问题不知道有没有大侠能够回答我?不管有没有卡靠近天线或者线圈震荡频率对不对,是不是U2270B的输出引脚2都有不规则的信号输出?

出0入0汤圆

 楼主| 发表于 2009-7-24 22:15:02 | 显示全部楼层
如果你详细看上面的回帖早就有答案了,现在再告诉你,振荡频率没有偏离太多时,2脚输出端都会有跳变信号,但是有明显的区别,有卡时,输出比较有规则的跳变,跳变的长度和卡的速率是对应的

出0入0汤圆

发表于 2009-7-28 19:10:18 | 显示全部楼层
好的,谢谢指点。

出0入0汤圆

发表于 2009-9-29 19:00:54 | 显示全部楼层
这贴不错啊

出0入0汤圆

发表于 2009-10-13 10:10:03 | 显示全部楼层
有没有套件啊,初学的RF不容易成功.

出0入0汤圆

发表于 2009-10-13 10:45:26 | 显示全部楼层
学习中,好贴哦。

出0入0汤圆

发表于 2009-11-3 21:27:28 | 显示全部楼层
学习啦,EM4095

出0入0汤圆

发表于 2009-11-3 22:27:32 | 显示全部楼层
学习中

出0入0汤圆

发表于 2009-11-16 12:00:52 | 显示全部楼层
有没有E5551之类的可读写的ID卡的读写程序啊,共享学习一下!谢谢

出0入0汤圆

发表于 2009-11-16 21:08:32 | 显示全部楼层
记号

出0入0汤圆

发表于 2010-1-13 23:23:37 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-2-9 20:34:45 | 显示全部楼层
T5557卡普通读模式怎么同步?

出0入0汤圆

 楼主| 发表于 2010-2-9 22:57:09 | 显示全部楼层
可以将卡的模式设置到ST=1,在解码的时候查找1.5T的同步头

出0入0汤圆

发表于 2010-2-10 18:30:38 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-2-10 19:21:45 | 显示全部楼层
我剩余部分2270b芯片和模块,有需要的联系我,价格6元。

出0入0汤圆

发表于 2010-2-11 12:21:14 | 显示全部楼层
很好,记号

出0入0汤圆

发表于 2010-2-11 22:46:43 | 显示全部楼层

T5557读卡波形 (原文件名:2010-2-11 22-39-09.jpg)
帮我看看这张图,怎么读数,好像有点问题!
T5557读卡波形ourdev_533604.rar(文件大小:2K) (原文件名:T5557YC.rar)

出0入0汤圆

发表于 2010-2-11 23:10:53 | 显示全部楼层

T5557波形 (原文件名:2010-2-11 23-07-00.jpg)
两边是连续的数据0,中间是同步头。
//  _   _ _ _   _ _                      _
//   |_|     |_|    同步头,后面是数据 _|  
//
所以读出第一块为0b 01011010 10100101 01010101 10101010 即:0x 5AA5 55AA 四个字节,其它6块都为0。

出0入0汤圆

发表于 2010-2-11 23:32:39 | 显示全部楼层
whimsy老师可以加我的QQ聊聊吗?
我现在采取的方法是只检测有效数据(跳变的时间间隔是T或T/2),不是有效数据就清空数据缓存,重新读数据。当两个无效数据之间的数据量==224bit(7x4x8)时就认为读卡正确。这样读到的数据每次都不一样(也有重复的现象),不知道问题出在哪里。望whimsy老师指点一下!

出0入21汤圆

发表于 2010-2-11 23:33:53 | 显示全部楼层
好东西!谢谢楼主共享。

出0入0汤圆

发表于 2010-2-12 01:30:30 | 显示全部楼层
http://cache.ourdev.cn/bbs_upload353273/files_26/ourdev_533613.jpg
终于看明白了,读出来应该是:5AA5 55AA 0000 0000 ......0000 0000

出0入0汤圆

 楼主| 发表于 2010-2-12 12:45:40 | 显示全部楼层
呵呵,看出来就好了。
你上的2个图中,都有1.5T的同步头,你的解码思路可能不好吧,应该还是要去判断同步头解码比较容易,
还有个情况需要注意,第1字节的高位是1时,会出现2个1.5T的情况,T5557的数据手册中有说明,具体看手册

出0入0汤圆

发表于 2010-2-12 14:17:01 | 显示全部楼层
谢谢,我注意到了。

出0入0汤圆

发表于 2010-2-12 14:22:03 | 显示全部楼层
whimsy 老师能加我的QQ11520389(请注明AVR) 聊聊吗?

出0入0汤圆

发表于 2010-2-16 23:28:25 | 显示全部楼层
unsigned char DATA[28];//存放28字节数据(4字节x7块)
//T5557卡设置比特率RF/32(即T=32FC),ST=1时的同步头
//  _   _ _ _   _ _                      _       _
//   |_|     |_|    同步头,后面是数据 _|  (0)或  |_(1)
//
//TCNT0为FC(EM4095 RDY/CLK引脚输出信号)记数
//DEMOD为EM4095 DEMOD_OUT引脚输出电平
unsigned char findhead(void)
{
unsigned char retv=0;//未找到同步头返回0
while(!DEMOD);//找上升沿
TCNT0=0;
while(DEMOD);//找下降沿
if(TCNT0>42 && TCNT0<54)//1.5T高电平(48FC)
{
  TCNT0=0;
  while(!DEMOD);//找上升沿
  if(TCNT0>10 && TCNT0<22)//0.5T低电平(16FC)
  {
   TCNT0=0;
   while(DEMOD);//找下降沿
   if(TCNT0>26 && TCNT0<54)
   {
    if(TCNT0>42) TCNT0=16;//1.5T高电平(48FC)(包含第一位数据1的前半部分)
    else TCNT0=0;//1T高电平(32FC),第一位数据为0
    retv=1;//找到同步头返回1
   }
  }
}
return retv;
}

void readcard(void)
{
unsigned char i=0,j=0;
for(i=0;i<28;i++)  DATA=0;//数据缓存清零
while(!findhead());//找同步头
while(TCNT0<24);//延时0.75T(24FC)
for(i=0;i<28;i++)//读取28比特数据
{
  for(j=0;j<8;j++)
  {
   if(!DEMOD)    DATA|=1;//读到数据1写数据缓存
   DATA<<=1;//准备读下一位数据
   TCNT0=0;
   while(TCNT0<32);//延时1T(32FC),在每一位的0.75T处读数据
  }
}
}

以上为我的读卡函数,但每次读到的数据都不一样,是怎么回事呢?请教高手指点一下!

出0入0汤圆

发表于 2010-2-17 21:49:30 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-2-20 13:21:47 | 显示全部楼层
问题已解决!

出0入0汤圆

发表于 2010-2-21 16:39:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-2-22 15:38:26 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2010-2-24 00:04:36 | 显示全部楼层
to: 157楼,问题已经解决,不烦跟大家简单说说原因,春节期间都忙着玩这个吧

出0入0汤圆

发表于 2010-2-24 08:11:55 | 显示全部楼层
mark!

出0入0汤圆

发表于 2010-3-1 19:38:54 | 显示全部楼层
因为每一位传送的时间不是标准的时间T,每隔时间T采样一位数据就会有累计时间误差,所以读到的数据每次都不一样。
解决办法是检测每一位数据1的下降沿(数据0的上升沿),再间隔0.75T读取下一位数据。这样就消除了累计时间误差,就能够准确读取数据了。

出0入0汤圆

发表于 2010-3-1 21:28:22 | 显示全部楼层
jh

出0入0汤圆

发表于 2010-3-1 21:47:40 | 显示全部楼层
<b>mark</b>

出0入0汤圆

发表于 2010-3-2 22:03:03 | 显示全部楼层
强贴留名!

出0入16汤圆

发表于 2010-3-12 12:41:28 | 显示全部楼层
mark 慢慢看

出10入10汤圆

发表于 2010-3-12 12:44:54 | 显示全部楼层
mark!

出0入0汤圆

发表于 2010-3-30 14:26:46 | 显示全部楼层
都是通过U2270B读取T5557?

出0入0汤圆

发表于 2010-3-31 23:35:20 | 显示全部楼层
EM4469卡怎么同步呢?

出0入0汤圆

发表于 2010-4-1 20:29:55 | 显示全部楼层
收藏了,谢谢了!

出0入0汤圆

发表于 2010-4-1 20:48:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-10 16:04:06 | 显示全部楼层
楼主,你好,最近在调试U2270,请问在没有接天线的时候能够在2270的8,9脚测出接近125k的信号,但是把天线接上去后,频率就变成了74KHz,请问是什么原因?谢谢!

出0入0汤圆

发表于 2010-5-10 16:50:33 | 显示全部楼层
mark!

出0入0汤圆

发表于 2010-5-10 18:37:35 | 显示全部楼层
回复【172楼】nova8806
-----------------------------------------------------------------------

你的天线回路的谐振频率是74KHZ,调整天线的电感和谐振电容,使其谐振到125KHZ就可以。

出0入0汤圆

发表于 2010-5-11 08:39:48 | 显示全部楼层
多谢skyxjh 许工
是这样的,天线和电感我已经匹配到了125K了,天线是344uH,电容是472,
在没有接天线的时候,U2270上面能测到125K的信号,但是接上天线后就变成了74khz了

出0入0汤圆

发表于 2010-5-26 14:10:23 | 显示全部楼层
好贴,学习中

出0入0汤圆

发表于 2010-5-26 16:15:14 | 显示全部楼层
kk

出0入0汤圆

发表于 2010-8-8 17:36:57 | 显示全部楼层
TK4100卡都是曼码输入吗?资料上写有三种码。最近我买了一些卡。在示波器看到明显没有曼码中的9个一。请问大家的卡都是曼码输出吗

出0入0汤圆

发表于 2010-8-19 11:37:13 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-17 17:12:05 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-21 14:14:52 | 显示全部楼层
回复【145楼】sdmcu51
-----------------------------------------------------------------------

剩余的模块还有么。我想要个

出0入0汤圆

发表于 2010-11-3 17:08:56 | 显示全部楼层
标记

出0入0汤圆

发表于 2010-12-11 10:39:29 | 显示全部楼层
MARK一下

出0入16汤圆

发表于 2010-12-11 16:06:56 | 显示全部楼层
MARK

出0入0汤圆

 楼主| 发表于 2010-12-16 16:01:19 | 显示全部楼层
TO: 178楼,应该是曼码的,DataRate:RF64,我搞了这么久了,还没看到其他编码的

出0入0汤圆

发表于 2010-12-25 10:58:57 | 显示全部楼层
回复【186楼】whimsy
-----------------------------------------------------------------------

嘿!你好,我现在在用u2270b做ID读卡器,作为我的毕设,但是我根据电路图连好后(1.5nf和1.2nf的电容用102的代替了),无法正常工作啊,
请问该怎么发现问题呢??     我用示波器看了coil1和coil2有反相的方波(不是很规则)输出,频率都是51khz。还有我的线圈电感是0.5mh的,我用了332的电容(3.3nf),焊接电路前测过谐振频率是125Khz左右了。

现在output引脚没信号输出呢??

出0入0汤圆

发表于 2010-12-28 16:56:07 | 显示全部楼层
感谢楼主的共享,我用mega88+em4095搞定了读卡

出0入0汤圆

发表于 2011-1-15 02:02:17 | 显示全部楼层
好久没有上来看看,,呵呵
ID工作者多不,发表一下看,

出0入0汤圆

发表于 2011-2-26 23:15:21 | 显示全部楼层
绝对好贴,不顶不行

出0入0汤圆

发表于 2011-3-6 21:10:43 | 显示全部楼层
受教了

出0入0汤圆

发表于 2011-3-18 10:52:25 | 显示全部楼层
呵呵···学习中

出0入0汤圆

发表于 2011-3-21 17:22:42 | 显示全部楼层
用Mega32通过U2270B读取H4001RFID卡号

出0入0汤圆

发表于 2011-3-21 20:28:36 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-28 10:27:19 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-28 14:31:07 | 显示全部楼层
学习中

出0入0汤圆

发表于 2011-3-28 15:41:22 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-3-29 14:58:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-20 22:27:22 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-18 15:24:01 | 显示全部楼层
看了一遍,还没太明白,从头再看!

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-4-20 03:35

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

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