极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 17672|回复: 9

用leonardo做了个感应卡读卡器,可以通过键盘接口输出RFID的卡号

[复制链接]
发表于 2015-7-12 20:58:01 | 显示全部楼层 |阅读模式
本帖最后由 艰苦奋斗 于 2015-7-25 19:23 编辑
  1. //参考:极客工坊bg1lsy ([email][email protected][/email])
  2. //修改: chenrj  通过键盘接口输出RFID的卡号,可用于刷卡考勤等。
  3. #include <SPI.h>
  4. #include <RFID.h>
  5. #define bee 3   //蜂鸣器接口

  6. /*
  7. RFID   ->   Arduino UNO
  8. -------------------
  9. 3.3V   ->  3.3V
  10. RST   ->  D5
  11. GND   ->  GND
  12. IRQ   ->  NC
  13. MISI  ->  D12
  14. MOSI  ->  D11
  15. SCK   ->  D13
  16. SDA   ->  D10
  17. 注意:上面接线方法只适用UNO或跟UNO兼容的硬件SPI接口的板卡,
  18. 对LEONARDO这种板,因为SPI接口没接到IO口,上面的接线方法不适用
  19. Leonardo板接法如下:
  20. RFID         leonado  ICSP接口
  21. -------------------
  22. 3.3V   ->  3.3V
  23. RST   ->   D5
  24. GND   ->  ICSP 6脚
  25. IRQ   ->   NC
  26. MISI  ->  ICSP 1脚
  27. MOSI  ->  ICSP 4脚
  28. SCK   ->  ICSP 3脚
  29. SDA   ->  D10
  30. */


  31. RFID rfid(10,5);  //RFID(int chipSelectPin, int NRSTPD); D10 应接RFID读卡器的片选(SDA),D5接复位(RST)脚
  32. void setup()
  33. {
  34.   pinMode(bee,OUTPUT);
  35.   Serial.begin(9600);
  36.   SPI.begin();
  37.   rfid.init();  
  38.   beep();
  39.   beep();
  40.   beep();
  41.   Keyboard.begin();
  42. }

  43. void beep()
  44. {   tone(bee,2000,100); //无源蜂鸣器,2KHz, 100毫秒
  45.    }


  46. void loop()
  47. {
  48.   //找卡
  49.    if (rfid.isCard()) {
  50.     Serial.println("Find the card!");
  51.     //读取卡序列号
  52.     beep();   
  53.     if (rfid.readCardSerial()) {
  54.        Serial.print("The card's number is  : ");
  55.       Serial.print(rfid.serNum[0],HEX);
  56.       Serial.print(rfid.serNum[1],HEX);
  57.       Serial.print(rfid.serNum[2],HEX);
  58.       Serial.print(rfid.serNum[3],HEX);
  59.       Serial.print(rfid.serNum[4],HEX);
  60.       Serial.println(" ");
  61.       Keyboard.print(rfid.serNum[0],HEX);
  62.       Keyboard.print(rfid.serNum[1],HEX);
  63.       Keyboard.print(rfid.serNum[2],HEX);
  64.       Keyboard.print(rfid.serNum[3],HEX);
  65.       Keyboard.print(rfid.serNum[4],HEX);
  66.       Keyboard.print("\n");     
  67.         }
  68.     //选卡,可返回卡容量(锁定卡片,防止多数读取),去掉本行将连续读卡
  69.     rfid.selectTag(rfid.serNum);
  70.   }
  71.   rfid.halt();
  72. }
复制代码
库文件参考下面的贴子:http://www.geek-workshop.com/forum.php?mod=viewthread&tid=4719&highlight=rfid

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2015-7-12 21:18:08 | 显示全部楼层
原来是论坛的发贴器不支持IE11,必须要加到兼容列表里才能看到贴图和贴代码的按钮栏。
回复 支持 反对

使用道具 举报

发表于 2015-7-13 10:32:46 | 显示全部楼层
配个上位机才好玩
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-13 18:07:57 | 显示全部楼层
lm4766 发表于 2015-7-13 10:32
配个上位机才好玩


上位机用ASP写了个远程学生卡注册的模块,结合上面的程序就基本可以正常注册管理无线卡了,下面准备做个学生刷卡考勤系统,用W5100模块直接远程上传考勤记录,看还有谁敢逃我的课。
回复 支持 反对

使用道具 举报

发表于 2015-7-14 09:04:27 | 显示全部楼层
艰苦奋斗 发表于 2015-7-13 18:07
上位机用ASP写了个远程学生卡注册的模块,结合上面的程序就基本可以正常注册管理无线卡了,下面准备做个 ...

现在替刷的比较多,怎么防范
回复 支持 反对

使用道具 举报

发表于 2015-7-14 14:31:36 | 显示全部楼层
板子是兼容板吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-14 22:23:35 | 显示全部楼层
lm4766 发表于 2015-7-14 09:04
现在替刷的比较多,怎么防范

我让学生刷的是饭卡,估计一般不会把饭卡让别人刷,另外,我准备刷的时候直接返回卡对应的学生信息,发现替刷直接收卡,再请本人到我这来领。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-14 22:29:17 | 显示全部楼层
asdfcgdc 发表于 2015-7-14 14:31
板子是兼容板吧

都是淘宝买的便宜货,原装正版太贵了,这个只要二十几块钱,非常合算的,自已买零件做估计都不止这价。
想想因为有了TB,国内玩这些电子硬件的真得太幸福了,看一下sparkfun上都是美元计价,随便个小东西都要10几美元,还基本都是中国生产的,比起来,国内的价格跟免费一样。
回复 支持 反对

使用道具 举报

发表于 2015-7-15 00:03:46 | 显示全部楼层
艰苦奋斗 发表于 2015-7-14 22:29
都是淘宝买的便宜货,原装正版太贵了,这个只要二十几块钱,非常合算的,自已买零件做估计都不止这价。
...

我做的话,评估程序需要多少空间,没有用什么很多外设,只有SPI,程序占用空间也不大,一个STM8就干掉,量产的话省很多钱
回复 支持 反对

使用道具 举报

发表于 2015-7-20 16:46:49 | 显示全部楼层
{:soso_e113:}{:soso_e113:}{:soso_e113:}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-18 03:05 , Processed in 0.039983 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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