RFID Türschloss - Problem mit Scanner selbst? [GELÖST]

Hallo liebes Forum,

ich versuche gerade mittels einem Arduino Uno Nachbau ein RFID-Schloss nach einem Tutorial nachzubauen. Der RFID Scanner möchte meine Tags jedoch nicht scannen. Ich habe das Projekt mehrmals umgebaut, allerdings ist der Scanner dabei überhaupt nicht mehr angesprungen. Ich habe die Einzelteile kontrolliert und sie müssten funktionieren, nur bei dem Scanner weiß ich es nicht. Nun bin ich wieder beim Ausgangsprojekt (welches ich nach dem Tutorial gebaut habe) und komme nicht weiter, das Lämpchen leuchtet nur noch aber die Tags werden im “Seriellen Monitor” nicht gescannt. Ich habe noch nicht so viel Erfahrung mit dem Arduino, kann mir jemand helfen?

Hier ist der Code, den ich folge:

#include <SPI.h> 
#include <RFID.h>
#include <Servo.h> 

RFID rfid(10, 9);       //D10:pin of tag reader SDA. D9:pin of tag reader RST 
unsigned char status; 
unsigned char str[MAX_LEN]; //MAX_LEN is 16: size of the array 

String accessGranted [2] = {"310988016", "19612012715"};  //RFID serial numbers to grant access to
int accessGrantedSize = 2;                                //The number of serial numbers

Servo lockServo;                //Servo for locking mechanism
int lockPos = 15;               //Locked position limit
int unlockPos = 75;             //Unlocked position limit
boolean locked = true;

int redLEDPin = 5;
int greenLEDPin = 6;

void setup() 
{ 
  Serial.begin(9600);     //Serial monitor is only required to get tag ID numbers and for troubleshooting
  SPI.begin();            //Start SPI communication with reader
  rfid.init();            //initialization 
  pinMode(redLEDPin, OUTPUT);     //LED startup sequence
  pinMode(greenLEDPin, OUTPUT);
  digitalWrite(redLEDPin, HIGH);
  delay(200);
  digitalWrite(greenLEDPin, HIGH);
  delay(200);
  digitalWrite(redLEDPin, LOW);
  delay(200);
  digitalWrite(greenLEDPin, LOW);
  lockServo.attach(3);
  lockServo.write(lockPos);         //Move servo into locked position
  Serial.println("Place card/tag near reader...");
} 

void loop() 
{ 
  if (rfid.findCard(PICC_REQIDL, str) == MI_OK)   //Wait for a tag to be placed near the reader
  { 
    Serial.println("Card found"); 
    String temp = "";                             //Temporary variable to store the read RFID number
    if (rfid.anticoll(str) == MI_OK)              //Anti-collision detection, read tag serial number 
    { 
      Serial.print("The card's ID number is : "); 
      for (int i = 0; i < 4; i++)                 //Record and display the tag serial number 
      { 
        temp = temp + (0x0F & (str[i] >> 4)); 
        temp = temp + (0x0F & str[i]); 
      } 
      Serial.println (temp);
      checkAccess (temp);     //Check if the identified tag is an allowed to open tag
    } 
    rfid.selectTag(str); //Lock card to prevent a redundant read, removing the line will make the sketch read cards continually
  }
  rfid.halt();
}

void checkAccess (String temp)    //Function to check if an identified tag is registered to allow access
{
  boolean granted = false;
  for (int i=0; i <= (accessGrantedSize-1); i++)    //Runs through all tag ID numbers registered in the array
  {
    if(accessGranted[i] == temp)            //If a tag is found then open/close the lock
    {
      Serial.println ("Access Granted");
      granted = true;
      if (locked == true)         //If the lock is closed then open it
      {
          lockServo.write(unlockPos);
          locked = false;
      }
      else if (locked == false)   //If the lock is open then close it
      {
          lockServo.write(lockPos);
          locked = true;
      }
      digitalWrite(greenLEDPin, HIGH);    //Green LED sequence
      delay(200);
      digitalWrite(greenLEDPin, LOW);
      delay(200);
      digitalWrite(greenLEDPin, HIGH);
      delay(200);
      digitalWrite(greenLEDPin, LOW);
      delay(200);
    }
  }
  if (granted == false)     //If the tag is not found
  {
    Serial.println ("Access Denied");
    digitalWrite(redLEDPin, HIGH);      //Red LED sequence
    delay(200);
    digitalWrite(redLEDPin, LOW);
    delay(200);
    digitalWrite(redLEDPin, HIGH);
    delay(200);
    digitalWrite(redLEDPin, LOW);
    delay(200);
  }
}

Liebe Grüße

Dann poste uns doch mal einen Link zu deinem Reader.

Warum testest du den nicht erst mal mit einem Beispielsketch ?
Das macht doch vieles einfacher .

Hier ist das Schema (ich benutze nur ein kleineres Breadboard).

