ciao a tutti,
da pochissimo mi sono lanciato nel mondo di Arduino. Sto provando a costruire un prototipo per un progetto all'uni. Questo prototipo fa uso di un Arduino UNO R3, di un display 20x4, di una scheda Mifare RC522 di lettura per tag Rfid e di due tag classici, la scheda tipo bancomat e il portachiavi.
Ho montato il tutto seguendo lo schema che vi allego, si trova anche sul sito di Fritzing ma l'ho ordinato un pochettino per chiarirmi le idee.
Lo schermo è stato testato con l'esempio "hallo world" e funziona bene;
la scheda penso sia collegata in modo corretto visto che si accende anche un led arancione posto sopra, per sicurezza vi posto comunque una foto della scheda in funzione.
Il mio problema sta nel fatto che quando vado ad avvicinare il portachiavi e la tessera alla scheda Rfid questa sembra che non li rilevi... dovrebbero apparire le letture del codice della scheda ma non appare assolutamente nulla e i led sulla scheda non danno segno di vita....
potete aiutarmi???
Visto che i tag sono passivi (non hanno un'alimentazione proprio) potrebbe essere che le antenne del portachiavi e della scheda bancomat non sono abbastanza eccitate e quindi non hanno abbastanza corrente per tramettere il segnale? Se fosse questo la fonte del problema come potrei risolverlo.
Ringrazio anticipatamente chiunque voglia aiutarmi e scusate eventuali errori di programmazione o di assemblaggio dei componenti ma non sono ne un informatico ne un elettronico purtroppo
Vi allego anche il codice trovato in rete e caricato sulla scheda arduino:
#include <SPI.h>
#include <RFID.h>
#include <LiquidCrystal.h>
#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(20, 4);
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();
}