Beschreiben der RFID Karten

Hallo Zusammen,

ich habe meinen ersten Tonuino fertig. Danke noch mal an Thorsten und die tolle Community die es mir sehr einfach gemacht hat das Projekt nachzubauen.

Jetzt habe ich zur Zeit meine RFID Karten auf Einzel-Lieder programmiert.

Das ist mit mehr als 10 Karten dann doch sehr viel Tastendrückerei um die Karten zu beschreiben. Jetzt habe ich im Monitor gesehen, was so auf der Karte draufsteht und das ist ja nicht viel.

Könnte man diese Bytes nicht auch mit einem NFC fähigem Handy schreiben?
Ich habe auf Android das Tool NFC-Tools Pro installiert. Damit kann ich auch die Daten auslesen, aber ich hab noch nicht kapiert wie ich damit schreiben kann.

Kennt da jemand was?
Oder gibt es noch andere Alternativen?

Gruß
Dennis

Ich werde im Adminmenü einen Punkt einbauen um Karten für einen Ordner (und da eine Auswahl der Dateien von bis) zu beschreiben… du musst die dann also nur der Reihenfolge nach drauf legen :smiley:

Klingt gut :slight_smile:
Das teste ich dann gleich mal wenn es draussen ist.

Vielen Dank

du darfst :wink:

im DEV Branch auf Github.

Du brauchst da auch die neuen MP3-Files auf der SD-Karte (/mp3/)

Im Admin-Menü (alle drei Buttons gedrückt halten) ganz ans Ende gehen… dann Ordner auswählen und dann Von- und Bis- Datei…

Feedback erwünscht :wink:

@DennisF

Ich nutze auch größtenteils den Einzelmodus und habe bereits zwei TonUINOs und mache daher auch zwei Karten-Sets. Ich habe nun versucht das ganze per “PC” zu machen. Im moment bin ich soweit dass ich mit einem Rapsberry Pi die Karten beschreiben kann. Diese werden dann auch korrekt beschrieben und können dann vom TonUINO gelesen werden. Falls du daran interesse hast:
#Inbetriebnahme von RC522 am PI

#im Write.py folgendes anpassen

        # Erweiterung TonUINO
        modus = int(input("Modus: 1. Hörspielmodus 2. Album Modus 3. Party Modus 4. Einzel Modus 5. Hörbuch Modus"))            ordner = int(input("Ordner?"))
        lied = int(input("Lied Nummer?"))
        # Variable for the data to write
        data = [19, 55, 179, 71, 1, (ordner), (modus), (lied), 0, 0, 0, 0, 0, 0, 0, 0]

        # Fill the data with 0xFF
        #for x in range(0,16):
        #    data.append(0xFF)

        print "Sector 8 looked like this:"
        # Read block 8
        MIFAREReader.MFRC522_Read(4)
        print "\n"

        #print "Sector 8 will now be filled with 0xFF:"
        # Write the data
        MIFAREReader.MFRC522_Write(4, data)
        #print "\n"

        print "It now looks like this:"
        # Check to see if it was written
        MIFAREReader.MFRC522_Read(4)
        print "\n" 

Bitte nur als ersten Entwurf verstehen.

@Thorsten
beim auslesen der Karten ist im Sektor 4 folgendes durch den TonUNIO geschrieben:
19, 55, 179, 71, 1, 7, 4, 5,

die letzten drei Bereiche (7,4,5) habe ich verstanden aber was ist das davor? Der Teil ist bei allen Karten gleich.

Wir schrieben in Sektor 1 Block 4. Nicht Sektor 4. Die ersten 4 Byte sind ein Cookie um die Karten wieder zu erkennen. Byte 5 ist eine Versionsnummer (aktuell immer 0x01). Danach kommen die von Dir bereits genannten 3 Byte. In der zukünftigen Firmware auch noch ein paar mehr.

Danke für die schnelle Antwort:
Aber bei meiner Untersuchung kam heraus, dass die ersten 5 Bereiche statisch sind. Dies passt ja auch zu deiner Aussage. Aber dann kommt 6: Ordner 7:Modus 8:Tracknummer (nur bei Einzelmodus und der Wert ist 7 falls es nicht Einzelmodus ist)
Kannst du dies so bestätigen?

P.S. ich bin kein Programmierer, ich mach es nach Try & Error. Bitte also um Nachsicht für Fehler.

Also, Aktuell ist das so (jetzt nochmal richtig, die Grafik eben war verkehrt):

