nepu2015 发表于 2016-2-26 10:56:10

利用一卡通的rfid寝室门禁

本帖最后由 nepu2015 于 2016-2-26 11:12 编辑

http://www.geek-workshop.com/thread-8319-1-1.html
参照了这位仁兄的门禁,仿制做了一个,也进行了一些改进。首先去掉了5110液晶其实也可以加,但是个人觉得 貌似没啥用,机械结构,刚开始想用这个电子门锁,淘宝上一搜索有很多,然后忘了买继电器了,....电压不够门锁不能打开....GG,,,,,然后 想来想去还是用舵机吧ps我用的是路由器的电源,9v的 如果接298n驱动的话还是有点吃力就放弃了,
然后就用了舵机,具体型号参数我也不知道,反正感觉扭矩应该够大,而且这个如果不驱动的话 也很难拧动,门的那个小的把手完全可以带动,网上随便买的摇臂,用长点的舵盘也行,没啥要求,....控制电路其实很简单,程序都差不多就是稍微改进点,取了两位数据..不知道为什么我们学校一卡通居然有 单数的...感觉的第三位数据是0x然后0省略了 为了简单我就取了两位,,,,,实在是太懒了...哈哈 ,,,其实我的还可以改进一下,nano驱动板拓展的 直接可以焊接一个引脚出来就行,我有供电的小模块...就是太懒了哈哈还得改接口,懒得弄了,,然后 最重要的 ..我把门扣了一个跟舵机一样大的洞洞....发现rfid 可以透过门的那层胶合板 大概4mm的胶合板,这样那个读卡器外面就看不出来了 是不是很机智,!!!!!!

nepu2015 发表于 2016-2-26 11:05:53

本帖最后由 nepu2015 于 2016-2-26 11:11 编辑

#include <SPI.h>
#include <RFID.h>
#include <Servo.h>

RFID rfid(10,9);   //D10--读卡器MOSI引脚、D5--读卡器RST引脚
int temp=0;
Servo myservo;//定义舵机变量名
void setup()
{
Serial.begin(9600);
SPI.begin();
rfid.init();
myservo.attach(8);
}

void loop()
{
//找卡
if (rfid.isCard()) {
    Serial.println("Find the card!");
    //读取卡序列号
    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(" ");
      
      if(rfid.serNum==0xA7&&rfid.serNum==0x4C&&rfid.serNum==0xC9)
      {
      temp=1;
      }
      if(rfid.serNum==0xE9&&rfid.serNum==0x6E&&rfid.serNum==0x9C)
      {
      temp=1;
      }
      if(rfid.serNum==0xD7&&rfid.serNum==0xF6&&rfid.serNum==0xAB)
      {
      temp=1;
      }
      /************/
      if(rfid.serNum==0x55&&rfid.serNum==0xE2)
      {
      temp=1;
      }
      
      if(rfid.serNum==0x95&&rfid.serNum==0x18)
      {
      temp=1;
      }
      
      if(rfid.serNum==0x54&&rfid.serNum==0xC2)
      {
      temp=1;
      }
      if(rfid.serNum==0xA5&&rfid.serNum==0x6B)
      {
      temp=1;
      }
      
      
      if(rfid.serNum==0x15&&rfid.serNum==0xCE)
      {
      temp=1;
      }
      
      if(rfid.serNum==0x54&&rfid.serNum==0xC2)
      {
      temp=1;
      }
      if(rfid.serNum==0x25&&rfid.serNum==0x7F)
      {
      temp=1;
      }
      
      if(rfid.serNum==0x75&&rfid.serNum==0xC7)
      {
      temp=1;
      }
    }
    //选卡,可返回卡容量(锁定卡片,防止多数读取),去掉本行将连续读卡
    rfid.selectTag(rfid.serNum);
}
if(temp==1)
{
      myservo.write(30);
      delay(5000);
      myservo.write(90);
      temp=0;
}
rfid.halt();
}代码很简单,就是利用rfid库文件,也不知道这么写对不对,反正不规范就是了 。实在是块熄灯了懒得改了,而且只有一个模块...让我沾上门里面去了.....你能想象坐在门口一个个刷卡的感受么
自己第一次发帖子...补充一下...那个继电器   是过了一天同学才给我带的....唉 实在是猴急哈哈哈



soarlucky 发表于 2016-9-5 19:32:45

为什么下载的rfid提示的是无效的库文件呢

zjz5717 发表于 2016-9-6 22:15:30

soarlucky 发表于 2016-9-5 19:32 static/image/common/back.gif
为什么下载的rfid提示的是无效的库文件呢

如果你是用arduinoIDE,里面编译的时候提示无效库,看看程序能不能正常运行,如果不能的话可能要查看库文件是不是缺了什么东西。
我之前是有一个库一直提示无效的库文件,但是好像并没有什么问题

thomas 发表于 2017-3-9 11:53:47

电磁锁方便,但需要有个大电容才好触发,原理相当于抽水马桶:L
逻辑是
电源 -> 大电容 ->继电器 -> 电磁锁
有2200uf就差不多,试试看

chenwei 发表于 2017-7-7 16:21:24

为什么读出来是00000

页: [1]
查看完整版本: 利用一卡通的rfid寝室门禁