Hallo!
Ich verwende die "RFID Library for MFRC522" von miguelbalboa für ein Projekt mit dem Arduino Uno.
Es handelt sich um Bedieneinheiten für eine Alarmanlage Marke Eigenbau auf fhem-Basis.
Zwei der Einheiten sind in einem geschlossenen Gehäuse mit kurzen Anschlusskabeln von ca. 15 cm bis zum RFID-Reader. Hier funktioniert alles ohne Probleme.
Bei der dritten Einheit musste ich den RFID-Reader in einem separaten Gehäuse unterbringen. Hier ist der Leitungsweg ca. 1,5 Meter bis zum Arduino. Zuerst mit einzelnen Adern ca. 0,5 mm², jetzt mit einem CAT.6 LAN-Kabel verbunden.
Es tritt folgendes Problem auf:
Wenn der Reader für länger als einen Tag nicht benutzt wird, werden keine RFID-Tags mehr erkannt.
Zumindest habe ich den Eindruck, dass es damit zusammenhängt. Im Abstand von mehreren Stunden lässt sich der Reader verwenden, aber wenn man über einen Tag lang abwartet, dann passiert gar nicht mehr, wenn man einen RFID-Tag vor den Leser hält.
Hier mal der relevante Teil aus meinem Programm:
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);
int var_aktiv = 1;
int taster_extern = 14;
void setup() {
SPI.begin();
mfrc522.PCD_Init();
}
void loop() {
if (var_aktiv == 1 && digitalRead(taster_extern) == 0)
{
while (timeElapsed <= 5000)
{
if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial() && (RFID_check() == 1))
{
---XYZ---
break;
}
}
mfrc522.PICC_HaltA();
}
}
In der Datei "MFRC522.h" habe ich versucht, die Geschwindigkeit auf dem Bus zu reduzieren:
#define MFRC522_SPICLOCK SPI_CLOCK_DIV16
Hat jemand eine Idee, wie ich das Programm robuster gestalten kann?
Den Kabelweg von 1,5 Metern kann ich eigentlich nicht verkürzen. Oder führt kein Weg daran vorbei?
Gruß
Björn