ich habe eine Türöffneranlage gebaut mit ein (RFID) das ist das Code welchen ich bei meinem
#include <SPI.h> // SPI-Bibliothek einbinden
#include <MFRC522.h> // RFID-Bibliothek einbinden
#define SS_PIN 10 // Konfigurierbarer Pin (SDA am Modul)
#define RST_PIN 9 // Konfigurierbarer Pin
#define relaypin 2 // Pin der LED deklarieren
MFRC522 mfrc522(SS_PIN, RST_PIN); // MFRC522 Instanz starten
void setup()
{
Serial.begin(9600); // Serielle Verbindung initalisieren
SPI.begin();
mfrc522.PCD_Init();
pinMode (relaypin, OUTPUT); // digitaler Pin der Led wird als Output deklariert
}
void loop()
{
if ( ! mfrc522.PICC_IsNewCardPresent()) // Suche nach neuer Karte...
{
return; // Gehe weiter...
}
if ( ! mfrc522.PICC_ReadCardSerial()) // Wähle RFID-Transponder
{
return; // Gehe weiter...
}
Serial.print("Die UID des RFID-TAGS lautet:"); // Schreibe auf den seriellen Monitor
// Auslesen der UID
String rfid = "";
for (byte i = 0; i < mfrc522.uid.size; i++) {
rfid += mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ";
rfid += String(mfrc522.uid.uidByte[i], HEX);
}
rfid.trim(); // entfernt Leerzeichen vor und nach der UID
rfid.toUpperCase(); // Großschreibung der UID
{
Serial.print(rfid); // Zeige UID des RFID-Tags im Seriellen Monitor
Serial.println(); // Zeilenumbruch
}
if (rfid == "05 C0 6D 9B") // Wenn die richtige Karte erkannt wurde...
{
digitalWrite (relaypin, LOW); // ...dann soll die LED leuchten...
delay (5000); // 5 Sekunden Verzögerung
digitalWrite (relaypin, HIGH); // … und wieder ausgehen.
}
}
Setze mein Problem Falls ich den Chip davor halte die Tür auf aber nur einmal danach geht es nicht mehr! Danach muss ich es neu starten dann geht es wieder einmal
Den Öffner benutze ich: Elektrischer Türöffner PESO 300 a 6-12 Volt mit Schließblech 110x25 und Entriegelungshebel
Den Relay benutze ich: 1-Kanal-Relais-Modul, 5V Relay-Module mit Status-LEDs für Arduino, Genuino
Ich habe bisher zwar noch nicht mit dem RFID gearbeitet, aber die ersten beiden if-Abfragen würde ich testweise entfernen.
Die haben im Normalfall in der Loop eigentlich nichts zu suchen.
Kann das sein die Relay-Module kaputt ist warum es nicht geht?
Ohne Strom geht alles nur wenn ich auf das Teil Strom drauf mache geht es nur einmal??
Ahh...ok, dann ist das Problem ein anderes.
Was für ein Relais-Modul verwendest du ?
Bitte einen Link posten.
Hyperlink keine URL.
Hast du den Türöffner schon dran ?
Du bekommst vermutlich dadurch Störungen wenn der öffnet.
Schließe mal eine Freilaufdiode parallel zum Türöffner.
Aber nur wenn du Gleichspannung verwendest.
Was mir auffällt: Fast immer sind die Relais-Module "active low", das bedeutet, das Relais schaltet wenn der Steuerpin auf LOW geht.
In deinem Code ist das zwar im letzten Teil realisiert, aber der Relaispin ist ja schon die ganze Zeit LOW - seit Setup ausgeführt wurde.
Ich würde Setup mal ändern in:
void setup() {
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
digitalWrite (relaypin, HIGH); // diese Zeile ist neu
pinMode (relaypin, OUTPUT);
}
Damit ist der Relays-Pin HIGH und das Relais schaltet erst wenn die Bedingung "Richtige Karte" erfüllt ist.
Ich hab zwar schon öfter mit RFIDs gearbeitet, aber immer mit einer anderen Library, nämlich der von Adafruit (Beispiele hier: Overview | Adafruit PN532 RFID/NFC Breakout and Shield | Adafruit Learning System ).
Und die Beispiele haben immer problemlos funktioniert. Aber möglicherweise verwendest du eine andere Hardware (MFRC522 statt 532).
manuel20134:
Was meintest du damit: Dann setzt du in der if-Abfrage ein oder "||" ein.
Es ist jetzt wirklich an der Zeit, dass du dir die Grundlagen ansiehst.
Das kann man alles sehr schön nachlesen.
In den Beispielen der IDE oder im Web.
Einfach mal googeln.