Hier das Tutorial:

Meinst du ein Beispielsketch NUR für den Scanner?

Ich meine, welchen RFID-Reader du verwendest und davon einen Link.
Und aus der zugehörigen Library einen Beispielsketch verwenden.

Dann sieht man schon ob da was funktioniert und man hat etwas gelernt.

wasserhans:
Hier ist der Code, den ich folge:

String accessGranted [2] = {"310988016", "19612012715"};  //RFID serial numbers to grant access to

Ich hab Deinen Code noch nicht durch; Mein RFID ist momentan auch auf einem anderen Aufbau..

Aber sind die Nummern Deine?

Ich verwende den Arduino Uno CH340

Hier ist zumindest eine der sehr weniger deutschen Beschreibungen dazu:
https://www.ebay.de/itm/Arduino-UNO-komp-Board-ATmega328-CH340-Hochwertig/283648092280?hash=item420abe6878:g:f4UAAOSwfkpdy9jM

Also der Arduino selbst sollte eigentlich funktionieren. Es gab nur anfangs ein kleines Problem, dass von Haus aus keine Treiber funktioniert haben, man musste extern einen chinesischen Treiber installieren, damit IDE darauf zugreifen kann.

Sorry, aber liest du auch, was ich schreibe ?
Welchen Arduino du verwendest, wollte ich nicht wissen.
Welchen RFID-Reader du verwendest, hatte ich gefragt.

my_xy_projekt:
Ich hab Deinen Code noch nicht durch; Mein RFID ist momentan auch auf einem anderen Aufbau…

Aber sind die Nummern Deine?

Nein, diese Nummern werden nach dem Scannen der mitgelieferten Tags durch den Serial Monitor ersetzt. Bloß ich komme nicht dazu sie zu scannen.

Ich verwende den RFID rc522

Das Problem könnte an der verwendeten Library liegen.

Versucher einfach mal dieses Beispiel mit der zugehörigen Library.

Vielen Dank, ich habe es dort mit der anderen Library ausprobiert. Der Serial Monitor bleibt leer.

Ich habe übrigens im IDE versucht mit dem Board zu kommunizieren. Der Port usw. wird angezeigt. Aber der Rest ist mit sehr schleierhaft. z.B. Sagt er, dass er keine Verbindung habe wenn ich auf den Firmware Updater gehe und wenn ich auf "Boardinformation einhole" klicke, erscheint das hier:

BN: Unbekanntes Board
VID: 1A86
PID: 7523
SN: Laden Sie irgendeinen Sketch hoch, um sie abzurufen

Da dein Uno ein Clone mit einem CH340-Chip ist, wir da auch nix angezeigt.
Hast du denn mal einen einfachen “Blinksketch” hochgeladen ?
Funktioniert das und blinkt er richtig ?

Ja, ich habe mehrere Testsketches hochgeladen und zusätzlich die LEDs ohne Breadboard am Arduino getestet. Es funktioniert und blinkt

Und das Beispiel was ich dir verlinkt habe, funktioniert nicht ?
Das kann ich mir fast nicht vorstellen. Es sei denn die Hardware ist defekt.

Du schreibst, der Monitor bleibt leer ?
Hast du denn auch die richtige Baudzahl eingestellt ?

Das funktioniert leider nicht. Alles so eingegeben, die neue Library integriert und der Serial Monitor bleibt leer. (Die LED am Scanner leuchtet allerdings).

Und du hast alles richtig angeschlossen ?
Kannst du bitte mal ein Foto von deinem Aufbau posten, bei dem alles inkl. Kabel gut zu sehen ist.

Ja klar, hier sind die Bilder. Ich habe den Scanner noch nicht drangelötet (genau aus der Sorge, falls damit etwas sein sollte, dass ich den ersetzen kann), er hat aber trotzdem Kontakt, leuchtet und wird festgehalten.

wasserhans:
Ja klar, hier sind die Bilder. Ich habe den Scanner noch nicht drangelötet (genau aus der Sorge, falls damit etwas sein sollte, dass ich den ersetzen kann), er hat aber trotzdem Kontakt, leuchtet und wird festgehalten.

Genau das wird dein Problem sein.

Wenn nicht gelötet, dann auch kein Kontakt !

Solche Fehler hatten wir hier schon öfter. Anlöten und gut ists.....

Okay, ich werde es nach dem Löten noch mal probieren und sagen, ob es funktioniert hat

Vielen Dank! Das Löten hat das Problem tatsächlich gelöst! Ich dachte, es müsste auch testweise so klappen, wenn der Scanner genug Kontakt hat.

Nachdem ich jetzt meinen Ursprungscode eingegeben habe funktioniert das Scannen einwandfrei und ich habe bereits die Nummern der Karten auslesen können. Allerdings habe ich jetzt wieder ein kleines Problem, dass meine LEDs nicht leuchten (vorher getestet und alles funktioniert).