Another RFID Question
NWCCTV
Posts: 3,629
Is there just a simple OBEX demo that will display the results of the RFID tag reading in a Serial Terminal instead of using either VGA or LCD?

Comments
CON _xinfreq=5_000_000 _clkmode=xtal1+pll16x '80MHz system clock is recommended for stable data transfer LCD_pin=0 'Propeller pin connected to LCD's "RX" pin RFID=1 'Propeller pin connected to RFID's "SOUT" pin (through a 1k resistor) RFID_EN=2 'Propeller pin connected to RFID's "/ENABLE" pin OBJ ser : "FullDuplexSerial" VAR byte i,RFIDdata[12] 'The RFIDdata array stores ID byte codes read from the RFID PUB Main ser.start(31,30,0,19200) 'wait for any input from terminal ser.rx "Debug.init(LCD_pin,19200,4) 'Initialize the Debug_Lcd object " " Debug.cursor(0) 'Make the cursor invisible" " Debug.backlight(true) 'Turn on the backlight " repeat ReadRFID 'This method gets the RFID tag's data from the scanner ser.str(string(DisplayRFID)) 'This method displays the RFID tag's data on the LCD screen "Debug.gotoxy(0,3) 'Set the LCD screen's cursor to start of the bottom line" if CheckRFID 'If the return value from the CheckRFID method is one, then the ser.str(string("Access Granted!")) ' tag's ID matched one of the preprogrammed codes else 'If the return value from the CheckRFID method is zero, then the ser.str(string("Access Denied!")) ' tag's ID did not match any of the preprogrammed codes PUB ReadRFID | bit,time,deltaT dira[RFID]~ 'Set direction of RFID to be an input dira[RFID_EN]~~ 'Set direction of RFID_EN to be an output deltaT:=clkfreq/2400 'Set deltaT to 1/2400th of a second for 2400bps "Baud" rate outa[RFID_EN]~ 'Enable the RFID reader repeat i from 0 to 11 'Fill in the 12 byte arrays with data sent from RFID reader waitpeq(1 << RFID,|< RFID,0) 'Wait for a high-to-low signal on RFID's SOUT pin, which waitpeq(0 << RFID,|< RFID,0) ' signals the start of the transfer of each packet of 10 data bits time:=cnt 'Record the counter value at start of each transmission packet waitcnt(time+=deltaT+deltaT/2) 'Skip the start bit (always zero) and center on the 2nd bit repeat 8 'Gather 8 bits for each byte of RFID's data RFIDdata[i]:=RFIDdata[i]<<1 + ina[RFID] 'Shift RFIDdata bits left and add current bit (state of RFID pin) waitcnt(time+=deltaT) 'Pause for 1/2400th of a second (2400 bits per second) RFIDdata[i]><=8 'Reverse the order of the bits (RFID scanner sends LSB first) outa[RFID_EN]~~ 'Disable the RFID reader PUB DisplayRFID ser.cls 'Clear the Serial screen if RFIDdata[0]<>10 or RFIDdata[11]<>13 'All cards should have the same start byte and end byte ser.str(string("Error! Try Again.")) ReadRFID 'Try running the "ReadRFID" method again else repeat i from 1 to 10 'Display each of the 10 unique identification bytes ser.dec(RFIDdata[i]) ser.str(string(" ")) PUB CheckRFID repeat i from 0 to 9 'Compare tag's 10 unique ID #s against ID #s stored in data table if RFIDdata[i+1]<>Tag1[i] and RFIDdata[i+1]<>Tag2[i] and RFIDdata[i+1]<>Tag3[i] if RFIDdata[i+1]<>Tag4[i] and RFIDdata[i+1]<>Tag5[i] and RFIDdata[i+1]<>Tag6[i] 'etc. return 0 'If one of the IDs does not match, return a zero return 1 'If one of the ID sequences matched, return a one DAT 'i= 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Tag1 byte 48,70,48,51,48,50,56,53,55,53 '<-- Enter your own RFID tag ID numbers here Tag2 byte 48,70,48,50,65,54,55,48,69,48 Tag3 byte 48,52,49,54,50,66,66,53,55,54 Tag4 byte 48,70,48,50,65,54,55,50,51,66 Tag5 byte 48,70,48,50,65,54,55,50,51,66 Tag6 byte 48,52,49,54,50,66,66,53,53,54 'etc.-Tommy