13 37 B3 47 01 02 05 02 00 00 00 00 00 00 00 00
----------- -- -- -- --
     |      |  |  |  |
     |      |  |  |  +track (0x01-0xFF), nur für den Einzelmodus
     |      |  |  +assigned mode (0x01-0x05), der Wiedergabemodus
     |      |  +assigned folder (0x01-0x63), der zugewiesene Ordner
     |      +version, momentan immer 0x01
     +magic cookie, damit TonUINO die Karten wiedererkennt

Byte 8 (also der Track) sollte nur einen Wert haben wenn Byte 7 (Modus) gleich 0x04 (Einzelmodus) ist. Wenn ein anderer Modus gesetzt ist, sollte dort 0x00 stehen. Bei meiner Firmware ist das so. Da Thorsten die Karten aber nicht löscht beim neubeschreiben, kann es sein, dass dort was über bleibt. Das ist unschön, schadet aber theoretisch nicht, weil es nicht ausgewertet werden sollte.
In der neuen Firmware wird da noch was dabei kommen, für die Spezial Modi etc.

1 Like

nach Track kommt ggf. noch der Track2 (für den “von-bis”-Modus)

Okay Thorsten, danke für die Info. Sobald ich die neue Version im Einsatz habe (mach ich die nächsten Tage) passe ich es im Skript an. Das Skript ist soweit Einsatz fähig. Download unter:

Wenn ich dir noch einen Tip geben darf: Dein Script hat als Ausgabe überall Sektor 8. Das ist verkehrt und führt bei Nutzern zu Verwirrung. Wir schreiben in Sektor 1 / Block 4.

geändert soweit möglich. der Text “Sector 4 [19, 55, 179, 71, 1, 1, 5, 7, 0, 0, 0, 0, 0, 0, 0, 0]” stammt vom RC522 Modul.
Gerne mehr Tips :slight_smile:

Guten Abend zusammen,
ich habe bei dieser Diskussion ein Problem mit den Sector und Block Numerierung. Ich habe auf meinem Handy mal das Tool „MIFARE Classic Tool“ installiert und eine leere und eine beschriebene Karte ausgelesen. Wenn ich die Karte beschreibe, muss ich in Sector 1 / Block 0 schreiben. Dann liest
die Software das auch richtig. Verstehe ich da was falsch oder verwende ich eine andere Software?

Karte beschrieben

Karte leer

In den Sectoren werden die Blöcke mit 0-3 bezeichnet (jeweils 16 Byte).

So sieht eine beschriebene Karte aus. Edit: Die Angaben zu der Nummerierung hat stephan unten geschrieben. Sektor 1 Block 0 ist richtig.

Such doch mal nach „Android App“, da findest du eine extra für den TonUINO erstellte App. Der Thread ist auch aktueller als 1 Jahr :wink:

Deine Software nummeriert die Blöcke innerhalb der Sektoren immer neu. 0|0123, 1|0123, 2|0123 etc. Die Angabe Sektor 1 / Block 4 bezieht auf den Dump Info Sketch der RFID Library. Also auf den absoluten Block (die zählt die Blöcke einfach stur hoch). In deiner Rechnung also Sektor 1 / Block 0.

image

Alles in allem ist Sektor 1 Block 0 eigentlich auch logischer. Aber nun…

@nanos und @stephan: vielen Dank für eure schnelle Antwort. Jetzt ist mir das mit den Nummern klar. Liegt also wie so oft an der Software. Gibt es da keine Norm drüber? Bei uns ist doch sonst fast alles „genormt“ :wink:
Die Software für das Handy ist übrigens prima. Vielen Dank an den Ersteller.
Noch eine Frage zu den Karten. Ich habe eine Karte, bei der dreht sich der Arduino wohl im Kreis. Beim Auflegen blinken alle LEDs. Wenn ich sie an das Handy halte, erhalte ich vom TonUINO Tool die Meldung: Konnte keine Daten vom NFC Tag lesen.
Das MIFARE Tool zeigt mir aber gültige Daten an. Kann ich die Karte noch irgendwie retten oder besser wegschmeißen?

Musst du halt mal in die Konsole schauen…

In der Konsole wurde immer nur folgendes ausgegeben:
Card UID: EC 50 A2 54
PICC type: MIFARE 1KB
Authenticating Classic using key A…
PCD_Authenticate() failed: Timeout in communication.

Habe jetzt folgendes gemacht:

  1. mit MIFARE von einer korrekten Karte einen kompetten Dump gezogen
  2. diesen Dump komplett auf die defekte Karte geschrieben
  3. jetzt funktioniert die Karte wieder.

Wenn also jemand mal eine defekte Karte hat, wäre das vielleicht eine Hilfe.