این ماژول یک ریدر کارت های RFID 125KHz است . برخلاف دیگر ماژول های RFID کویل این ماژول به صورت جداگانه به برد ماژول متصل می گردد . RDM630 تنها قابلیت خواندن کارت ها و تگ ها را دارد و نمی توان با استفاده از آن بر روی تگ ها نوشت . حداکثر فاصله بین تگ و کویل برابر 15 سانتی متر می باشد . خروجی این ماژول به صورت ارتباط UART است که به راحتی می توان آن را توسط آردوینو و یا هر MCU دیگری راه اندازی کرد .

 

مشخصات :

– ولتاژ تغذیه 5 ولت
– دارای آنتن خارجی
– رابط ارتباطی UART – دارای خروجی بازر
– قابلیت خواندن تگ ها با فرکانس 125KHz (انواع کارت ، جاسوئیچی و…)
– حداکثر فاصله برای خواندن تگ 15 سانتی متر

 

پین های ماژول ماژوب RDM6300 :

 

پین های RX و TX مربوط به ورودیخروجی های UART می باشند . همچنین پین های ANT1 و ANT2 به کویل خارجی متصل می شود . برای تغذیه ماژول نیز باید از 5 ولت استفاده شود .

 

 

راه اندازی ماژول RDM6300 با آردوینو :

برای راه اندازی این ماژول ار ارتباط UART استفاده می شود . در برنامه زیر از سریال نرم افزاری برای راه اندازی این ماژول استفاده شده است :

#include <SoftwareSerial.h>
SoftwareSerial RFID(2, 3); // RX and TX
 
int data1 = 0;
int ok = -1;
int yes = 13;
int no = 12;
 
// use first sketch in http://wp.me/p3LK05-3Gk to get your tag numbers
int tag1[14] = {2,52,48,48,48,56,54,66,49,52,70,51,56,3};
int tag2[14] = {2,52,48,48,48,56,54,67,54,54,66,54,66,3};
int newtag[14] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // used for read comparisons
 
void setup()
{
  RFID.begin(9600);    // start serial to RFID reader
  Serial.begin(9600);  // start serial to PC 
  pinMode(yes, OUTPUT); // for status LEDs
  pinMode(no, OUTPUT);
}
 
boolean comparetag(int aa[14], int bb[14])
{
  boolean ff = false;
  int fg = 0;
  for (int cc = 0 ; cc < 14 ; cc++)
  {
    if (aa[cc] == bb[cc])
    {
      fg++;
    }
  }
  if (fg == 14)
  {
    ff = true;
  }
  return ff;
}
 
void checkmytags() // compares each tag against the tag just read
{
  ok = 0; // this variable helps decision-making,
  // if it is 1 we have a match, zero is a read but no match,
  // -1 is no read attempt made
  if (comparetag(newtag, tag1) == true)
  {
    ok++;
  }
  if (comparetag(newtag, tag2) == true)
  {
    ok++;
  }
}
 
void readTags()
{
  ok = -1;
 
  if (RFID.available() > 0) 
  {
    // read tag numbers
    delay(100); // needed to allow time for the data to come in from the serial buffer.
 
    for (int z = 0 ; z < 14 ; z++) // read the rest of the tag
    {
      data1 = RFID.read();
      newtag[z] = data1;
    }
    RFID.flush(); // stops multiple reads
 
    // do the tags match up?
    checkmytags();
  }
 
  // now do something based on tag type
  if (ok > 0) // if we had a match
  {
    Serial.println("Accepted");
    digitalWrite(yes, HIGH);
    delay(1000);
    digitalWrite(yes, LOW);
 
    ok = -1;
  }
  else if (ok == 0) // if we didn't have a match
  {
    Serial.println("Rejected");
    digitalWrite(no, HIGH);
    delay(1000);
    digitalWrite(no, LOW);
 
    ok = -1;
  }
}
 
void loop()
{
  readTags();
}

 

Tags:
About Author: USER_4