物聯(lián)傳媒 旗下網(wǎng)站
登錄 注冊
RFID世界網(wǎng) >  解決方案  >  其他  >  正文

技術宅基于rc522模塊DIY的一套RFID門禁方案

作者:吳湛
來源:RFID世界網(wǎng)
日期:2018-11-14 16:00:07
摘要:為解決樓主日常把鑰匙忘在宿舍里,但是羊城通和手機卻不會忘,于是對宿舍門加入rfid開鎖功能RFID
關鍵詞:RFID門禁

  為解決樓主日常把鑰匙忘在宿舍里,但是羊城通和手機卻不會忘,于是對宿舍門加入rfid開鎖功能。

  基本功能:本項目使用rc522讀取rfid卡的id后,與事先寫入程序的Id號碼進行對比,if對比成功,開門else不開門,后期可增加屏幕顯示,開門日志記錄到tf卡等功能,現(xiàn)在窮,不過這樣做功耗會變大,導致需要usb充電器供電?,F(xiàn)在一塊8000毫安充電寶可以穩(wěn)定使用一星期。

  需要準備的原件arduino uno

  rc522模塊

  足夠拉開你家門力氣的舵機一個

  各種平時用m1卡(羊城通,小區(qū)門禁,帶nfc的手機,飯卡等等……)

  (以上原件圖片來自互聯(lián)網(wǎng))

  制作的基本過程

  1、硬件接線圖與原理圖

  #include 《SPI.h》

  #include 《RFID.h》

  #include 《Servo.h》

  Servo myservo;

  extern uint8_t SmallFont[];

  RFID rfid(10,8); //D10--接上SDA、D8--接RST D13--接上SCK D11--接上MOSI D12--接上MISO RQ不接

  unsigned char serNum[5];

  void setup()

  {

  Serial.begin(9600);//串口用來讀取需要添加的卡號,然后手動寫到程序里

  myservo.attach(9);//舵機針腳位9

  myservo.write(0); //舵機初始化0度

  SPI.begin();

  rfid.init();

  }

  void loop()

  {

  long randNumber = random(0, 20);

  unsigned char i,tmp;

  unsigned char status;

  unsigned char str[MAX_LEN];

  unsigned char RC_size;

  //找卡

  rfid.isCard();

  //讀卡號

  if (rfid.readCardSerial())

  {

  Serial.print(“your card id is : ”);

  Serial.print(rfid.serNum[0]);

  Serial.print(“ , ”);

  Serial.print(rfid.serNum[1],BIN);

  Serial.print(“ , ”);

  Serial.print(rfid.serNum[2],BIN);

  Serial.print(“ , ”);

  Serial.print(rfid.serNum[2],BIN);

  Serial.print(“ , ”);

  Serial.print(rfid.serNum[4],BIN);

  Serial.println(“ ”);

  //下面是改卡號區(qū)域

  if(rfid.serNum[0]==30||rfid.serNum[0]==148||rfid.serNum[0]==136||rfid.serNum[0]==161||rfid.serNum[0]==68){//第一道篩選

  for(int i=0;i《100;i++)

  {

  if(rfid.serNum[0]==30||rfid.serNum[0]==117||rfid.serNum[0]==155)//第二道篩選,支持一人一號

  {

  Serial.println(“Welcome test 1”);

  myservo.write(180);

  }

  if(rfid.serNum[0]==148||rfid.serNum[0]==68||rfid.serNum[0]==161)//rfid.serNum[0]==161 這個0是id位置,可以自行更改

  {

  Serial.println(“Welcome test 2”);

  myservo.write(180);

  }

  if(rfid.serNum[0]==136)

  {

  Serial.println(“Welcome test 3”);

  myservo.write(180);

  }

  }

  delay(1000);

  myservo.write(0);

  Serial.println(“closed”);

  }

  }

  if (!rfid.readCardSerial()){

  }

  rfid.halt(); //休眠

  }

  本源碼在arduino ide1.0.6正常編譯

  參考資料

  感謝ID:酥糖 提供的互聯(lián)網(wǎng)上的相似項目

  在互聯(lián)網(wǎng)上找到的rfid庫,大大加快了我的制作過程。

  實戰(zhàn)演練

  1.充電寶解決方案

  外殼是一個金莎巧克力的改字

  這是未完工狀態(tài),后面會噴個漆用膠布貼緊

  我們學校的舊鎖舵機安裝示意圖↑

  2.usb充電器供電方案

  rc522 安裝示意圖