RFID Programm ohne PC nutzen

Hallo,
Ich habe mir gestern mit einem RFID Scanner und einem Servo so eine Art Schloss gebaut.
Sobald der richtige Chip erkannt wird dreht sich der Servo.
Ich habe mir jetzt einen Script gesucht der den Servo erst wieder zurückdreht sobald ich den RFID Chip ein zweites mal Scanne.
Mit dem PC funktioniert das auch Super! Mein Problem ist eher das ich das gerne ohne PC an eine Stromquelle anschließen möchte und sich da der Servo immer nach ca. 1er Sekunde zurück-dreht.
Ich hoffe jemand hat Ideen wie ich das Problem lösen könnte!
Mein Code:

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

#define SS_PIN 10
#define RST_PIN 9
#define SERVO_PIN 3

Servo myservo;
#define ACCESS_DELAY 2000
#define DENIED_DELAY 1000

MFRC522 mfrc522(SS_PIN, RST_PIN);

bool cardScannedOnce = false;

void setup()
{
  Serial.begin(9600);
  SPI.begin();
  mfrc522.PCD_Init();
  myservo.attach(SERVO_PIN);
  myservo.write(100);
  Serial.println("Put your card to the reader...");
  Serial.println();
}

void loop()
{
  if (!mfrc522.PICC_IsNewCardPresent())
  {
    return;
  }

  if (!mfrc522.PICC_ReadCardSerial())
  {
    return;
  }

  Serial.print("UID tag :");

  String content = "";
  byte letter;
  for (byte i = 0; i < mfrc522.uid.size; i++)
  {
    Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
    Serial.print(mfrc522.uid.uidByte[i], HEX);
    content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
    content.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  Serial.println();
  Serial.print("Message : ");
  content.toUpperCase();

  if (content.substring(1) == "5F E9 D4 1E" || content.substring(1) == "AA BB CC DD")
  {
    Serial.println("Authorized access");
    Serial.println();

    if (cardScannedOnce)
    {
      myservo.write(0); // Go back to initial position only if the card is scanned a second time
      delay(1000);
      cardScannedOnce = false; // Reset the state
    }
    else
    {
      myservo.write(100);
      delay(1000);
      cardScannedOnce = true; // Set the state to indicate the card has been scanned once
    }
  }
  else
  {
    Serial.println("Access denied");
    delay(DENIED_DELAY);
  }
}

Danke!

EDIT: habs jetzt mal über ein Netzteil angeschlossen (vorher war es eine Batterie) und da hat es ein paar mal gar nicht funktioniert aber ich habe das Problem mit dem zurückdrehen nicht mehr.

Kannst du denn auch beschreiben, welches Problem du lösen möchtest ?

Ohne PC kannst du dein Projekt ja mit einem 5 Volt Netzteil (evtl. USB-Netzteil) betreiben.

Sobald der richtige RFID Tag erkannt wird dreht sich der Servo um 90°. Laut Programm sollte er sich erst nach dem zweiten Scannen wieder zurückdrehen. Am PC funktioniert das auch aber sobald ich eine 9V Batterie nutze dreht er sich nach ca. 1 Sekunde automatisch zurück.

Da vermute ich, es sind Spannungs- Stromprobleme mit der Batterie.

Ganz komisch. Gerade hat der Servo einfach komplett verrückt gespielt. Wahrscheinlich hast du recht.
Hatte aber mit einem Netzteil aber auch das Problem das der RFID Scanner ab und zu gar nichts macht.

Wackelkontakt im Steckbrett ist da sehr oft die Ursache.

Ok danke.
Falls ich vorhabe das fix irgendwo zu Installieren gibt es da eine schönere Methode als diese ganzen Kabelstränge?
Beim Arduino kann man ja nichts löten.

Du kannst den Arduino mit Buchsenleisten auf eine Lochrasterplatine setzen. Dann kannst du den steckbar ausführen. Allerdings ist es mit einem Uno etwas fummelig, geht aber mit Geduld auch.
Oder du verwendest eine echten Nano, der ist besser zum Stecken geeignet.

Aber Schrauben :wink:
image
Du hast ja nicht Verraten was für Arduino hast, das teil ist für UNO R3

Genau sowas habe ich gesucht.
Wo kauf ich denn das am besten?

Du suchtest doch eine schönere Methode. :wink:

Sowas hält jedenfalls mal besser als nur stecken.
Schöner ist es aber leider auch nicht.

Stimmt....es ist praktisch und wohl auch sicher.
Ich stehe da mehr auf "löten", also entsprechend meinem Vorschlag.

Aber das funktioniert ja mit dem Arduino nicht ganz so gut/einfach.

Mich wundert es aber am meisten wie die Leute z.B. hier:


diese ganzen Kabel und alles reinbekommen

Wen die Frage zu mir war dann zB. hier, es gibt sehr viele Händler was das haben, suchen :wink:

Es gibt ja immer Alternativen.

was denn z.B.?

Die Kiste ist doch ziemlich groß, alles dahinter :wink:
Man muss schon selber nachdenken "wie baue ich das", oder jemanden suchen was gibt Rat oder eventuell macht das.

  1. eine 9V Batterie kann nicht den Strom aufbringen, den der Servo bein Drehen verbraucht. rechne mal mit 0,5A Strombedarf des Servos.
  2. Der Spannungsstabilisator auf dem Arduino kann keine 0,5A geben.

Da mußt Du schon 3 1,5 Alkalibatterien nehmen.

Andererseits ist die ganze Schaltung wenig Stromsparend. Sowohl der Arduino als auch der Servo und der RFID Leser verbrauchen kräftig Strom. Batterien sind da nach einigen Stunden bis Tagen leer.

Du brauchst

  • einen Arduino den man in Stromsparschlaf schcken kann und wenig sonstiges auf der Platine hat wie der MINI oder PRO MINI.
  • Eine RFID Reader den man in Stromsparmodus schicken kann
  • einen Motor mit Endschaltern der nur Strom verbraucht wenn er sich drehen muß.

Selbst Ikea hat sowas:

Statt 2 Steckleitenplatinen würde ich der Stabilität wegen eine Platine verwenden:

Unbenannt

Und noch besser für den MINI bzw eventuell NANO:

Grüße Uwe

1 Like

https://www.amazon.de/dp/B08F2TGX2V

Nicht preiswert, aber die einfachste Methode die Schaltung zu löten. Grund : Die Platine ist 1:1 den Steckboard nachgebaut. Weshalb du auch "Hühnerfutter" wie Widerstände etc. die in dein Steckboard sind, da drauf packen kannst.

Hab für die Platine lange gesucht bis ich die gefunden habe.

Gruß

Pucki