Created
March 13, 2022 07:44
-
-
Save youwei0505/364c893f0c1faae2a840311ae8e405c8 to your computer and use it in GitHub Desktop.
RFID_StudentIDCard
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* -------------------------------------------------------------------------------------------------------------------- | |
* Example to change UID of changeable MIFARE card. | |
* -------------------------------------------------------------------------------------------------------------------- | |
* This is a MFRC522 library example; for further details and other examples see: https://github.com/miguelbalboa/rfid | |
* | |
* This sample shows how to set the UID on a UID changeable MIFARE card. | |
* | |
* @author Tom Clement | |
* @license Released into the public domain. | |
* | |
* Typical pin layout used: | |
* ----------------------------------------------------------------------------------------- | |
* MFRC522 Arduino Arduino Arduino Arduino Arduino | |
* Reader/PCD Uno/101 Mega Nano v3 Leonardo/Micro Pro Micro | |
* Signal Pin Pin Pin Pin Pin Pin | |
* ----------------------------------------------------------------------------------------- | |
* RST/Reset RST 9 5 D9 RESET/ICSP-5 RST | |
* SPI SS SDA(SS) 10 53 D10 10 10 | |
* SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16 | |
* SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14 | |
* SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15 | |
* | |
* More pin layouts for other boards can be found here: https://github.com/miguelbalboa/rfid#pin-layout | |
*/ | |
#include <SPI.h> | |
#include <MFRC522.h> | |
#define RST_PIN 9 // Configurable, see typical pin layout above | |
#define SS_PIN 10 // Configurable, see typical pin layout above | |
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance | |
/* Set your new UID here! */ | |
#define NEW_UID {0x85, 0x6A , 0x98, 0x48} | |
MFRC522::MIFARE_Key key; | |
void setup() { | |
Serial.begin(9600); // Initialize serial communications with the PC | |
while (!Serial); // Do nothing if no serial port is opened (added for Arduinos based on ATMEGA32U4) | |
SPI.begin(); // Init SPI bus | |
mfrc522.PCD_Init(); // Init MFRC522 card | |
Serial.println(F("Warning: this example overwrites the UID of your UID changeable card, use with care!")); | |
// Prepare key - all keys are set to FFFFFFFFFFFFh at chip delivery from the factory. | |
for (byte i = 0; i < 6; i++) { | |
key.keyByte[i] = 0xFF; | |
} | |
} | |
// Setting the UID can be as simple as this: | |
//void loop() { | |
// byte newUid[] = NEW_UID; | |
// if ( mfrc522.MIFARE_SetUid(newUid, (byte)4, true) ) { | |
// Serial.println("Wrote new UID to card."); | |
// } | |
// delay(1000); | |
//} | |
// But of course this is a more proper approach | |
void loop() { | |
// Reset the loop if no new card present on the sensor/reader. This saves the entire process when idle. And if present, select one. | |
if ( ! mfrc522.PICC_IsNewCardPresent() || ! mfrc522.PICC_ReadCardSerial() ) { | |
delay(50); | |
return; | |
} | |
// Now a card is selected. The UID and SAK is in mfrc522.uid. | |
// Dump UID | |
Serial.print(F("Card UID:")); | |
for (byte i = 0; i < mfrc522.uid.size; i++) { | |
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "); | |
Serial.print(mfrc522.uid.uidByte[i], HEX); | |
} | |
Serial.println(); | |
// Dump PICC type | |
// MFRC522::PICC_Type piccType = mfrc522.PICC_GetType(mfrc522.uid.sak); | |
// Serial.print(F("PICC type: ")); | |
// Serial.print(mfrc522.PICC_GetTypeName(piccType)); | |
// Serial.print(F(" (SAK ")); | |
// Serial.print(mfrc522.uid.sak); | |
// Serial.print(")\r\n"); | |
// if ( piccType != MFRC522::PICC_TYPE_MIFARE_MINI | |
// && piccType != MFRC522::PICC_TYPE_MIFARE_1K | |
// && piccType != MFRC522::PICC_TYPE_MIFARE_4K) { | |
// Serial.println(F("This sample only works with MIFARE Classic cards.")); | |
// return; | |
// } | |
// Set new UID | |
byte newUid[] = NEW_UID; | |
if ( mfrc522.MIFARE_SetUid(newUid, (byte)4, true) ) { | |
Serial.println(F("Wrote new UID to card.")); | |
} | |
// Halt PICC and re-select it so DumpToSerial doesn't get confused | |
mfrc522.PICC_HaltA(); | |
if ( ! mfrc522.PICC_IsNewCardPresent() || ! mfrc522.PICC_ReadCardSerial() ) { | |
return; | |
} | |
// Dump the new memory contents | |
Serial.println(F("New UID and contents:")); | |
mfrc522.PICC_DumpToSerial(&(mfrc522.uid)); | |
delay(2000); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment