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.
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.
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.
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.
Die Kiste ist doch ziemlich groß, alles dahinter
Man muss schon selber nachdenken "wie baue ich das", oder jemanden suchen was gibt Rat oder eventuell macht das.
eine 9V Batterie kann nicht den Strom aufbringen, den der Servo bein Drehen verbraucht. rechne mal mit 0,5A Strombedarf des Servos.
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:
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.