Ciao a tutti,
ho interconnesso al mio Arduino i due moduli in oggetto (lettore RFID e microSD) come da schema. Ho messo in comune i pin SPI (tranne per il reset di cui il modulo microSD è sprovvisto) e ho iniziato la stesura di uno sketch che, concettualmente mi pare corretto, ma ovviamente non funziona (viene caricato ma il sistema non risponde come dovrebbe).
In pratica volevo che, avvicinando una qualsiasi chiave RFID venga verificata la presenza o meno della scheda microsd.
#include <SPI.h>
#include <MFRC522.h>
#define CS_RFIDREADER 9
#define RST_PIN 99
MFRC522 rfid(CS_RFIDREADER, RST_PIN);
MFRC522::MIFARE_Key key;
byte nuidPICC[4];
#include <SD.h>
Sd2Card card;
SdVolume volume;
SdFile root;
const int CS_SDREADER = 10;
void setup() {
Serial.begin(9600);
delay(1000);
pinMode(CS_SDREADER, OUTPUT);
digitalWrite(CS_SDREADER, HIGH);
pinMode(CS_RFIDREADER, OUTPUT);
digitalWrite(CS_RFIDREADER, HIGH);
rfid.PCD_Init(); // Init MFRC522
}
void loop() {
digitalWrite(CS_SDREADER, HIGH);
digitalWrite(CS_RFIDREADER, LOW);
delay(20);
if (rfid.PICC_IsNewCardPresent()) {
if (rfid.PICC_ReadCardSerial()) {
for (byte i = 0; i < 4; i++) {
nuidPICC[i] = rfid.uid.uidByte[i];
}
printHex(rfid.uid.uidByte, rfid.uid.size);
Serial.println();
rfid.PICC_HaltA();
rfid.PCD_StopCrypto1();
delay(20);
digitalWrite(CS_SDREADER, LOW);
digitalWrite(CS_RFIDREADER, HIGH);
delay(20);
if (card.init(SPI_HALF_SPEED, CS_SDREADER)) {
Serial.println("SD PRESENTE");
} else {
Serial.println("SD NON PRESENTE");
}
digitalWrite(CS_SDREADER, HIGH);
}
}
}
void printHex(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? " 0" : " ");
Serial.print(buffer[i], HEX);
}
}