Ho comprato questa scheda per leggere e scrivere i Tag:
http://www.ebay.it/itm/121176932287?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1439.l2649
Mi è arrivata, ma non mi funziona in nessun modo.
Connetto tutti i pin ovvero:
arduino MEGA <------>scheda mfrc522
53 SDA
50 SCK
52 MOSI
51 MISO
5 RST
groud GND
3,3V 3,3V
Ho installato la libreria rfid/MifareClassicValueBlock.ino at master · miguelbalboa/rfid · GitHub
Il led si accende ed ho provato tutti gli esempi presenti nella libreria, ma la seriale non da alcun segno di vita.
Utilizzo Arduino MEGA e Arduino 1.0.4.
Chi mi può aiutare??
Grazie
Prova a cambiare i #define dei pin SS e RESET.
Ho già provato, ma niente di niente, la seriale rimane muta....... =( =( =(
Quale sketch stai usando?
Ho provato tutti gli esempi della libreria utilizzando i tag che mi sono arrivati nella confezione.
Poi ho provato ad utilizzare altri tipi di tag che utilizzo col nexus 7 (pensando che fosse un problema dovuto al tag vuoto) ma niente di niente.
Compilando questo esempio (rfid/DumpInfo.ino at master · miguelbalboa/rfid · GitHub) e caricandolo sul MEGA, aprendo il monitor seriale a 9600bps (controlla la velocità) dovrebbe apparirti la scritta:
Scan PICC to see UID and type...
OK?
L'esempio in se funziona e la seriale mi risponde come dici tu, ma se avvicino un tag per leggerlo la seriale rimane muta . Sono in ufficio e sto provando a far funzionare questa benedetta scheda in tutti i modi.
Qualcosa mi dice che l'esempio che hai caricato era un... esempio!
Ovvero devi verificare che l'esempio non abbia un suo codice di carta, che ovviamente non va bene per il tuo.
Nel caso devi recuperare il codice delle carte in tuo possesso e usare quello nello sketch.
Dimmi se hai capito, se no procediamo passo passo.
@BaBBuino
Non so se hai letto gli esempi della libreria che ho citato del tipo Read and Write:
/*
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 53
#define RST_PIN 5
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
void setup() {
Serial.begin(9600); // Initialize serial communications with the PC
SPI.begin(); // Init SPI bus
mfrc522.PCD_Init(); // Init MFRC522 card
Serial.println("Scan a MIFARE Classic PICC to demonstrate Value Blocks.");
}
void loop() {
// Prepare key - all keys are set to FFFFFFFFFFFFh at chip delivery from the factory.
MFRC522::MIFARE_Key key;
for (byte i = 0; i < 6; i++) {
key.keyByte[i] = 0xFF;
}
// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}
// Now a card is selected. The UID and SAK is in mfrc522.uid.
// Dump UID
Serial.print("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
byte piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);
Serial.print("PICC type: ");
Serial.println(mfrc522.PICC_GetTypeName(piccType));
if ( piccType != MFRC522::PICC_TYPE_MIFARE_MINI
&& piccType != MFRC522::PICC_TYPE_MIFARE_1K
&& piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
//Serial.println("This sample only works with MIFARE Classic cards.");
return;
}
.... omissis
}
Nelle prime righe del loop mi dovrebbe stampare a seriale il codice UID appena "legge" un tag, ma non stampa niente. Ho provato con i tag della confezione (vuoti), poi ho provato altri tag (sempre MIFARE) scritti con un nexus 7, ho scritto i suoi con il nexus, ma il risultato è sempre lo stesso la seriale rimane vergognosamente muta dopo aver stampato
"Scan a MIFARE Classic PICC to demonstrate Value Blocks."
Chi è in possesso dello stesso lettore mi potrebbe dire se il codice presente nella libreria è corretto è soprattutto se la seriale reagisce quando si avvicina un Tag??
Grazie
Alura... Io ho il tuo stesso identico RFID, con identica confezione e identiche Card (1 card + 1 portachiavi) e ti assicuro che non sono vuote.
Devi usare un'altra libreria.
Usa questa in annex che funziona al 100%
RFID_master.rar (8.92 KB)
OK. Grazie.
Appena posso la provo e ti faccio sapere:
Allora ho provato la libreria che mi hai mandato, con tutti gli esempi contenuti ma la seriale continua a non stampare nulla.
A questo punto devo solo pensare che il lettore di card sia rotto.
Grazie a tutti, appena me ne arriva uno nuovo vi aggiorno.
Fermo lì, posta il codice che hai provato!
Ho provato 2 esempi contenutiu nella libreria che mi hai dato in allegato ed esattamente:
/**
* 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 <SPI.h>
#include <RFID.h>
#define SS_PIN 10
#define RST_PIN 5
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();
}
e poi
#include <SPI.h>
#include <RFID.h>
RFID rfid(10,5);
void setup()
{
Serial.begin(9600);
SPI.begin();
rfid.init();
}
void loop()
{
if (rfid.isCard()) {
Serial.println("IS CARD");
if (rfid.readCardSerial()) {
Serial.println(" ");
Serial.println("El numero de serie de la tarjeta es : ");
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(" ");
}
}
rfid.halt();
}
Il secondo esempio se ho capito bene come funziona doveva stampare a seriale "IS CARD" non appena si avvicinava il tag, ma la seriale rimane muta.
Giusto per completezza di informazioni gli esempi si compilavano perfettamente senza problemi e la seriale funziona correttamente (provata con altri file);
Rimango in attesa di altri consigli.
Ok, ti rimane di dirmi ESATTAMENTE come hai collegato i pin MF522 all'Arduino. Anzi, se posti una foto è meglio, perchè spesso dicono una cosa e poi hanno fatto un'altra...
Se la scheda non è guasta, LO RISOLVIAMO!
per me va bene, ma ci aggiorniamo a lunedi che ho lasciato tutto in ufficio.
Ciao.
Ho ho esattamente lo stesso problema.
Ma vedo che il thread si e' fermato .... qualche novita'?
Ciao e Grazie
Io avevo un duplice problema:
- la scheda NFC non funzionava
- la piedinatura di collegamento relativa ad arduino Mega scritta negli esempi della libreria rfid master è errata
Quindi una volta fatti tutti i collegamenti in maniera corretta la scheda funziona perfettamente.
Ti consiglio di controllare che i pin dello SPI coincidano con i pin riportati in calce allo scketh.
Se hai un Arduino uno guarda qui:
SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). These pins support SPI communication using the SPI library.
Se invece hai un mega (come nel mio caso) allora la configurazione è questa:
SPI: 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS). These pins support SPI communication using the SPI library. The SPI pins are also broken out on the ICSP header, which is physically compatible with the Uno, Duemilanove and Diecimila.
Ciao e fammi sapere se hai bisogno di aiuto.
Ciao.
Intanto grazie per la risposta.
La piedinatura suggerita e che ho utilizzato e' questa
----------------------------------------------------------------------------- Nicola Coppola
- Pin layout should be as follows:
- Signal Pin Pin Pin
- Arduino Uno Arduino Mega MFRC522 board
-
- Reset 9 5 RST
- SPI SS 10 53 SDA
- SPI MOSI 11 52 MOSI
- SPI MISO 12 51 MISO
- SPI SCK 13 50 SCK
Io ho un Arduino Uno, quindi coincide con quella da te suggerita.
Rimane l'ipotesi scheda rotta!
Ciao
Michele
alleghi anche lo scketh? semmai l'errore è software, ed una foto per eventuali errori di collegamento??
hai controllato l'alimentazione a 3,3 volt? Hai collegato il gnd?
Aspetto tue notizie.
Ciao