Difference between revisions of "ECE 110/Equipment/RFID Module"

From PrattWiki
Jump to navigation Jump to search
(Created page with "== Introduction == The ID-12LA RFID reader will read and report values for RFID tags. The tag information will be delivered to a serial port one byte at a time. Recall that...")
 
(Leads)
Line 14: Line 14:
 
== Leads ==
 
== Leads ==
 
* VCC: Supply voltage, typically 5 V
 
* VCC: Supply voltage, typically 5 V
* DATA: Data channel
+
* DATA: Data channel - this should be a serial port and on the CX-Bot it is Serial1
 
* GND: Ground
 
* GND: Ground
  

Revision as of 22:23, 18 August 2022

Introduction

The ID-12LA RFID reader will read and report values for RFID tags. The tag information will be delivered to a serial port one byte at a time. Recall that a byte is an 8-bit binary number (which can also be represented with a 2-character hexadecimal number).

For the tags in lab:

  • The first byte will always be 00000010 (dec: 2, hex:0x02) - STX, the "start of text" code in ASCII.
  • The next two bytes will form the chip code. Each of these bytes will represent a hexadecimal value and will thus be the characters 0-9 or A-F (dec: 48-57 or 65-70, hex: 0x30-0x39 or 0x41-0x46).
  • The next ten bytes will form a unique ID. Each of these bytes will also represent a hexadecimal value.
  • The fourteenth byte will always be 00001110 (dec 13, hex: 0x0D) - CR, the "carriage return" code in ASCII.
  • The fifteenth byte will always be 00001100 (dec 10, hex 0x0A) - LF, the "line feed" code in ASCII.
  • The sixteenth and final byte will always be 00000011 (dec 3, hex 0x03) - ETX, the "end of text" in ASCII.

Generally, we will only want to store the 12 bytes comprising the chip code and the unique ID.

Leads

  • VCC: Supply voltage, typically 5 V
  • DATA: Data channel - this should be a serial port and on the CX-Bot it is Serial1
  • GND: Ground

Operation

Sample Code

// Based on https://www.instructables.com/Reading-RFID-Tags-with-an-Arduino/
// Expanded by Michael R. Gustafson II to include hex / bin / dec values and 
// replace unprintable characters

char val = 0; // variable to store the data from the serial port

void setup() {
  Serial.begin(9600); // connect to the serial port for the monitor
  Serial1.begin(9600); // connect to the serial port for the RFID reader
  Serial.println("");
  Serial.println("Char\tHex\tDec\tBin");
  
}

void loop () {
  if(Serial1.available() > 0) {
  val = Serial1.read();

  // Handle unprintable characters
  switch(val) {
    case 0x2: Serial.print("STX"); break;
    case 0x3: Serial.print("ETX"); break;
    case 0xA: Serial.print("LF");  break;
    case 0xD: Serial.print("CR");  break;
    default:  Serial.print(val);   break;
  }
  Serial.print("\t");
    
  Serial.print(val, HEX); Serial.print("\t");
  Serial.print(val, DEC); Serial.print("\t");
  Serial.print(val, BIN); Serial.println("");
  }
}

Notes

References