Notifications
Clear all

Esp8266 and an RFID RC522

3 Posts
3 Users
0 Reactions
204 Views
henrik_t7
(@henrik_t7)
Member
Joined: 4 years ago
Posts: 26
Topic starter  

I have made a card reader with an esp8266 and an RFID RC522 from this home page

https://www.aranacorp.com/en/using-an-rfid-module-with-an-esp8266/

 

and taken the code from the site, but it doesn't work??

#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN D8
#define RST_PIN D0
MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class
MFRC522::MIFARE_Key key;
// Init array that will store new NUID
byte nuidPICC[4];
void setup() {
 	Serial.begin(115200);
 	SPI.begin(); // Init SPI bus
 	rfid.PCD_Init(); // Init MFRC522
 	Serial.println();
 	Serial.print(F("Reader :"));
 	rfid.PCD_DumpVersionToSerial();
 	for (byte i = 0; i < 6; i++) {
 			key.keyByte[i] = 0xFF;
 	}
 	Serial.println();
 	Serial.println(F("This code scan the MIFARE Classic NUID."));
 	Serial.print(F("Using the following key:"));
 	printHex(key.keyByte, MFRC522::MF_KEY_SIZE);
}
void loop() {
 	// Reset the loop if no new card present on the sensor/reader. This saves the entire process when idle.
 	if ( ! rfid.PICC_IsNewCardPresent())
 			return;
 	// Verify if the NUID has been readed
 	if ( ! rfid.PICC_ReadCardSerial())
 			return;
 	Serial.print(F("PICC type: "));
 	MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
 	Serial.println(rfid.PICC_GetTypeName(piccType));
 	// Check is the PICC of Classic MIFARE type
 	if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
 					piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
 					piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
 			Serial.println(F("Your tag is not of type MIFARE Classic."));
 			return;
 	}
 	if (rfid.uid.uidByte[0] != nuidPICC[0] ||
 					rfid.uid.uidByte[1] != nuidPICC[1] ||
 					rfid.uid.uidByte[2] != nuidPICC[2] ||
 					rfid.uid.uidByte[3] != nuidPICC[3] ) {
 			Serial.println(F("A new card has been detected."));
 			// Store NUID into nuidPICC array
 			for (byte i = 0; i < 4; i++) {
 					nuidPICC[i] = rfid.uid.uidByte[i];
 			}
 			Serial.println(F("The NUID tag is:"));
 			Serial.print(F("In hex: "));
 			printHex(rfid.uid.uidByte, rfid.uid.size);
 			Serial.println();
 			Serial.print(F("In dec: "));
 			printDec(rfid.uid.uidByte, rfid.uid.size);
 			Serial.println();
 	}
 	else Serial.println(F("Card read previously."));
 	// Halt PICC
 	rfid.PICC_HaltA();
 	// Stop encryption on PCD
 	rfid.PCD_StopCrypto1();
}
/**
 		Helper routine to dump a byte array as hex values to Serial.
*/
void printHex(byte *buffer, byte bufferSize) {
 	for (byte i = 0; i < bufferSize; i++) {
 			Serial.print(buffer[i] < 0x10 ? " 0" : " ");
 			Serial.print(buffer[i], HEX);
 	}
}
/**
 		Helper routine to dump a byte array as dec values to Serial.
*/
void printDec(byte *buffer, byte bufferSize) {
 	for (byte i = 0; i < bufferSize; i++) {
 			Serial.print(buffer[i] < 0x10 ? " 0" : " ");
 			Serial.print(buffer[i], DEC);
 	}
}

   
Quote
(@aliarifat)
Member
Joined: 4 months ago
Posts: 51
 

Please check all the other connections such as VCC,GND,SCK,MISO,MOSI etc. Also check if the jumper wires are good. 


   
ReplyQuote
(@davee)
Member
Joined: 4 years ago
Posts: 1871
 

Hi @henrik_t7,

  I confess, I am certainly not the best person to help you, but can I respectfully suggest you provide more information about what your system does and doesn't do. Please remember, no one else can see your screen, etc., so we have no idea as to what might be working and what is not. Appropriate screenshots can be helpful, but you may also have other useful information as well.

Thanks, Dave 


   
ReplyQuote