艰苦奋斗 发表于 2015-7-12 20:58:01

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

本帖最后由 艰苦奋斗 于 2015-7-25 19:23 编辑

//参考:极客工坊bg1lsy ([email protected])
//修改: chenrj通过键盘接口输出RFID的卡号,可用于刷卡考勤等。
#include <SPI.h>
#include <RFID.h>
#define bee 3   //蜂鸣器接口

/*
RFID   ->   Arduino UNO
-------------------
3.3V   ->3.3V
RST   ->D5
GND   ->GND
IRQ   ->NC
MISI->D12
MOSI->D11
SCK   ->D13
SDA   ->D10
注意:上面接线方法只适用UNO或跟UNO兼容的硬件SPI接口的板卡,
对LEONARDO这种板,因为SPI接口没接到IO口,上面的接线方法不适用
Leonardo板接法如下:
RFID         leonadoICSP接口
-------------------
3.3V   ->3.3V
RST   ->   D5
GND   ->ICSP 6脚
IRQ   ->   NC
MISI->ICSP 1脚
MOSI->ICSP 4脚
SCK   ->ICSP 3脚
SDA   ->D10
*/


RFID rfid(10,5);//RFID(int chipSelectPin, int NRSTPD); D10 应接RFID读卡器的片选(SDA),D5接复位(RST)脚
void setup()
{
pinMode(bee,OUTPUT);
Serial.begin(9600);
SPI.begin();
rfid.init();
beep();
beep();
beep();
Keyboard.begin();
}

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


void loop()
{
//找卡
   if (rfid.isCard()) {
    Serial.println("Find the card!");
    //读取卡序列号
    beep();   
    if (rfid.readCardSerial()) {
       Serial.print("The card's number is: ");
      Serial.print(rfid.serNum,HEX);
      Serial.print(rfid.serNum,HEX);
      Serial.print(rfid.serNum,HEX);
      Serial.print(rfid.serNum,HEX);
      Serial.print(rfid.serNum,HEX);
      Serial.println(" ");
      Keyboard.print(rfid.serNum,HEX);
      Keyboard.print(rfid.serNum,HEX);
      Keyboard.print(rfid.serNum,HEX);
      Keyboard.print(rfid.serNum,HEX);
      Keyboard.print(rfid.serNum,HEX);
      Keyboard.print("\n");   
      }
    //选卡,可返回卡容量(锁定卡片,防止多数读取),去掉本行将连续读卡
    rfid.selectTag(rfid.serNum);
}
rfid.halt();
}库文件参考下面的贴子:http://www.geek-workshop.com/forum.php?mod=viewthread&tid=4719&highlight=rfid

艰苦奋斗 发表于 2015-7-12 21:18:08

原来是论坛的发贴器不支持IE11,必须要加到兼容列表里才能看到贴图和贴代码的按钮栏。:o

lm4766 发表于 2015-7-13 10:32:46

配个上位机才好玩

艰苦奋斗 发表于 2015-7-13 18:07:57

lm4766 发表于 2015-7-13 10:32 static/image/common/back.gif
配个上位机才好玩

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

lm4766 发表于 2015-7-14 09:04:27

艰苦奋斗 发表于 2015-7-13 18:07 static/image/common/back.gif
上位机用ASP写了个远程学生卡注册的模块,结合上面的程序就基本可以正常注册管理无线卡了,下面准备做个 ...

现在替刷的比较多,怎么防范

asdfcgdc 发表于 2015-7-14 14:31:36

板子是兼容板吧

艰苦奋斗 发表于 2015-7-14 22:23:35

lm4766 发表于 2015-7-14 09:04 static/image/common/back.gif
现在替刷的比较多,怎么防范

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

艰苦奋斗 发表于 2015-7-14 22:29:17

asdfcgdc 发表于 2015-7-14 14:31 static/image/common/back.gif
板子是兼容板吧

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

lm4766 发表于 2015-7-15 00:03:46

艰苦奋斗 发表于 2015-7-14 22:29 static/image/common/back.gif
都是淘宝买的便宜货,原装正版太贵了,这个只要二十几块钱,非常合算的,自已买零件做估计都不止这价。
...

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

asdfcgdc 发表于 2015-7-20 16:46:49

{:soso_e113:}{:soso_e113:}{:soso_e113:}
页: [1]
查看完整版本: 用leonardo做了个感应卡读卡器,可以通过键盘接口输出RFID的卡号