RFID: UIDs sind identisch -- kein Unterscheidungsmerkmal?

Hallo.
Ich mache einen neuen Thread auf, damit es nicht zu unübersichtlich wird.

ich habe ein RFID-Tag mit einem Text beschrieben und konnte es auch bereits erfolgreich wieder auslesen.
Dazu habe ich dieses Shield
https://aptofun.de/NFC_Shield_V2.0
und diesen Code verwendet:

Nun stelle ich fest, dass die Zeile

NfcTag tag = nfc.read();
    Serial.println(tag.getTagType());
    Serial.print("UID: ");Serial.println(tag.getUidString());

immer die gleiche UID ausspuckt -- egal, welches Tag ich auslese. Ich habe zu Testzwecken drei Tags mit unterschiedlichen Texten beschrieben.

Bisher dachte ich, dass die UID hardwareseitig eindeutig ist?! Oder ist es lediglich so, dass damit nur eine Sorte (von einem Hersteller) eindeutig identifiziert werden kann?

So kann ich die UID jedenfalls nicht verwenden, um die einzelnen Tags auseinander zu halten.
Ideen? Danke.

whiterabbit07:
ich habe ein RFID-Tag mit einem Text beschrieben und konnte es auch bereits erfolgreich wieder auslesen.
Nun stelle ich fest, dass

immer die gleiche UID ausspuckt

Na wo hast Du denn die Tags her? Das wichtigste verschweigst Du...

Aber mal als Anstoss:
https://www.amazon.de/dp/B07DX2Y2KV

Ach so -- es sind diese Aufkleber (natürlich ebenfalls 13,56 MHz)
http://www.blockard.com/nfc

Auch das Smartphone (App "NFC Tools) liefert überall eine identische UID (auch bei leeren, noch gar nicht verwendeten RFID-Tags ... scheint also herstellungsbedingt zu sein?! :confused:

whiterabbit07:
Ach so -- es sind diese Aufkleber (natürlich ebenfalls 13,56 MHz)

Ah ja - und was sagt der Verkäufer? Immerhin schreibt er von garantierter Antwortzeit innerhalb 12 Stunden...
Aber mal aus dem Klicken rausgeholt:
Also die: https://www.amazon.de/dp/B06XH2R5ZP
Dann lies:
GitHub - miguelbalboa/rfid: Arduino RFID Library for MFRC522
und schau in die examples. Da gibt es das, was Du vermutlich verwenden kannst...

es gibt tags bei denen man die UID ändern kann.
Vermutlich hast du solche.

Vieleicht ist das nun auch die Anregung, dass du dich eben NICHT auf die UID verlässt, sondern deine Tags selber mit etwas beschreibst wovon du weist, was was ist...

noiasca:
es gibt tags bei denen man die UID ändern kann.
Vermutlich hast du solche.

Kann sein -- der Verkäufer hat sich tatsächlich prompt gemeldet und versprochen, dass das Problem gelöst wird. Vorbildlich bisher!

[etwas später]

Ok, ich hab's hinbekommen ... die UIDs werden nun doch voneinander unterscheidbar eingelesen.
Ich kann die UIDs nun auch direkt als String verwenden und vergleichen:

String uidAsString = tag.getUidString();

Aber das nächste Problem lässt ja nicht lange auf sich warten: Wie kann ich es nun hinbekommen, dass das loop erst dann neu loslegt, wenn sich die alte UID von der neu eingescannten unterscheidet?

Der loop sollte immer durchlaufen. Du kannst doch eine Aktion starten, wenn die Werte unterschiedlich sind.

Gruß Tommy

noiasca:
das hatten wir die letzten 60 Tage schon mal. Such ein wenig retour mir RC522 in diesem Forum...

das hier sieht mir nach der gleichen Frage aus ... ist aber deutlich älter als 60 Tage.
https://forum.arduino.cc/?topic=526638#msg3595969

Tommy56:
Der loop sollte immer durchlaufen. Du kannst doch eine Aktion starten, wenn die Werte unterschiedlich sind.

Ja -- wenn ich das richtig sehe, müsste dazu der erste Vorgang (Lesen von Tag 1) gespeichert werden; dann muss das nächste Tag gelesen und die UIDs verglichen werden. Aber dann darf ja der neue Speichervorgang erst dann angestoßen werden, wenn die UIDs unterschiedlich waren.

Ja, wo ist das Problem?

Gruß Tommy

Tommy56:
Ja, wo ist das Problem?

Na ja ... schau mal auf meinen Status -- dann weißt du, wo das Problem ist :confused: (newbie)

Dann musst Du lernen, um aus dem Zustand raus zu kommen. Dir alles vorkauen lassen bringt da nichts.

Gruß Tommy

Tommy56:
Dann musst Du lernen, um aus dem Zustand raus zu kommen.

Gerne -- ich brauche für diesen Fall aber das richtige "Buzzword" oder ein paar Zeilen Code, um zu sehen, wie man den Loop an eine Bedingung knüpft (wenn ich das richtig sehe) ...!?

In Deiner IDE gibt es genügend Beispielcodes, um die Grundlagen zu erlernen.

Gruß Tommy

whiterabbit07:
Gerne -- ich brauche für diesen Fall aber das richtige "Buzzword" oder ein paar Zeilen Code, um zu sehen, wie man den Loop an eine Bedingung knüpft (wenn ich das richtig sehe) ...!?

Nein. Weder das Eine noch das Andere.
Du brauchst einen Stift und einen Zettel.
Schreibe die Aufgabe.

Ich bin Stift, Zettel und Aufschreiber:
start setup
tag="";
ende setup

start loop
lese NFC
ist tag=="" ?
JA -> tag= Inhalt von NFC
NEIN -> nächste Runde
ende loop

Bei der nächsten Runde ist tag aber nicht mehr ""; damit geht der Vergleich nicht mehr.
Das prüfen auf "" ist also Kacke. Ic habe nur den Inhalt von tag und den Inhalt von NFC - also wird das verglichen.
Also neue Variante:

start setup
tag="";
ende setup

start loop
lese NFC
ist tag!==NFC ?
JA -> tag= Inhalt von NFC
NEIN -> nächste Runde
ende loop

So schwer ist das nicht. Dazu braucht es keinen Code und kein Buzzword.
Wobei Bleistift oder Radiergummi evtl. eines ist... :wink:

my_xy_projekt:
start setup
tag="";
ende setup

start loop
lese NFC
ist tag!==NFC ?
JA -> tag= Inhalt von NFC
NEIN -> nächste Runde
ende loop

Danke ... ich versuche es auf diesem Weg!
[etwas später]
Hat funktioniert! Super!

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.