diff --git a/README.md b/README.md new file mode 100644 index 0000000..0ab1546 --- /dev/null +++ b/README.md @@ -0,0 +1,12 @@ +rfid +==== + +Arduino RFID Library for MFRC522 + +Read a card using a mfrc522 reader on your SPI interface on your Arduino +* Pin layout should be as follows (on Arduino Uno): +* MOSI: Pin 11 / ICSP-4 +* MISO: Pin 12 / ICSP-1 +* SCK: Pin 13 / ISCP-3 +* SS: Pin 10 (Configurable) +* RST: Pin 9 (Configurable) diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..5e936bf --- /dev/null +++ b/TODO.md @@ -0,0 +1,6 @@ +TODO: + +Create Examples: +- Read more stuff than the serial number +- Write to a card +- Do some ethernet stuff (with an ethernet module) diff --git a/examples/cardDisplay/cardDisplay.ino b/examples/cardDisplay/cardDisplay.ino new file mode 100644 index 0000000..7fb22f3 --- /dev/null +++ b/examples/cardDisplay/cardDisplay.ino @@ -0,0 +1,126 @@ +/** +* Read a card using a mfrc522 reader on your SPI interface +* Pin layout should be as follows (on Arduino Uno): +* MOSI: Pin 11 / ICSP-4 +* MISO: Pin 12 / ICSP-1 +* SCK: Pin 13 / ISCP-3 +* SS: Pin 10 +* RST: Pin 9 +* +* Script is based on the script of Miguel Balboa. +* Serial number is shown on a HD44780 compatible display +* +* The circuit: +* LCD RS pin to digital pin (7) +* LCD Enable pin to digital pin (6) +* LCD D4 pin to digital pin 5 +* LCD D5 pin to digital pin 4 +* LCD D6 pin to digital pin 3 +* LCD D7 pin to digital pin 2 +* LCD R/W pin to ground +* 10K resistor: +* ends to +5V and ground +* wiper to LCD VO pin (pin 3) +* +* @version 0.1 +* @author Henri de Jong +* @since 27-01-2013 +*/ + +#include +#include +#include + +#define SS_PIN 10 +#define RST_PIN 9 + +RFID rfid(SS_PIN, RST_PIN); + +LiquidCrystal lcd(7, 6, 5, 4, 3, 2); + +// Setup variables: + int serNum0; + int serNum1; + int serNum2; + int serNum3; + int serNum4; + +void setup() +{ + Serial.begin(9600); + lcd.begin(16, 2); + SPI.begin(); + rfid.init(); + +} + +void loop() +{ + + if (rfid.isCard()) { + if (rfid.readCardSerial()) { + if (rfid.serNum[0] != serNum0 + && rfid.serNum[1] != serNum1 + && rfid.serNum[2] != serNum2 + && rfid.serNum[3] != serNum3 + && rfid.serNum[4] != serNum4 + ) { + /* With a new cardnumber, show it. */ + Serial.println(" "); + Serial.println("Card found"); + serNum0 = rfid.serNum[0]; + serNum1 = rfid.serNum[1]; + serNum2 = rfid.serNum[2]; + serNum3 = rfid.serNum[3]; + serNum4 = rfid.serNum[4]; + + //Serial.println(" "); + Serial.println("Cardnumber:"); + Serial.print("Dec: "); + Serial.print(rfid.serNum[0],DEC); + Serial.print(", "); + Serial.print(rfid.serNum[1],DEC); + Serial.print(", "); + Serial.print(rfid.serNum[2],DEC); + Serial.print(", "); + Serial.print(rfid.serNum[3],DEC); + Serial.print(", "); + Serial.print(rfid.serNum[4],DEC); + Serial.println(" "); + + Serial.print("Hex: "); + Serial.print(rfid.serNum[0],HEX); + Serial.print(", "); + Serial.print(rfid.serNum[1],HEX); + Serial.print(", "); + Serial.print(rfid.serNum[2],HEX); + Serial.print(", "); + Serial.print(rfid.serNum[3],HEX); + Serial.print(", "); + Serial.print(rfid.serNum[4],HEX); + Serial.println(" "); + + /* Write the HEX code to the display */ + lcd.clear(); + lcd.setCursor(0, 0); + lcd.print("Cardno (hex):"); + lcd.setCursor(0,1); + lcd.print(rfid.serNum[0], HEX); + lcd.print(','); + lcd.print(rfid.serNum[1], HEX); + lcd.print(','); + lcd.print(rfid.serNum[2], HEX); + lcd.print(','); + lcd.print(rfid.serNum[3], HEX); + lcd.print(','); + lcd.print(rfid.serNum[4], HEX); + } else { + /* If we have the same ID, just write a dot. */ + Serial.print("."); + } + } + } + + rfid.halt(); +} + diff --git a/examples/cardRead/cardRead.ino b/examples/cardRead/cardRead.ino new file mode 100644 index 0000000..4a53eca --- /dev/null +++ b/examples/cardRead/cardRead.ino @@ -0,0 +1,96 @@ +/** +* Read a card using a mfrc522 reader on your SPI interface +* Pin layout should be as follows (on Arduino Uno): +* MOSI: Pin 11 / ICSP-4 +* MISO: Pin 12 / ICSP-1 +* SCK: Pin 13 / ISCP-3 +* SS: Pin 10 +* RST: Pin 9 +* +* Script is based on the script of Miguel Balboa. +* New cardnumber is printed when card has changed. Only a dot is printed +* if card is the same. +* +* @version 0.1 +* @author Henri de Jong +* @since 06-01-2013 +*/ + +#include +#include + +#define SS_PIN 10 +#define RST_PIN 9 + +RFID rfid(SS_PIN, RST_PIN); + +// Setup variables: + int serNum0; + int serNum1; + int serNum2; + int serNum3; + int serNum4; + +void setup() +{ + Serial.begin(9600); + SPI.begin(); + rfid.init(); + +} + +void loop() +{ + + if (rfid.isCard()) { + if (rfid.readCardSerial()) { + if (rfid.serNum[0] != serNum0 + && rfid.serNum[1] != serNum1 + && rfid.serNum[2] != serNum2 + && rfid.serNum[3] != serNum3 + && rfid.serNum[4] != serNum4 + ) { + /* With a new cardnumber, show it. */ + Serial.println(" "); + Serial.println("Card found"); + serNum0 = rfid.serNum[0]; + serNum1 = rfid.serNum[1]; + serNum2 = rfid.serNum[2]; + serNum3 = rfid.serNum[3]; + serNum4 = rfid.serNum[4]; + + //Serial.println(" "); + Serial.println("Cardnumber:"); + Serial.print("Dec: "); + Serial.print(rfid.serNum[0],DEC); + Serial.print(", "); + Serial.print(rfid.serNum[1],DEC); + Serial.print(", "); + Serial.print(rfid.serNum[2],DEC); + Serial.print(", "); + Serial.print(rfid.serNum[3],DEC); + Serial.print(", "); + Serial.print(rfid.serNum[4],DEC); + Serial.println(" "); + + Serial.print("Hex: "); + Serial.print(rfid.serNum[0],HEX); + Serial.print(", "); + Serial.print(rfid.serNum[1],HEX); + Serial.print(", "); + Serial.print(rfid.serNum[2],HEX); + Serial.print(", "); + Serial.print(rfid.serNum[3],HEX); + Serial.print(", "); + Serial.print(rfid.serNum[4],HEX); + Serial.println(" "); + } else { + /* If we have the same ID, just write a dot. */ + Serial.print("."); + } + } + } + + rfid.halt(); +} +